nsMessengerUnixIntegration::nsMessengerUnixIntegration() { mBiffStateAtom = MsgGetAtom("BiffState"); mNewMailReceivedAtom = MsgGetAtom("NewMailReceived"); mAlertInProgress = false; mLastMRUTimes.Init(); NS_NewISupportsArray(getter_AddRefs(mFoldersWithNewMail)); }
nsAbView::nsAbView() : mInitialized(false), mSuppressSelectionChange(false), mSuppressCountChange(false), mGeneratedNameFormat(0) { mMailListAtom = MsgGetAtom("MailList"); }
NS_IMETHODIMP nsPop3IncomingServer::SetDeferredToAccount(const nsACString& aAccountKey) { nsCString deferredToAccount; GetDeferredToAccount(deferredToAccount); m_rootMsgFolder = nullptr; // clear this so we'll recalculate it on demand. //Notify listeners who listen to every folder nsresult rv = SetCharValue("deferred_to_account", aAccountKey); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIFolderListener> folderListenerManager = do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv); if (NS_SUCCEEDED(rv)) { nsCOMPtr<nsIMsgFolder> rootFolder; // use GetRootFolder, because that returns the real // root, not the deferred to root. rv = GetRootFolder(getter_AddRefs(rootFolder)); if (rootFolder) { // if isDeferred state has changed, send notification if (aAccountKey.IsEmpty() != deferredToAccount.IsEmpty()) { nsCOMPtr <nsIAtom> deferAtom = MsgGetAtom("isDeferred"); nsCOMPtr <nsIAtom> canFileAtom = MsgGetAtom("CanFileMessages"); folderListenerManager->OnItemBoolPropertyChanged(rootFolder, deferAtom, !deferredToAccount.IsEmpty(), deferredToAccount.IsEmpty()); folderListenerManager->OnItemBoolPropertyChanged(rootFolder, canFileAtom, deferredToAccount.IsEmpty(), !deferredToAccount.IsEmpty()); // this hack causes the account manager ds to send notifications to the // xul content builder that make the changed acct appear or disappear // from the folder pane and related menus. nsCOMPtr<nsIMsgAccountManager> acctMgr = do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID); if (acctMgr) { acctMgr->NotifyServerUnloaded(this); acctMgr->NotifyServerLoaded(this); // check if this newly deferred to account is the local folders account // and needs to have a newly created INBOX. if (!aAccountKey.IsEmpty()) { nsCOMPtr <nsIMsgAccount> account; acctMgr->GetAccount(aAccountKey, getter_AddRefs(account)); if (account) { nsCOMPtr <nsIMsgIncomingServer> server; account->GetIncomingServer(getter_AddRefs(server)); if (server) { nsCOMPtr <nsILocalMailIncomingServer> incomingLocalServer = do_QueryInterface(server); if (incomingLocalServer) { nsCOMPtr <nsIMsgFolder> rootFolder; rv = server->GetRootFolder(getter_AddRefs(rootFolder)); NS_ENSURE_SUCCESS(rv, rv); // this will fail if it already exists, which is fine. rootFolder->CreateSubfolder(NS_LITERAL_STRING("Inbox"), nullptr); } } } } } } } } return rv; }