From 28ee6c28394b54048a391dfd1b398aad22b47a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 25 Apr 2013 18:56:11 +0000 Subject: [PATCH] IMAP: Use useful default without destination. * We now use the account name as destination directory. * Turns out that an empty string is written as destination which worked around the GetString() solution. --- .../inbound_protocols/imap/FolderConfigWindow.cpp | 2 +- .../inbound_protocols/imap/IMAPProtocol.cpp | 4 ++-- .../mail_daemon/inbound_protocols/imap/Settings.cpp | 13 ++++++++++--- .../mail_daemon/inbound_protocols/imap/Settings.h | 4 +++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/FolderConfigWindow.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/FolderConfigWindow.cpp index b16bc18c7e..3147fb5841 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/FolderConfigWindow.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/FolderConfigWindow.cpp @@ -256,7 +256,7 @@ FolderConfigWindow::FolderConfigWindow(BRect parent, const BMessage& settings) BWindow(BRect(0, 0, 350, 350), B_TRANSLATE("IMAP Folders"), B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, B_NOT_ZOOMABLE | B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS), - fSettings(settings) + fSettings("in", settings) { fQuotaView = new BStringView("quota view", B_TRANSLATE("Failed to fetch available storage.")); diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp index e6da5f3415..d6c98c4a4e 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/IMAPProtocol.cpp @@ -16,14 +16,14 @@ IMAPProtocol::IMAPProtocol(const BMailAccountSettings& settings) : BInboundMailProtocol(settings), - fSettings(settings.InboundSettings()), + fSettings(settings.Name(), settings.InboundSettings()), fWorkers(5, false) { BPath destination = fSettings.Destination(); status_t status = create_directory(destination.Path(), 0755); if (status != B_OK) { - fprintf(stderr, "imap: Could not create destination directory %s: %s\n", + fprintf(stderr, "IMAP: Could not create destination directory %s: %s\n", destination.Path(), strerror(status)); } diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp index 5c44c72554..a5673ea121 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp @@ -9,9 +9,10 @@ #include -Settings::Settings(const BMessage& archive) +Settings::Settings(const char* accountName, const BMessage& archive) : - fMessage(archive) + fMessage(archive), + fAccountName(accountName) { } @@ -78,7 +79,13 @@ Settings::Password() const BPath Settings::Destination() const { - return BPath(fMessage.GetString("destination", "/boot/home/mail/in")); + BPath path(fMessage.FindString("destination")); + if (path.Path() == NULL) { + // Use default directory + path = "/boot/home/mail"; + path.Append(fAccountName.String()); + } + return path; } diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.h b/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.h index cb3f2cc28e..3555e00356 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.h @@ -13,7 +13,8 @@ class Settings { public: - Settings(const BMessage& archive); + Settings(const char* accountName, + const BMessage& archive); ~Settings(); BNetworkAddress ServerAddress() const; @@ -32,6 +33,7 @@ public: private: const BMessage fMessage; + BString fAccountName; };