19192d4dcSAxel Dörfler /*
2*c9fb410eSAxel Dörfler * Copyright 2001-2013, Haiku, Inc. All rights reserved.
39192d4dcSAxel Dörfler * Copyright 2001-2002 Dr. Zoidberg Enterprises. All rights reserved.
49192d4dcSAxel Dörfler * Copyright 2011, Clemens Zeidler <haiku@clemens-zeidler.de>
59192d4dcSAxel Dörfler *
69192d4dcSAxel Dörfler * Distributed under the terms of the MIT License.
79192d4dcSAxel Dörfler */
89192d4dcSAxel Dörfler
99192d4dcSAxel Dörfler
109192d4dcSAxel Dörfler #include <Button.h>
119192d4dcSAxel Dörfler #include <Catalog.h>
12715bf3d1SAxel Dörfler #include <GridLayout.h>
13715bf3d1SAxel Dörfler #include <Path.h>
149192d4dcSAxel Dörfler #include <TextControl.h>
159192d4dcSAxel Dörfler
16715bf3d1SAxel Dörfler #include <MailFilter.h>
179192d4dcSAxel Dörfler
189192d4dcSAxel Dörfler #include <FileConfigView.h>
199192d4dcSAxel Dörfler #include <ProtocolConfigView.h>
209192d4dcSAxel Dörfler #include <MailPrivate.h>
219192d4dcSAxel Dörfler
229192d4dcSAxel Dörfler #include "FolderConfigWindow.h"
239192d4dcSAxel Dörfler
249192d4dcSAxel Dörfler
259192d4dcSAxel Dörfler #undef B_TRANSLATION_CONTEXT
269192d4dcSAxel Dörfler #define B_TRANSLATION_CONTEXT "imap_config"
279192d4dcSAxel Dörfler
289192d4dcSAxel Dörfler
29715bf3d1SAxel Dörfler using namespace BPrivate;
30715bf3d1SAxel Dörfler
31715bf3d1SAxel Dörfler
329192d4dcSAxel Dörfler const uint32 kMsgOpenIMAPFolder = '&OIF';
339192d4dcSAxel Dörfler
349192d4dcSAxel Dörfler
35715bf3d1SAxel Dörfler class ConfigView : public MailProtocolConfigView {
369192d4dcSAxel Dörfler public:
37792843e8SAxel Dörfler ConfigView(
38792843e8SAxel Dörfler const BMailAccountSettings& accountSettings,
39792843e8SAxel Dörfler const BMailProtocolSettings& settings);
409192d4dcSAxel Dörfler virtual ~ConfigView();
41715bf3d1SAxel Dörfler
42792843e8SAxel Dörfler virtual status_t SaveInto(BMailAddOnSettings& settings) const;
439192d4dcSAxel Dörfler
449192d4dcSAxel Dörfler virtual void MessageReceived(BMessage* message);
459192d4dcSAxel Dörfler virtual void AttachedToWindow();
469192d4dcSAxel Dörfler
479192d4dcSAxel Dörfler private:
48715bf3d1SAxel Dörfler MailFileConfigView* fFileView;
49715bf3d1SAxel Dörfler BButton* fFolderButton;
509192d4dcSAxel Dörfler };
519192d4dcSAxel Dörfler
529192d4dcSAxel Dörfler
ConfigView(const BMailAccountSettings & accountSettings,const BMailProtocolSettings & settings)53792843e8SAxel Dörfler ConfigView::ConfigView(const BMailAccountSettings& accountSettings,
54792843e8SAxel Dörfler const BMailProtocolSettings& settings)
559192d4dcSAxel Dörfler :
56715bf3d1SAxel Dörfler MailProtocolConfigView(B_MAIL_PROTOCOL_HAS_USERNAME
579192d4dcSAxel Dörfler | B_MAIL_PROTOCOL_HAS_PASSWORD | B_MAIL_PROTOCOL_HAS_HOSTNAME
589192d4dcSAxel Dörfler | B_MAIL_PROTOCOL_CAN_LEAVE_MAIL_ON_SERVER
599192d4dcSAxel Dörfler | B_MAIL_PROTOCOL_PARTIAL_DOWNLOAD
609192d4dcSAxel Dörfler | B_MAIL_PROTOCOL_HAS_FLAVORS
61792843e8SAxel Dörfler )
629192d4dcSAxel Dörfler {
639192d4dcSAxel Dörfler AddFlavor(B_TRANSLATE("No encryption"));
649192d4dcSAxel Dörfler AddFlavor(B_TRANSLATE("SSL"));
659192d4dcSAxel Dörfler
66792843e8SAxel Dörfler SetTo(settings);
679192d4dcSAxel Dörfler
689192d4dcSAxel Dörfler ((BControl*)(FindView("leave_mail_on_server")))->SetValue(B_CONTROL_ON);
699192d4dcSAxel Dörfler ((BControl*)(FindView("leave_mail_on_server")))->Hide();
709192d4dcSAxel Dörfler
71715bf3d1SAxel Dörfler fFolderButton = new BButton("IMAP Folders", B_TRANSLATE(
724235da30SAxel Dörfler "Configure IMAP Folders"), new BMessage(kMsgOpenIMAPFolder));
73715bf3d1SAxel Dörfler Layout()->AddView(fFolderButton, 0, Layout()->CountRows(), 2);
749192d4dcSAxel Dörfler
759192d4dcSAxel Dörfler BPath defaultFolder = BPrivate::default_mail_directory();
76792843e8SAxel Dörfler defaultFolder.Append(accountSettings.Name());
779192d4dcSAxel Dörfler
78715bf3d1SAxel Dörfler fFileView = new MailFileConfigView(B_TRANSLATE("Destination:"),
799192d4dcSAxel Dörfler "destination", false, defaultFolder.Path());
80792843e8SAxel Dörfler fFileView->SetTo(&settings, NULL);
819192d4dcSAxel Dörfler
82715bf3d1SAxel Dörfler Layout()->AddView(fFileView, 0, Layout()->CountRows(),
83715bf3d1SAxel Dörfler Layout()->CountColumns());
849192d4dcSAxel Dörfler }
859192d4dcSAxel Dörfler
869192d4dcSAxel Dörfler
~ConfigView()879192d4dcSAxel Dörfler ConfigView::~ConfigView()
889192d4dcSAxel Dörfler {
899192d4dcSAxel Dörfler }
909192d4dcSAxel Dörfler
919192d4dcSAxel Dörfler
929192d4dcSAxel Dörfler status_t
SaveInto(BMailAddOnSettings & settings) const93792843e8SAxel Dörfler ConfigView::SaveInto(BMailAddOnSettings& settings) const
949192d4dcSAxel Dörfler {
95792843e8SAxel Dörfler status_t status = fFileView->SaveInto(settings);
96792843e8SAxel Dörfler if (status != B_OK)
97792843e8SAxel Dörfler return status;
98792843e8SAxel Dörfler
99792843e8SAxel Dörfler return MailProtocolConfigView::SaveInto(settings);
1009192d4dcSAxel Dörfler }
1019192d4dcSAxel Dörfler
1029192d4dcSAxel Dörfler
1039192d4dcSAxel Dörfler void
MessageReceived(BMessage * message)1049192d4dcSAxel Dörfler ConfigView::MessageReceived(BMessage* message)
1059192d4dcSAxel Dörfler {
1069192d4dcSAxel Dörfler switch (message->what) {
1079192d4dcSAxel Dörfler case kMsgOpenIMAPFolder:
1089192d4dcSAxel Dörfler {
109*c9fb410eSAxel Dörfler // Retrieve current settings
110*c9fb410eSAxel Dörfler BMailAddOnSettings settings;
111*c9fb410eSAxel Dörfler SaveInto(settings);
112*c9fb410eSAxel Dörfler
1139192d4dcSAxel Dörfler BWindow* window = new FolderConfigWindow(Window()->Frame(),
1149192d4dcSAxel Dörfler settings);
1159192d4dcSAxel Dörfler window->Show();
1169192d4dcSAxel Dörfler break;
1179192d4dcSAxel Dörfler }
1189192d4dcSAxel Dörfler
1199192d4dcSAxel Dörfler default:
120715bf3d1SAxel Dörfler MailProtocolConfigView::MessageReceived(message);
1219192d4dcSAxel Dörfler }
1229192d4dcSAxel Dörfler }
1239192d4dcSAxel Dörfler
1249192d4dcSAxel Dörfler
1259192d4dcSAxel Dörfler void
AttachedToWindow()1269192d4dcSAxel Dörfler ConfigView::AttachedToWindow()
1279192d4dcSAxel Dörfler {
128715bf3d1SAxel Dörfler fFolderButton->SetTarget(this);
1299192d4dcSAxel Dörfler }
1309192d4dcSAxel Dörfler
1319192d4dcSAxel Dörfler
1329192d4dcSAxel Dörfler // #pragma mark -
1339192d4dcSAxel Dörfler
1349192d4dcSAxel Dörfler
135792843e8SAxel Dörfler BMailSettingsView*
instantiate_protocol_settings_view(const BMailAccountSettings & accountSettings,const BMailProtocolSettings & settings)136792843e8SAxel Dörfler instantiate_protocol_settings_view(const BMailAccountSettings& accountSettings,
137792843e8SAxel Dörfler const BMailProtocolSettings& settings)
1389192d4dcSAxel Dörfler {
139792843e8SAxel Dörfler return new ConfigView(accountSettings, settings);
1409192d4dcSAxel Dörfler }
141