1/*
2 * Copyright 2004-2015, Haiku Inc. All rights reserved.
3 * Copyright 2001, Dr. Zoidberg Enterprises. All rights reserved.
4 * Copyright 2011, Clemens Zeidler <haiku@clemens-zeidler.de>
5 *
6 * Distributed under the terms of the MIT License.
7 */
8#ifndef CONFIG_WINDOW_H
9#define CONFIG_WINDOW_H
10
11
12#include <Window.h>
13#include <ObjectList.h>
14#include <ListItem.h>
15
16#include "MailSettings.h"
17
18
19class BPopup;
20class BTextControl;
21class BCheckBox;
22class BListView;
23class BButton;
24class BMenuField;
25class BMailSettings;
26class BTextView;
27class CenterContainer;
28
29
30enum item_types {
31	ACCOUNT_ITEM = 0,
32	INBOUND_ITEM,
33	OUTBOUND_ITEM,
34	FILTER_ITEM
35};
36
37
38class AccountItem : public BStringItem {
39public:
40								AccountItem(const char* label,
41									BMailAccountSettings* account,
42									item_types type);
43
44			void				Update(BView* owner, const BFont* font);
45			void				DrawItem(BView* owner, BRect rect,
46									bool complete);
47			BMailAccountSettings* Account() { return fAccount; }
48			item_types			Type() { return fType; }
49
50private:
51			BMailAccountSettings* fAccount;
52			item_types			fType;
53};
54
55
56class ConfigWindow : public BWindow {
57public:
58								ConfigWindow();
59								~ConfigWindow();
60
61			bool				QuitRequested();
62			void				MessageReceived(BMessage* msg);
63
64			BMailAccountSettings*	AddAccount();
65			void				AccountUpdated(BMailAccountSettings* account);
66
67private:
68			BView*				_BuildHowToView();
69
70			void				_LoadSettings();
71			void				_LoadAccounts();
72			void				_SaveSettings();
73
74			status_t			_SetToGeneralSettings(BMailSettings *general);
75			void				_RevertToLastSettings();
76
77			void				_AddAccountToView(
78									BMailAccountSettings* account);
79			void				_RemoveAccount(BMailAccountSettings* account);
80			void				_RemoveAccountFromListView(
81									BMailAccountSettings* account);
82			void				_AccountSelected(AccountItem* item);
83			void				_ReplaceConfigView(BView* view);
84
85private:
86			BListView*			fAccountsListView;
87			BMailAccountSettings* fLastSelectedAccount;
88			BView*				fConfigView;
89			BButton*			fRemoveButton;
90
91			BCheckBox*			fCheckMailCheckBox;
92			BTextControl*		fIntervalControl;
93			BMenuField*			fStatusModeField;
94			BTextView*			fHowToTextView;
95
96			bool				fSaveSettings;
97			BObjectList<BMailAccountSettings>	fAccounts;
98			BObjectList<BMailAccountSettings>	fToDeleteAccounts;
99};
100
101#endif	/* CONFIG_WINDOW_H */
102