00001
00032
#ifndef __KMFOLDERDIA
00033
#define __KMFOLDERDIA
00034
00035
#include "mailinglist-magic.h"
00036
using KMail::MailingList;
00037
00038
#include <kdialogbase.h>
00039
#include "configuredialog_p.h"
00040
#include <qvaluevector.h>
00041
00042
class QCheckBox;
00043
class QPushButton;
00044
class QLineEdit;
00045
class QListBox;
00046
class QComboBox;
00047
class QGroupBox;
00048
class KMFolder;
00049
class KMFolderTreeItem;
00050
class KMFolderDir;
00051
class KIntNumInput;
00052
class KIconButton;
00053
class KEditListBox;
00054
namespace KPIM {
class IdentityCombo; }
00055
class KMFolderDialog;
00056
class KMFolderTree;
00057
template <
typename T>
class QGuardedPtr;
00058
00059
namespace KMail {
00060
00072 class FolderDiaTab :
public QWidget
00073 {
00074 Q_OBJECT
00075
public:
00076
FolderDiaTab(
QWidget *parent=0,
const char* name=0 )
00077 :
QWidget( parent, name ) {}
00078
00079
virtual void load() = 0;
00080
00085
virtual bool save() = 0;
00086
00087
enum AcceptStatus { Accepted, Canceled, Delayed };
00092 virtual AcceptStatus
accept() {
00093
return save() ? Accepted : Canceled;
00094 }
00095
00096 signals:
00099
void readyForAccept();
00100
00103
void cancelAccept();
00104
00106
void changed(
bool);
00107 };
00108
00113 class FolderDiaGeneralTab :
public FolderDiaTab
00114 {
00115 Q_OBJECT
00116
00117
public:
00118
FolderDiaGeneralTab(
KMFolderDialog* dlg,
00119
const QString& aName,
00120
QWidget* parent,
const char* name = 0 );
00121
00122
virtual void load();
00123
virtual bool save();
00124
00125
private slots:
00126
void slotChangeIcon(
QString icon );
00127
00128
00129
00130
00131
void slotUpdateItems(
int );
00132
void slotFolderNameChanged(
const QString& );
00133
void slotFolderContentsSelectionChanged(
int );
00134
00135
private:
00136
void initializeWithValuesFromFolder(
KMFolder* folder );
00137
00138
private:
00139
QComboBox *mBelongsToComboBox;
00140
QComboBox *mMailboxTypeComboBox;
00141
QComboBox *mShowSenderReceiverComboBox;
00142
QComboBox *mContentsComboBox;
00143
QLineEdit *mNameEdit;
00144
QLabel *mNormalIconLabel;
00145 KIconButton *mNormalIconButton;
00146
QLabel *mUnreadIconLabel;
00147 KIconButton *mUnreadIconButton;
00148
QCheckBox *mIconsCheckBox;
00149
QCheckBox *mNewMailCheckBox;
00150
QCheckBox *mIgnoreNewMailCheckBox;
00151
QCheckBox *mKeepRepliesInSameFolderCheckBox;
00152
00153 KPIM::IdentityCombo *mIdentityComboBox;
00154
QGroupBox *mMailboxTypeGroupBox;
00155
00156
KMFolderDialog* mDlg;
00157 };
00158
00163 class FolderDiaExpiryTab :
public FolderDiaTab
00164 {
00165 Q_OBJECT
00166
00167
public:
00168
FolderDiaExpiryTab(
KMFolderDialog* dlg,
00169
QWidget* parent,
const char* name = 0 );
00170
00171
virtual void load();
00172
virtual bool save();
00173
00174
private slots:
00175
void slotExpireFolder(
bool );
00176
void slotReadExpiryUnitChanged(
int );
00177
void slotUnreadExpiryUnitChanged(
int );
00178
00179
private:
00180
00181
private:
00182
QCheckBox *mExpireFolderCheckBox;
00183 KIntNumInput *mReadExpiryTimeNumInput, *mUnreadExpiryTimeNumInput;
00184
QComboBox *mReadExpiryUnitsComboBox, *mUnreadExpiryUnitsComboBox;
00185
QRadioButton *mExpireActionDelete, *mExpireActionMove;
00186
QComboBox *mExpireToFolderComboBox;
00187
00188
KMFolderDialog* mDlg;
00189 };
00190
00195 class FolderDiaMailingListTab :
public FolderDiaTab
00196 {
00197 Q_OBJECT
00198
00199
public:
00200
FolderDiaMailingListTab(
KMFolderDialog* dlg,
QWidget* parent,
const char* name = 0 );
00201
00202
virtual void load();
00203
virtual bool save();
00204
00205
private slots:
00206
00207
00208
00209
void slotDetectMailingList();
00210
void slotInvokeHandler();
00211
void slotMLHandling(
int element );
00212
void slotHoldsML(
bool holdsML );
00213
void slotAddressChanged(
int addr );
00214
00215
private:
00216
void fillMLFromWidgets();
00217
void fillEditBox();
00218
00219
bool mMLInfoChanged;
00220
QCheckBox *mHoldsMailingList;
00221
QComboBox *mMLHandlerCombo;
00222
QPushButton *mDetectButton;
00223
QComboBox *mAddressCombo;
00224
int mLastItem;
00225 KEditListBox *mEditList;
00226
QLabel *mMLId;
00227
MailingList mMailingList;
00228
00229
KMFolderDialog* mDlg;
00230 };
00231
00232 }
00233
00237 class KMFolderDialog :
public KDialogBase
00238 {
00239 Q_OBJECT
00240
00241
public:
00242
KMFolderDialog(
KMFolder *folder,
KMFolderDir *aFolderDir,
00243 KMFolderTree* parent,
const QString& caption,
00244
const QString& name = QString::null );
00245
00246
KMFolder* folder()
const {
return mFolder; }
00247
void setFolder(
KMFolder* folder );
00248
00249
00250
bool isNewFolder()
const {
return mIsNewFolder; }
00251
00252
KMFolderDir* folderDir()
const {
return mFolderDir; }
00253
typedef QValueList<QGuardedPtr<KMFolder> >
FolderList;
00254
00255
const FolderList& folders()
const {
return mFolders; }
00256
QStringList folderNameList()
const {
return mFolderNameList; }
00257
00258
const FolderList& moveToFolderList()
const {
return mMoveToFolderList; }
00259
QStringList moveToFolderNameList()
const {
return mMoveToFolderNameList; }
00260
00261
KMFolder* parentFolder()
const {
return mParentFolder; }
00262
int positionInFolderList()
const {
return mPositionInFolderList; }
00263
00264
protected slots:
00265
void slotChanged(
bool );
00266
virtual void slotOk();
00267
virtual void slotApply();
00268
00269
void slotReadyForAccept();
00270
void slotCancelAccept();
00271
00272
private:
00273
void addTab(
KMail::FolderDiaTab* tab );
00274
00275
private:
00276
00277
QGuardedPtr<KMFolder> mFolder;
00278
QGuardedPtr<KMFolderDir> mFolderDir;
00279
QGuardedPtr<KMFolder> mParentFolder;
00280
00281
int mPositionInFolderList;
00282
FolderList mFolders;
00283
QStringList mFolderNameList;
00284
00285
FolderList mMoveToFolderList;
00286
QStringList mMoveToFolderNameList;
00287
00288
bool mIsNewFolder;
00289
00290
QValueVector<KMail::FolderDiaTab*> mTabs;
00291
int mDelayedSavingTabs;
00292 };
00293
00294
#endif
00295