summaryrefslogtreecommitdiff
path: root/noncore/unsupported/mail2/folderwidget.h
blob: bb10319d92e17f4a624e0012ddd317fee0d38058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#ifndef FOLDERWIDGET_H
#define FOLDERWIDGET_H

#include "imapresponse.h"
#include "listviewplus.h"
#include "configfile.h"

class IMAPHandler;

class TopFolder
{
public:
	TopFolder() 
	{ 
		_valid = true; 
	}

	bool isValid() { return _valid; }
	void setAccount(Account account) { _account = account; }
	Account account() { return _account; }
	void setIMAPHandler(IMAPHandler *handler) { _handler = handler; }
	IMAPHandler *handler() { return _handler; }

private:
	bool _valid;
	Account _account;
	IMAPHandler *_handler;

};

class Folder
{
public:
	Folder() 
	{ 
		_valid = true; 
		_noCache = false;
	}

	bool isValid() { return _valid; }
	void setNoCache(bool noCache) { _noCache = noCache; }
	bool noCache() { return _noCache; }
	void setFullName(QString fullName) { _fullName = fullName; }
	QString fullName() { return _fullName; }
	void setSeparator(QString separator) { _separator = separator; }
	QString separator() { return _separator; }
	void setTopFolder(TopFolder topFolder) { _topFolder = topFolder; }
	TopFolder topFolder() { return _topFolder; }

private:
	bool _valid, _noCache;
	QString _fullName, _separator;
	TopFolder _topFolder;

};

class FolderWidgetItem : public QListViewItem
{
public:
	FolderWidgetItem(Folder &folder, QListView *parent);
	FolderWidgetItem(Folder &folder, FolderWidgetItem *parent);

	Folder folder() { return _folder; }

private:
	Folder _folder;

};

class FolderWidget : public ListViewPlus
{
	Q_OBJECT

public:
	FolderWidget(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
	~FolderWidget();

public slots:
	void update();

signals:
	void folderSelected(Folder folder);
	void status(const QString &text);
	void connecting();
	void connected();
	void disconnected();

protected:
	void getAccounts();
	FolderWidgetItem *addFolder(Folder &folder, FolderWidgetItem *folderWidgetItem);
	FolderWidgetItem *addAccount(Account &account);

	static const int MENU_RENAME = 0;
	static const int MENU_DELETE = 1;
	static const int MENU_MOVE = 2;
	static const int MENU_COPY = 3;
	static const int MENU_CREATE = 4;
	static const int MENU_RESCAN = 5;

protected slots:
	void slotMenuActivated(int itemid);
	void slotItemClicked(QListViewItem *item);

	void slotIMAPLookingUpHost();
	void slotIMAPHostFound();
	void slotIMAPConnected();
	void slotIMAPError(int error);
	void slotIMAPDisconnected();

	void slotIMAPLogin(IMAPResponse &response);
	void slotIMAPRename(IMAPResponse &response);
	void slotIMAPDelete(IMAPResponse &response);
	void slotIMAPCreate(IMAPResponse &response);
	void slotIMAPList(IMAPResponse &response);

private:
	Account _rescanAccount;
	Folder _createFolder;

};

#endif