summaryrefslogtreecommitdiffstats
path: root/korn/subjectsdlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'korn/subjectsdlg.h')
-rw-r--r--korn/subjectsdlg.h202
1 files changed, 202 insertions, 0 deletions
diff --git a/korn/subjectsdlg.h b/korn/subjectsdlg.h
new file mode 100644
index 00000000..064b6c8e
--- /dev/null
+++ b/korn/subjectsdlg.h
@@ -0,0 +1,202 @@
+#ifndef KornSubjectsDlg_h
+#define KornSubjectsDlg_h
+
+#include<kdialogbase.h>
+#include <klistview.h>
+#include<qvaluevector.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( QListView *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( QListViewItem* item, int column, bool ascending ) const;
+
+ /**
+ * Return the mail subject.
+ * @return the mail subject
+ */
+ KornMailSubject * getMailSubject() const {return _mailSubject;}
+ };
+
+ QPtrList< KMailDrop > *_mailDrop;
+ struct SubjectsData
+ {
+ QPtrListIterator< KMailDrop > *it;
+ QValueVector< KornMailSubject > *subjects;
+ DoubleProgressDialog *progress;
+ bool atRechecking;
+ } *_subjects;
+
+ struct DeleteData
+ {
+ QPtrList< KornMailSubject > *messages;
+ QPtrList< const KornMailId > *ids;
+ QProgressDialog *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(QListViewItem * item);
+public:
+ /**
+ * KornSubjectsDlg Constructor
+ * @param parent parent widget
+ */
+ KornSubjectsDlg( QWidget *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 QString& 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 ( QListViewItem *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