/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): */ #include "msgCore.h" #include "nsCOMPtr.h" #include "nsMsgBaseCID.h" #include "nsMsgLocalCID.h" #include "nsMsgCompCID.h" #include #ifdef XP_PC #include #endif #include "nsIComponentManager.h" #include "nsMsgCompCID.h" #include "nsIMsgCompose.h" #include "nsIMsgCompFields.h" #include "nsIMsgSend.h" #include "nsIPref.h" #include "nsIServiceManager.h" #include "nscore.h" #include "nsIMsgAccountManager.h" #include "nsINetSupportDialogService.h" #include "nsIComponentManager.h" #include "nsString.h" #include "nsISmtpService.h" #include "nsISmtpUrl.h" #include "nsIUrlListener.h" #include "nsIEventQueueService.h" #include "nsIEventQueue.h" #include "nsIFileLocator.h" #include "nsCRT.h" #include "prmem.h" #include "nsIMsgSendLater.h" #include "nsIWebShellWindow.h" #ifdef XP_PC #define XPCOM_DLL "xpcom32.dll" #define PREF_DLL "xppref32.dll" #define APPSHELL_DLL "appshell.dll" #define MIME_DLL "mime.dll" #else #ifdef XP_MAC #include "nsMacRepository.h" #else #define XPCOM_DLL "libxpcom"MOZ_DLL_SUFFIX #define PREF_DLL "libpref"MOZ_DLL_SUFFIX #define APPSHELL_DLL "libnsappshell"MOZ_DLL_SUFFIX #define MIME_DLL "libmime"MOZ_DLL_SUFFIX #endif #endif ///////////////////////////////////////////////////////////////////////////////// // Define keys for all of the interfaces we are going to require for this test ///////////////////////////////////////////////////////////////////////////////// static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID); static NS_DEFINE_CID(kFileLocatorCID, NS_FILELOCATOR_CID); static NS_DEFINE_CID(kEventQueueCID, NS_EVENTQUEUE_CID); static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); static NS_DEFINE_CID(kNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID); static NS_DEFINE_IID(kIMsgSendLaterIID, NS_IMSGSENDLATER_IID); static NS_DEFINE_CID(kMsgSendLaterCID, NS_MSGSENDLATER_CID); /* * This is a test stub for mail composition. This will be enhanced as the * development continues for message send functions. */ int main(int argc, char *argv[]) { nsresult rv = NS_OK; nsComponentManager::RegisterComponent(kEventQueueServiceCID, NULL, NULL, XPCOM_DLL, PR_FALSE, PR_FALSE); nsComponentManager::RegisterComponent(kEventQueueCID, NULL, NULL, XPCOM_DLL, PR_FALSE, PR_FALSE); nsComponentManager::RegisterComponent(kPrefCID, nsnull, nsnull, PREF_DLL, PR_TRUE, PR_TRUE); nsComponentManager::RegisterComponent(kFileLocatorCID, NULL, NS_FILELOCATOR_PROGID, APPSHELL_DLL, PR_FALSE, PR_FALSE); nsComponentManager::RegisterComponent(kNetSupportDialogCID, NULL, NULL, APPSHELL_DLL, PR_FALSE, PR_FALSE); // Create the Event Queue for this thread... NS_WITH_SERVICE(nsIEventQueueService, pEventQService, kEventQueueServiceCID, &rv); if (NS_FAILED(rv)) { printf("Failed to get event queue\n"); return rv; } rv = pEventQService->CreateThreadEventQueue(); if (NS_FAILED(rv)) { printf("Failed to create event queue\n"); return rv; } // make sure prefs get initialized and loaded.. // mscott - this is just a bad bad bad hack right now until prefs // has the ability to take nsnull as a parameter. Once that happens, // prefs will do the work of figuring out which prefs file to load... NS_WITH_SERVICE(nsIPref, prefs, kPrefCID, &rv); if (NS_FAILED(rv) || (prefs == nsnull)) { exit(rv); } if (NS_FAILED(prefs->ReadUserPrefs())) { printf("Failed on reading user prefs!\n"); exit(-1); } NS_WITH_SERVICE(nsIMsgAccountManager, accountManager, NS_MSGACCOUNTMANAGER_PROGID, &rv); if (NS_FAILED(rv)) { printf("Failure getting Mail Session!\n"); return rv; } nsCOMPtr account; rv = accountManager->GetDefaultAccount(getter_AddRefs(account)); if (NS_FAILED(rv)) return nsnull; nsCOMPtr identities; rv = account->GetIdentities(getter_AddRefs(identities)); nsCOMPtr identity = nsnull; rv = identities->QueryElementAt(0, NS_GET_IID(nsIMsgIdentity), (void **)getter_AddRefs(identity)); if (NS_FAILED(rv)) { printf("Failure getting Identity!\n"); return rv; } nsCOMPtr pMsgSendLater; rv = nsComponentManager::CreateInstance(kMsgSendLaterCID, NULL, kIMsgSendLaterIID, (void **) getter_AddRefs(pMsgSendLater)); if (NS_SUCCEEDED(rv) && pMsgSendLater) { printf("We succesfully obtained a nsIMsgSendLater interface....\n"); pMsgSendLater->SendUnsentMessages(identity, nsnull); } #ifdef XP_PC printf("Sitting in an event processing loop ...Hit Cntl-C to exit..."); while (1) { MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } } #endif return 0; }