00001
00002
00003
00004
00005
00006
00007
00008
#ifndef __KMMAINWIDGET
00009
#define __KMMAINWIDGET
00010
00011
#include <kurl.h>
00012
#include <qlistview.h>
00013
00014
#include "kmreaderwin.h"
00015
#include "kmkernel.h"
00016
#include <kaction.h>
00017
00018
class QVBoxLayout;
00019
class QSplitter;
00020
class QTextCodec;
00021
00022
class KActionMenu;
00023
class KActionCollection;
00024
class KConfig;
00025
class KSelectAction;
00026
class KRadioAction;
00027
class KToggleAction;
00028
class KProgressDialog;
00029
class KMenuBar;
00030
00031
class KMFolder;
00032
class KMFolderDir;
00033
class KMFolderTree;
00034
class KMFolderTreeItem;
00035
class KMHeaders;
00036
class KMCommand;
00037
class KMMetaFilterActionCommand;
00038
class KMMessage;
00039
class KMFolder;
00040
class KMAccount;
00041
class KMFldSearch;
00042
class KMLittleProgressDlg;
00043
class KMSystemTray;
00044
00045
template <
typename T>
class QValueList;
00046
template <
typename T,
typename S>
class QMap;
00047
template <
typename T>
class QGuardedPtr;
00048
00049
namespace KIO {
00050
class Job;
00051 }
00052
00053
namespace KMail {
00054
class Vacation;
00055
class AttachmentStrategy;
00056
class HeaderStrategy;
00057
class HeaderStyle;
00058
class FolderJob;
00059 }
00060
00061
typedef QMap<int,KMFolder*> KMMenuToFolder;
00062
00063
00064
class KMMainWidget :
public QWidget
00065 {
00066 Q_OBJECT
00067
00068
public:
00069 KMMainWidget(QWidget *parent,
const char *name,
00070 KActionCollection *actionCollection,
00071 KConfig*config = KMKernel::config() );
00072
virtual ~KMMainWidget();
00073
void destruct();
00074
00076
virtual void readPreConfig(
void);
00077
00079
virtual void readFolderConfig(
void);
00080
00082
virtual void writeFolderConfig(
void);
00083
00085
virtual void readConfig(
void);
00086
00088
virtual void writeConfig(
void);
00089
00091 KMReaderWin* messageView(
void)
const {
return mMsgView; }
00092 KMFolderTree* folderTree(
void)
const {
return mFolderTree; }
00093
00094
static void cleanup();
00095
00096 KAction *action(
const char *name ) {
return mActionCollection->action( name ); }
00097 KAction *replyAction() {
return mReplyAction; }
00098 KAction *replyAuthorAction() {
return mReplyAuthorAction; }
00099 KAction *replyAllAction() {
return mReplyAllAction; }
00100 KAction *replyListAction() {
return mReplyListAction; }
00101 KActionMenu *forwardMenu() {
return mForwardActionMenu; }
00102 KAction *forwardAction() {
return mForwardAction; }
00103 KAction *forwardAttachedAction() {
return mForwardAttachedAction; }
00104 KAction *redirectAction() {
return mRedirectAction; }
00105 KAction *bounceAction() {
return mBounceAction; }
00106 KAction *noQuoteReplyAction() {
return mNoQuoteReplyAction; }
00107 KActionMenu *filterMenu() {
return mFilterMenu; }
00108 KAction *printAction() {
return mPrintAction; }
00109 KAction *trashAction() {
return mTrashAction; }
00110 KAction *deleteAction() {
return mDeleteAction; }
00111 KAction *saveAsAction() {
return mSaveAsAction; }
00112 KAction *editAction() {
return mEditAction; }
00113 KAction *sendAgainAction() {
return mSendAgainAction; }
00114 KAction *applyFiltersAction() {
return mSendAgainAction; }
00115 KAction *findInMessageAction() {
return mFindInMessageAction; }
00116 KAction *saveAttachmentsAction() {
return mSaveAttachmentsAction; }
00117
00118 KActionMenu *statusMenu() {
return mStatusMenu; }
00119 KActionMenu *threadStatusMenu() {
return mThreadStatusMenu; }
00120 KActionMenu *moveActionMenu() {
return mMoveActionMenu; }
00121 KActionMenu *mopyActionMenu() {
return mCopyActionMenu; }
00122 KActionMenu *applyFilterActionsMenu() {
return mApplyFilterActionsMenu; }
00123
00124 KToggleAction *watchThreadAction() {
return mWatchThreadAction; }
00125 KToggleAction *ignoreThreadAction() {
return mIgnoreThreadAction; }
00126
00127
00128 KToggleAction *toggleFixFontAction() {
return mMsgView->toggleFixFontAction(); }
00129 KAction *viewSourceAction() {
return mMsgView->viewSourceAction(); }
00130
00131
void folderSelected(
KMFolder*,
bool jumpToUnread);
00132
KMHeaders *headers()
const {
return mHeaders; }
00133
KMLittleProgressDlg* progressDialog() const;
00134
00135
void toggleSystray(
bool enabled,
int mode);
00136
00137
void updateListFilterAction();
00138
00139 public slots:
00140
void slotMoveMsgToFolder(
KMFolder *dest);
00141
void slotTrashMsg();
00142
00143 virtual
void show();
00144 virtual
void hide();
00146
void slotCheckMail();
00147
00149
void folderSelected(
KMFolder*);
00150
void folderSelectedUnread( KMFolder* );
00151
00152
void slotMsgSelected(KMMessage*);
00153
void slotMsgChanged();
00154
00156
void slotSelectFolder(KMFolder*);
00157
void slotSelectMessage(KMMessage*);
00158
00159
void slotReplaceMsgByUnencryptedVersion();
00160
00162
void updateMessageMenu();
00164
void startUpdateMessageActionsTimer();
00166
void updateMessageActions();
00167
void statusMsg(const QString&);
00168
00170
void slotSubscriptionDialog();
00171
00173
void slotFolderTreeColumnsChanged();
00174
00175 signals:
00176
void messagesTransfered(
bool);
00177
void captionChangeRequest( const QString & caption );
00178
00179 protected:
00180
void setupActions();
00181
void setupStatusBar();
00182
void createWidgets();
00183
void activatePanners();
00184
void showMsg(KMReaderWin *win, KMMessage *msg);
00185
00186 KActionCollection * actionCollection() {
return mActionCollection; }
00187
00188 KRadioAction * actionForHeaderStyle(
const KMail::HeaderStyle *,
00189
const KMail::HeaderStrategy * );
00190 KRadioAction * actionForAttachmentStrategy(
const KMail::AttachmentStrategy * );
00191
00195 KConfig * config();
00196
00197
protected slots:
00198
void slotCheckOneAccount(
int);
00199
void slotMailChecked(
bool newMail,
bool sendOnCheck);
00200
void getAccountMenu();
00201
void slotHelp();
00202
void slotNewMailReader();
00203
void slotFilter();
00204
void slotPopFilter();
00205
void slotAddrBook();
00206
void slotImport();
00207
void slotViewChange();
00208
void slotAddFolder();
00209
void slotCompose();
00210
void slotPostToML();
00211
void slotModifyFolder();
00212
void slotExpireFolder();
00213
void slotExpireAll();
00214
void slotInvalidateIMAPFolders();
00215
void slotMarkAllAsRead();
00216
void slotRemoveFolder();
00217
void slotEmptyFolder();
00218
void slotCompactFolder();
00219
void slotRefreshFolder();
00220
void slotCompactAll();
00221
void slotOverrideHtml();
00222
void slotOverrideThread();
00223
void slotToggleSubjectThreading();
00224
void slotMessageQueuedOrDrafted();
00225
void slotEditMsg();
00226
00227
void slotDeleteMsg();
00228
void slotUndo();
00229
void slotReadOn();
00230
void slotSaveMsg();
00231
void slotSaveAttachments();
00232
void slotMoveMsg();
00233
00234
void slotCopyMsgToFolder(
KMFolder *dest);
00235
void slotCopyMsg();
00236
void slotResendMsg();
00237
void slotEditVacation();
00238
void slotApplyFilters();
00239
void slotExpandThread();
00240
void slotExpandAllThreads();
00241
void slotCollapseThread();
00242
void slotCollapseAllThreads();
00243
void slotSetMsgStatusNew();
00244
void slotSetMsgStatusUnread();
00245
void slotSetMsgStatusRead();
00246
void slotSetMsgStatusReplied();
00247
void slotSetMsgStatusForwarded();
00248
void slotSetMsgStatusQueued();
00249
void slotSetMsgStatusSent();
00250
void slotSetMsgStatusFlag();
00251
void slotSetMsgStatusSpam();
00252
void slotSetMsgStatusHam();
00253
void slotSetThreadStatusNew();
00254
void slotSetThreadStatusUnread();
00255
void slotSetThreadStatusRead();
00256
void slotSetThreadStatusReplied();
00257
void slotSetThreadStatusForwarded();
00258
void slotSetThreadStatusQueued();
00259
void slotSetThreadStatusSent();
00260
void slotSetThreadStatusFlag();
00261
void slotSetThreadStatusSpam();
00262
void slotSetThreadStatusHam();
00263
void slotSetThreadStatusWatched();
00264
void slotSetThreadStatusIgnored();
00265
void slotToggleUnread();
00266
void slotToggleTotalColumn();
00267
void slotBriefHeaders();
00268
void slotFancyHeaders();
00269
void slotStandardHeaders();
00270
void slotLongHeaders();
00271
void slotAllHeaders();
00272
void slotIconicAttachments();
00273
void slotSmartAttachments();
00274
void slotInlineAttachments();
00275
void slotHideAttachments();
00276
void slotCycleHeaderStyles();
00277
void slotCycleAttachmentStrategy();
00278
void slotSetEncoding();
00279
void slotSendQueued();
00280
void slotMsgPopup(KMMessage &msg,
const KURL &aUrl,
const QPoint&);
00281
void slotMarkAll();
00282
void slotMemInfo();
00283
void slotSearch();
00284
void slotSearchClosed();
00285
void slotFind();
00286
void slotUpdateImapMessage(KMMessage *msg);
00287
void slotIntro();
00288
void slotShowStartupFolder();
00290
void slotShowTipOnStart();
00292
void slotShowTip();
00293
00295
void slotNextMessage();
00296
void slotNextUnreadMessage();
00297
void slotNextImportantMessage();
00298
void slotNextUnreadFolder();
00299
void slotPrevMessage();
00300
void slotPrevUnreadMessage();
00301
void slotPrevImportantMessage();
00302
void slotPrevUnreadFolder();
00303
00305
void slotMsgActivated(KMMessage*);
00306
00308
void slotUpdateUndo();
00309
00311
virtual void moveSelectedToFolder(
int menuId );
00313
virtual void copySelectedToFolder(
int menuId );
00315
virtual void updateFolderMenu();
00318
void updateMarkAsReadAction();
00319
00320
00322
void slotEditNotifications();
00323
void slotEditKeys();
00324
00326
void slotChangeCaption(QListViewItem*);
00327
void removeDuplicates();
00329
void initializeFilterActions();
00331
void plugFilterActions(QPopupMenu*);
00332
00334
void slotReplyToMsg();
00335
void slotReplyAuthorToMsg();
00336
void slotReplyListToMsg();
00337
void slotReplyAllToMsg();
00338
void slotForwardMsg();
00339
void slotForwardAttachedMsg();
00340
void slotRedirectMsg();
00341
void slotBounceMsg();
00342
void slotNoQuoteReplyToMsg();
00343
void slotSubjectFilter();
00344
void slotMailingListFilter();
00345
void slotFromFilter();
00346
void slotToFilter();
00347
void slotPrintMsg();
00348
00349
void slotConfigChanged();
00350
00351
private:
00352
00353 KAction *mTrashAction, *mDeleteAction, *mSaveAsAction, *mEditAction,
00354 *mSendAgainAction, *mApplyFiltersAction, *mFindInMessageAction,
00355 *mSaveAttachmentsAction;
00356
00357 KAction *mPrintAction, *mReplyAction, *mReplyAllAction, *mReplyAuthorAction,
00358 *mReplyListAction,
00359 *mForwardAction, *mForwardAttachedAction, *mRedirectAction,
00360 *mBounceAction, *mNoQuoteReplyAction;
00361 KActionMenu *mReplyActionMenu;
00362 KActionMenu *mForwardActionMenu;
00363
00364 KActionMenu *mFilterMenu;
00365 KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00366 *mListFilterAction;
00367
00368 KActionMenu *mStatusMenu, *mThreadStatusMenu,
00369 *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00370 KAction *mMarkThreadAsNewAction;
00371 KAction *mMarkThreadAsReadAction;
00372 KAction *mMarkThreadAsUnreadAction;
00373 KToggleAction *mToggleThreadRepliedAction;
00374 KToggleAction *mToggleThreadForwardedAction;
00375 KToggleAction *mToggleThreadQueuedAction;
00376 KToggleAction *mToggleThreadSentAction;
00377 KToggleAction *mToggleThreadFlagAction;
00378 KAction *mMarkThreadAsSpamAction;
00379 KAction *mMarkThreadAsHamAction;
00380 KToggleAction *mToggleRepliedAction;
00381 KToggleAction *mToggleForwardedAction;
00382 KToggleAction *mToggleQueuedAction;
00383 KToggleAction *mToggleSentAction;
00384 KToggleAction *mToggleFlagAction;
00385 KAction *mMarkAsSpamAction;
00386 KAction *mMarkAsHamAction;
00387
00388 KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00389
00391 KRadioAction* mUnreadColumnToggle;
00392 KRadioAction* mUnreadTextToggle;
00393 KToggleAction* mTotalColumnToggle;
00394
00395
private:
00396 KMFolderTree *mFolderTree;
00397 KMReaderWin *mMsgView;
00398 QSplitter *mPanner1, *mPanner2;
00399
KMHeaders *mHeaders;
00400
KMFolder *mFolder;
00401
const QTextCodec *mCodec;
00402 QPopupMenu *mViewMenu, *mBodyPartsMenu;
00403 KSelectAction *mEncoding;
00404 KAction *mlistFilterAction;
00405 QCString mEncodingStr;
00406
bool mIntegrated;
00407
bool mSendOnCheck;
00408
bool mBeepOnNew, mSystemTrayOnNew;
00409
int mSystemTrayMode;
00410
bool mConfirmEmpty;
00411 QString mStartupFolder;
00412
int mMessageStatusId;
00413 QValueList<int> mPanner1Sep, mPanner2Sep;
00414 KMMessage *mMsgCurrent;
00415 KURL mUrlCurrent;
00416 QPopupMenu *mActMenu;
00417 QPopupMenu *mFileMenu;
00418
00419
bool mLongFolderList;
00420
00421
bool mStartupDone;
00422 KMMenuToFolder mMenuToFolder;
00423
int copyId, moveId, htmlId, threadId;
00424
bool mHtmlPref, mThreadPref, mFolderHtmlPref, mFolderThreadPref,
00425 mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00426
00427
00428 KMFldSearch *mSearchWin;
00429
00430 KAction *mModifyFolderAction, *mRemoveFolderAction, *mExpireFolderAction,
00431 *mCompactFolderAction, *mRefreshFolderAction, *mEmptyFolderAction,
00432 *mMarkAllAsReadAction;
00433 KToggleAction *mPreferHtmlAction, *mThreadMessagesAction;
00434 KToggleAction *mThreadBySubjectAction;
00435 KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00436
00437 QTimer *menutimer;
00438
00439
00440 KProgressDialog* mProgressDialog;
00441
int mCountJobs, mCountMsgs;
00442
00443
KMLittleProgressDlg *mLittleProgress;
00444
00445 QPtrList<KMMessage> mSelectedMsgs;
00446 QGuardedPtr<KMail::Vacation> mVacation;
00447 KActionCollection *mActionCollection;
00448 QVBoxLayout *mTopLayout;
00449
bool mDestructed;
00450 QPtrList<KAction> mFilterActions;
00451 QPtrList<KMMetaFilterActionCommand> mFilterCommands;
00452 QGuardedPtr <KMail::FolderJob> mJob;
00453
00454
KMSystemTray *mSystemTray;
00455 KConfig *mConfig;
00456
00457 };
00458
00459
#endif
00460