diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index a332b506e4..bd5e592cc9 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -3205,39 +3205,6 @@ BMessage::SetString(const char* name, const char* value) } -const char* -BMessage::GetString(const char *name, const char *defaultValue) const -{ - return GetString(name, 0, defaultValue); -} - - -const char* -BMessage::GetString(const char *name, int32 index, - const char *defaultValue) const -{ - const char* value; - if (FindString(name, index, &value) == B_OK) - return value; - - return defaultValue; -} - - -status_t -BMessage::SetString(const char *name, const BString& value) -{ - return SetData(name, B_STRING_TYPE, value.String(), value.Length() + 1); -} - - -status_t -BMessage::SetString(const char *name, const char* value) -{ - return SetData(name, B_STRING_TYPE, value, strlen(value) + 1); -} - - status_t BMessage::SetData(const char* name, type_code type, const void* data, ssize_t numBytes) diff --git a/src/kits/mail/MailSettings.cpp b/src/kits/mail/MailSettings.cpp index 638a3832d9..26f8bd1af6 100644 --- a/src/kits/mail/MailSettings.cpp +++ b/src/kits/mail/MailSettings.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2004-2012, Haiku Inc. All rights reserved. + * Copyright 2004-2015, Haiku Inc. All rights reserved. * Copyright 2001-2003 Dr. Zoidberg Enterprises. All rights reserved. * * Distributed under the terms of the MIT License. @@ -79,7 +79,7 @@ BMailSettings::Reload() // Try directories from most specific to least directory_which which[] = { B_USER_SETTINGS_DIRECTORY, - B_COMMON_SETTINGS_DIRECTORY}; + B_SYSTEM_SETTINGS_DIRECTORY}; status_t status = B_ENTRY_NOT_FOUND; for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) { @@ -434,7 +434,6 @@ BMailAddOnSettings::Load(const BMessage& message) if (!path.IsAbsolute()) { directory_which which[] = { B_USER_ADDONS_DIRECTORY, - B_COMMON_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY }; diff --git a/src/preferences/mail/AutoConfigView.cpp b/src/preferences/mail/AutoConfigView.cpp index e8b3f5d7aa..b73ea1ba2c 100644 --- a/src/preferences/mail/AutoConfigView.cpp +++ b/src/preferences/mail/AutoConfigView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2007-2011, Haiku, Inc. All rights reserved. + * Copyright 2007-2015, Haiku, Inc. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. */ @@ -204,7 +204,6 @@ AutoConfigView::_GetSMTPAddonRef(entry_ref *ref) { directory_which which[] = { B_USER_ADDONS_DIRECTORY, - B_COMMON_ADDONS_DIRECTORY, B_BEOS_ADDONS_DIRECTORY }; diff --git a/src/preferences/mail/FilterList.cpp b/src/preferences/mail/FilterList.cpp index a717b049b9..46aeaa2c31 100644 --- a/src/preferences/mail/FilterList.cpp +++ b/src/preferences/mail/FilterList.cpp @@ -35,7 +35,6 @@ FilterList::Reload() std::set knownNames; directory_which which[] = {B_USER_ADDONS_DIRECTORY, - B_COMMON_ADDONS_DIRECTORY, B_SYSTEM_ADDONS_DIRECTORY}; for (size_t i = 0; i < sizeof(which) / sizeof(which[0]); i++) { BPath path; diff --git a/src/servers/mail/MailDaemonApplication.cpp b/src/servers/mail/MailDaemonApplication.cpp index 561a2b39be..bb6c0bec1d 100644 --- a/src/servers/mail/MailDaemonApplication.cpp +++ b/src/servers/mail/MailDaemonApplication.cpp @@ -40,8 +40,13 @@ #define B_TRANSLATION_CONTEXT "MailDaemon" +static const uint32 kMsgStartAutoCheck = 'stAC'; static const uint32 kMsgAutoCheck = 'moto'; +static const bigtime_t kStartAutoCheckDelay = 30000000; + // Wait 30 seconds before the first auto check - this usually lets the + // boot process settle down, and give the network a chance to come up. + struct send_mails_info { send_mails_info() @@ -213,53 +218,20 @@ MailDaemonApplication::ReadyToRun() InstallDeskbarIcon(); _InitAccounts(); - _UpdateAutoCheck(fSettingsFile.AutoCheckInterval()); - BVolume volume; - BVolumeRoster roster; + // Start auto mail check with a delay + BMessage startAutoCheck(kMsgStartAutoCheck); + BMessageRunner::StartSending(this, &startAutoCheck, + kStartAutoCheckDelay, 1); - fNewMessages = 0; - - while (roster.GetNextVolume(&volume) == B_OK) { - BQuery* query = new BQuery; - - query->SetTarget(this); - query->SetVolume(&volume); - query->PushAttr(B_MAIL_ATTR_STATUS); - query->PushString("New"); - query->PushOp(B_EQ); - query->PushAttr("BEOS:TYPE"); - query->PushString("text/x-email"); - query->PushOp(B_EQ); - query->PushAttr("BEOS:TYPE"); - query->PushString("text/x-partial-email"); - query->PushOp(B_EQ); - query->PushOp(B_OR); - query->PushOp(B_AND); - query->Fetch(); - - BEntry entry; - while (query->GetNextEntry(&entry) == B_OK) - fNewMessages++; - - fQueries.AddItem(query); - } - - BString string; - if (fNewMessages > 0) { - BMessageFormat format(B_TRANSLATE( - "{0, plural, one{One new message} other{# new messages}}")); - - format.Format(string, fNewMessages); - } else - string = B_TRANSLATE("No new messages"); + _InitNewMessagesCount(); fCentralBeep = false; fNotification = new BNotification(B_INFORMATION_NOTIFICATION); fNotification->SetGroup(B_TRANSLATE("Mail status")); - fNotification->SetTitle(string); fNotification->SetMessageID("daemon_status"); + _UpdateNewMessagesNotification(); app_info info; be_roster->GetAppInfo(B_MAIL_DAEMON_SIGNATURE, &info); @@ -268,7 +240,7 @@ MailDaemonApplication::ReadyToRun() BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon); fNotification->SetIcon(&icon); - fLEDAnimation = new LEDAnimation; + fLEDAnimation = new LEDAnimation(); SetPulseRate(1000000); } @@ -305,6 +277,10 @@ void MailDaemonApplication::MessageReceived(BMessage* msg) { switch (msg->what) { + case kMsgStartAutoCheck: + _UpdateAutoCheckRunner(); + break; + case kMsgAutoCheck: // TODO: check whether internet is up and running! // supposed to fall through @@ -322,7 +298,7 @@ MailDaemonApplication::MessageReceived(BMessage* msg) case kMsgSettingsUpdated: fSettingsFile.Reload(); - _UpdateAutoCheck(fSettingsFile.AutoCheckInterval()); + _UpdateAutoCheckRunner(); break; case kMsgAccountsChanged: @@ -435,16 +411,8 @@ MailDaemonApplication::MessageReceived(BMessage* msg) break; } - BString string; + _UpdateNewMessagesNotification(); - if (fNewMessages > 0) { - static BMessageFormat format(B_TRANSLATE( - "{0, plural, one{# new message.} other{# new messages.}}")); - format.Format(string, fNewMessages); - } else - string << B_TRANSLATE("No new messages."); - - fNotification->SetTitle(string.String()); if (fNotifyMode != B_MAIL_SHOW_STATUS_WINDOW_NEVER) fNotification->Send(); break; @@ -826,8 +794,60 @@ MailDaemonApplication::_OutboundProtocol(int32 account) void -MailDaemonApplication::_UpdateAutoCheck(bigtime_t interval) +MailDaemonApplication::_InitNewMessagesCount() { + BVolume volume; + BVolumeRoster roster; + + fNewMessages = 0; + + while (roster.GetNextVolume(&volume) == B_OK) { + BQuery* query = new BQuery; + + query->SetTarget(this); + query->SetVolume(&volume); + query->PushAttr(B_MAIL_ATTR_STATUS); + query->PushString("New"); + query->PushOp(B_EQ); + query->PushAttr("BEOS:TYPE"); + query->PushString("text/x-email"); + query->PushOp(B_EQ); + query->PushAttr("BEOS:TYPE"); + query->PushString("text/x-partial-email"); + query->PushOp(B_EQ); + query->PushOp(B_OR); + query->PushOp(B_AND); + query->Fetch(); + + BEntry entry; + while (query->GetNextEntry(&entry) == B_OK) + fNewMessages++; + + fQueries.AddItem(query); + } +} + + +void +MailDaemonApplication::_UpdateNewMessagesNotification() +{ + BString title; + if (fNewMessages > 0) { + BMessageFormat format(B_TRANSLATE( + "{0, plural, one{One new message} other{# new messages}}")); + + format.Format(title, fNewMessages); + } else + title = B_TRANSLATE("No new messages"); + + fNotification->SetTitle(title.String()); +} + + +void +MailDaemonApplication::_UpdateAutoCheckRunner() +{ + bigtime_t interval = fSettingsFile.AutoCheckInterval(); if (interval > 0) { if (fAutoCheckRunner != NULL) { fAutoCheckRunner->SetInterval(interval); diff --git a/src/servers/mail/MailDaemonApplication.h b/src/servers/mail/MailDaemonApplication.h index 343c0c6ae3..7960f150f5 100644 --- a/src/servers/mail/MailDaemonApplication.h +++ b/src/servers/mail/MailDaemonApplication.h @@ -1,5 +1,5 @@ /* - * Copyright 2007-2012, Haiku, Inc. All rights reserved. + * Copyright 2007-2013, Haiku, Inc. All rights reserved. * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved. * Copyright 2011, Clemens Zeidler * Distributed under the terms of the MIT License. @@ -78,7 +78,9 @@ private: BInboundMailProtocol* _InboundProtocol(int32 account); BOutboundMailProtocol* _OutboundProtocol(int32 account); - void _UpdateAutoCheck(bigtime_t interval); + void _InitNewMessagesCount(); + void _UpdateNewMessagesNotification(); + void _UpdateAutoCheckRunner(); void _AddMessage(send_mails_info& info, const BEntry& entry, const BNode& node);