You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/korn/subjectsdlg.h

203 lines
4.5 KiB

#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 TQProgressDialog;
class DoubleProgressDialog;
template< class T > class TQPtrList;
/**
* 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