summaryrefslogtreecommitdiffstats
path: root/korn/subjectsdlg.h
blob: 02a3e03962400c02362fd1d6c7a91ce698af9702 (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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
#ifndef KornSubjectsDlg_h
#define KornSubjectsDlg_h

#include<kdialogbase.h>
#include <klistview.h>
#include<tqvaluevector.h>
#include <kpushbutton.h>

class KMailDrop;
class KornMailSubject;
class KornMailId;
class KListView;
class KornMailDlg;
class QProgressDialog;
class DoubleProgressDialog;

template< class T > class QPtrList;

/**
 * KornSubjectsDlg loads all mail subjects and shows them in a list control.
 * Buttons allow the user to select several mails, delete them or to show one
 * of the mails.
 */
class KornSubjectsDlg: public KDialogBase
{
	Q_OBJECT

	/**
	* SubjectListViewItem is a helper class representing one line in the list view.
	* It stores the mail subject the line represents and controls the sorting.
	*/
	class SubjectListViewItem : public KListViewItem
	{
		KornMailSubject * _mailSubject;
	public:
		/**
		* SubjectListViewItem Constructor
		* @param parent list view
		* @param item KornMailSubject this item should represent. It is NOT deleted
		* if SubjectListViewItem is deleted.
		*/
		SubjectListViewItem( TQListView *parent, KornMailSubject * item);

		/**
		 * SubjectListViewItem Destructor
		 */
		~SubjectListViewItem();

		/**
		* Compare to list view item. Called if the sort header are clicked.
		* @param item item to compare this with
		* @param column column to compare
		* @param ascending search order
		*/
		int compare( TQListViewItem* item, int column, bool ascending ) const;

		/**
		* Return the mail subject.
		* @return the mail subject
		*/
		KornMailSubject * getMailSubject() const {return _mailSubject;}
	};

	TQPtrList< KMailDrop >	*_mailDrop;
	struct SubjectsData
	{
		TQPtrListIterator< KMailDrop > *it;
		TQValueVector< KornMailSubject > *subjects;
		DoubleProgressDialog *progress;
		bool atRechecking;
	} *_subjects;
	
	struct DeleteData
	{
		TQPtrList< KornMailSubject > *messages;
		TQPtrList< const KornMailId > *ids;
		TQProgressDialog *progress;
		KMailDrop *drop;
		int totalNumberOfMessages;
	} *_delete;
	
	KListView * _list;
	KPushButton * invertSelButton;
	KPushButton * clearSelButton;
	KPushButton * deleteButton;
	KPushButton * showButton;
	KornMailDlg * mailDlg;
	
	bool _loadSubjectsCanceled, _deleteMailsCanceled;
	bool _canDeleteMaildrop;

	/**
	 * Load the mails subjects and refresh the list view.
	 * @return false if the load process was cancled (close the dialog!), true otherwise
	 */
	//bool reload();

	/**
	 * Show a message in a separate dialog
	 * @param item message to show
	 */
	void showMessage(TQListViewItem * item);
public:
	/**
	 * KornSubjectsDlg Constructor
	 * @param parent parent widget
	 */
	KornSubjectsDlg( TQWidget *parent=0 );

	/**
	 * This functions clears all available KMailDrop's.
	 */
	void clear();
			
	/**
	 * This function adds a maildrop to the list.
	 * @param mailDrop The maildrop which have to be added.
	 */
	void addMailBox(KMailDrop* mailDrop);
	
	/**
	 * This method loads the messages and shows the dialog.
	 */
	void loadMessages();
	
	/**
	 * Show the KornSubjectsDlg as a modal dialog.
	 * @param name The name of the box
	 */
	void showSubjectsDlg( const TQString& name );

	/**
	 * KornSubjectsDlg Destructor
	 */
	virtual ~KornSubjectsDlg();

private slots:

	/**
	 * called if the cancel button was clicked while loadind the subjects
	 */
	void loadSubjectsCanceled();

	/**
	 * called if the selction of the list view was changed
	 */
	void listSelectionChanged();

	/**
	 * called if the "Invert Selection" button was clicked
	 */
	void invertSelection();

	/**
	 * called if the "Remove Selection" button was clicked
	 */
	void removeSelection();

	/**
	 * called if the "Show" button was clicked
	 */
	void showMessage();

	/**
	 * called if a list view item was double clicked
	 */
	void doubleClicked ( TQListViewItem *item );
	
	void closeDialog();
	
	//Functions for the subjects
public slots:
	void reloadSubjects();
private:
	void prepareStep1Subjects( KMailDrop* );
	void removeStep1Subjects( KMailDrop* );
	void prepareStep2Subjects( KMailDrop* );
	void removeStep2Subjects( KMailDrop* );
	bool makeSubjectsStruct();
	void deleteSubjectsStruct();
private slots:
	void slotReloadRechecked();
	void slotSubjectsCanceled();
	void subjectAvailable( KornMailSubject* );
	void subjectsReady( bool );
	
	//Functions neccesairy for delete
public slots:
	void deleteMessage();
private:
	void makeDeleteStruct();
	void deleteDeleteStruct();
	void fillDeleteMessageList();
	void fillDeleteIdList( KMailDrop *drop );
	void deleteNextMessage();
private slots:
	void deleteMailsReady( bool );
	void slotDeleteCanceled();
	
};

#endif