00001
00002
00003
00004
00005
00006
00007
00008
#ifndef __KMMAINWIDGET
00009
#define __KMMAINWIDGET
00010
00011
#include <kurl.h>
00012
#include <qlistview.h>
00013
#include <qvbox.h>
00014
00015
#include "kmreaderwin.h"
00016
#include "kmkernel.h"
00017
#include <kaction.h>
00018
00019
class QVBoxLayout;
00020
class QSplitter;
00021
class QTextCodec;
00022
00023
class KActionMenu;
00024
class KActionCollection;
00025
class KConfig;
00026
class KSelectAction;
00027
class KRadioAction;
00028
class KToggleAction;
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 KMSystemTray;
00043
00044
template <
typename T>
class QValueList;
00045
template <
typename T,
typename S>
class QMap;
00046
template <
typename T>
class QGuardedPtr;
00047
00048
namespace KIO {
00049
class Job;
00050 }
00051
00052
namespace KMail {
00053
class Vacation;
00054
class AttachmentStrategy;
00055
class HeaderStrategy;
00056
class HeaderStyle;
00057
class FolderJob;
00058
class HeaderListQuickSearch;
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()
const {
return mReplyAction; }
00098 KAction *replyAuthorAction()
const {
return mReplyAuthorAction; }
00099 KAction *replyAllAction()
const {
return mReplyAllAction; }
00100 KAction *replyListAction()
const {
return mReplyListAction; }
00101 KActionMenu * replyMenu()
const {
return mReplyActionMenu; }
00102 KActionMenu *forwardMenu()
const {
return mForwardActionMenu; }
00103 KAction *forwardAction()
const {
return mForwardAction; }
00104 KAction *forwardAttachedAction()
const {
return mForwardAttachedAction; }
00105 KAction *redirectAction()
const {
return mRedirectAction; }
00106 KAction *bounceAction()
const {
return mBounceAction; }
00107 KAction *noQuoteReplyAction()
const {
return mNoQuoteReplyAction; }
00108 KActionMenu *filterMenu()
const {
return mFilterMenu; }
00109 KAction *printAction()
const {
return mPrintAction; }
00110 KAction *trashAction()
const {
return mTrashAction; }
00111 KAction *deleteAction()
const {
return mDeleteAction; }
00112 KAction *saveAsAction()
const {
return mSaveAsAction; }
00113 KAction *editAction()
const {
return mEditAction; }
00114 KAction *sendAgainAction()
const {
return mSendAgainAction; }
00115 KAction *applyFiltersAction()
const {
return mSendAgainAction; }
00116 KAction *findInMessageAction()
const {
return mFindInMessageAction; }
00117 KAction *saveAttachmentsAction()
const {
return mSaveAttachmentsAction; }
00118 KAction *openAction()
const {
return mOpenAction; }
00119
00120 KActionMenu *statusMenu() const{
return mStatusMenu; }
00121 KActionMenu *threadStatusMenu()
const {
return mThreadStatusMenu; }
00122 KActionMenu *moveActionMenu()
const{
return mMoveActionMenu; }
00123 KActionMenu *mopyActionMenu()
const {
return mCopyActionMenu; }
00124 KActionMenu *applyFilterActionsMenu()
const {
return mApplyFilterActionsMenu; }
00125
00126 KToggleAction *watchThreadAction()
const {
return mWatchThreadAction; }
00127 KToggleAction *ignoreThreadAction()
const {
return mIgnoreThreadAction; }
00128
00129
00130 KToggleAction *toggleFixFontAction() {
return mMsgView->toggleFixFontAction(); }
00131 KAction *viewSourceAction() {
return mMsgView->viewSourceAction(); }
00132
00133
KMHeaders *headers()
const {
return mHeaders; }
00134
void toggleSystemTray();
00135
00136
void updateListFilterAction();
00137
00139
static QPtrList<KMMainWidget>* mainWidgetList() {
return s_mainWidgetList; }
00140
00141
KMSystemTray *systray() const;
00142
00143 public slots:
00144
void slotMoveMsgToFolder(
KMFolder *dest);
00145
void slotTrashMsg();
00146
00147 virtual
void show();
00148 virtual
void hide();
00150
void slotCheckMail();
00151
00156
void folderSelected(
KMFolder*,
bool forceJumpToUnread = false );
00157
00159
void folderSelected();
00160
00162
void folderSelectedUnread( KMFolder* );
00163
00164
void slotMsgSelected(KMMessage*);
00165
void slotMsgChanged();
00166
00168
void slotSelectFolder(KMFolder*);
00169
void slotSelectMessage(KMMessage*);
00170
00171
void slotReplaceMsgByUnencryptedVersion();
00172
00174
void updateMessageMenu();
00176
void startUpdateMessageActionsTimer();
00178
void updateMessageActions();
00179
00181
void slotSubscriptionDialog();
00182
00184
void slotFolderTreeColumnsChanged();
00185
00186 signals:
00187
void messagesTransfered(
bool );
00188
void captionChangeRequest( const
QString & caption );
00189
void modifiedToolBarConfig(
void );
00190
00191 protected:
00192
void setupActions();
00193
void createWidgets();
00194
void activatePanners();
00195
void showMsg(KMReaderWin *win, KMMessage *msg);
00196
void updateFileMenu();
00197
void updateViewMenu();
00198
00199 KActionCollection * actionCollection() {
return mActionCollection; }
00200
00201 KRadioAction * actionForHeaderStyle(
const KMail::HeaderStyle *,
00202
const KMail::HeaderStrategy * );
00203 KRadioAction * actionForAttachmentStrategy(
const KMail::AttachmentStrategy * );
00204
00208 KConfig * config();
00209
00210
protected slots:
00211
void slotCheckOneAccount(
int);
00212
void slotMailChecked(
bool newMail,
bool sendOnCheck,
00213
const QMap<QString, int> & newInFolder );
00214
void getAccountMenu();
00215
void slotHelp();
00216
void slotNewMailReader();
00217
void slotFilter();
00218
void slotPopFilter();
00219
void slotAddrBook();
00220
void slotImport();
00221
void slotViewChange();
00222
void slotAddFolder();
00223
void slotCompose();
00224
void slotPostToML();
00225
void slotModifyFolder();
00226
void slotExpireFolder();
00227
void slotExpireAll();
00228
void slotInvalidateIMAPFolders();
00229
void slotMarkAllAsRead();
00230
void slotRemoveFolder();
00231
void slotEmptyFolder();
00232
void slotCompactFolder();
00233
void slotRefreshFolder();
00234
void slotCompactAll();
00235
void slotOverrideHtml();
00236
void slotOverrideThread();
00237
void slotToggleSubjectThreading();
00238
void slotMessageQueuedOrDrafted();
00239
void slotEditMsg();
00240
00241
void slotDeleteMsg(
bool confirmDelete =
true );
00242
void slotUndo();
00243
void slotReadOn();
00244
void slotSaveMsg();
00245
void slotOpenMsg();
00246
void slotSaveAttachments();
00247
void slotMoveMsg();
00248
00249
void slotCopyMsgToFolder(
KMFolder *dest);
00250
void slotCopyMsg();
00251
void slotResendMsg();
00252
void slotEditVacation();
00253
void slotStartCertManager();
00254
void slotStartWatchGnuPG();
00255
void slotApplyFilters();
00256
void slotExpandThread();
00257
void slotExpandAllThreads();
00258
void slotCollapseThread();
00259
void slotCollapseAllThreads();
00260
void slotSetMsgStatusNew();
00261
void slotSetMsgStatusUnread();
00262
void slotSetMsgStatusRead();
00263
void slotSetMsgStatusReplied();
00264
void slotSetMsgStatusForwarded();
00265
void slotSetMsgStatusQueued();
00266
void slotSetMsgStatusSent();
00267
void slotSetMsgStatusFlag();
00268
void slotSetMsgStatusSpam();
00269
void slotSetMsgStatusHam();
00270
void slotSetThreadStatusNew();
00271
void slotSetThreadStatusUnread();
00272
void slotSetThreadStatusRead();
00273
void slotSetThreadStatusReplied();
00274
void slotSetThreadStatusForwarded();
00275
void slotSetThreadStatusQueued();
00276
void slotSetThreadStatusSent();
00277
void slotSetThreadStatusFlag();
00278
void slotSetThreadStatusSpam();
00279
void slotSetThreadStatusHam();
00280
void slotSetThreadStatusWatched();
00281
void slotSetThreadStatusIgnored();
00282
void slotToggleUnread();
00283
void slotToggleTotalColumn();
00284
void slotBriefHeaders();
00285
void slotFancyHeaders();
00286
void slotStandardHeaders();
00287
void slotLongHeaders();
00288
void slotAllHeaders();
00289
void slotIconicAttachments();
00290
void slotSmartAttachments();
00291
void slotInlineAttachments();
00292
void slotHideAttachments();
00293
void slotCycleHeaderStyles();
00294
void slotCycleAttachmentStrategy();
00295
void slotSetEncoding();
00296
void slotSendQueued();
00297
void slotMsgPopup(KMMessage &msg,
const KURL &aUrl,
const QPoint&);
00298
void slotMarkAll();
00299
void slotMemInfo();
00300
void slotSearch();
00301
void slotSearchClosed();
00302
void slotFind();
00303
void slotIntro();
00304
void slotShowStartupFolder();
00306
void slotShowTipOnStart();
00308
void slotShowTip();
00309
void slotAntiSpamWizard();
00310
void slotAntiVirusWizard();
00311
void slotFilterLogViewer();
00312
00314
void slotNextMessage();
00315
void slotNextUnreadMessage();
00316
void slotNextImportantMessage();
00317
void slotNextUnreadFolder();
00318
void slotPrevMessage();
00319
void slotPrevUnreadMessage();
00320
void slotPrevImportantMessage();
00321
void slotPrevUnreadFolder();
00322
00324
void slotMsgActivated(KMMessage*);
00325
00327
void slotUpdateUndo();
00328
00330
virtual void moveSelectedToFolder(
int menuId );
00332
virtual void copySelectedToFolder(
int menuId );
00334
virtual void updateFolderMenu();
00337
void updateMarkAsReadAction();
00338
00340
void slotToggleShowQuickSearch();
00341
00343
void slotEditNotifications();
00344
void slotEditKeys();
00345
00347
void slotChangeCaption(
QListViewItem*);
00348
void removeDuplicates();
00350
void initializeFilterActions();
00352
void plugFilterActions(
QPopupMenu*);
00353
00355
void slotReplyToMsg();
00356
void slotReplyAuthorToMsg();
00357
void slotReplyListToMsg();
00358
void slotReplyAllToMsg();
00359
void slotForwardMsg();
00360
void slotForwardAttachedMsg();
00361
void slotRedirectMsg();
00362
void slotBounceMsg();
00363
void slotNoQuoteReplyToMsg();
00364
void slotSubjectFilter();
00365
void slotMailingListFilter();
00366
void slotFromFilter();
00367
void slotToFilter();
00368
void slotPrintMsg();
00369
00370
void slotConfigChanged();
00371
00372
private:
00373
00374 KAction *mTrashAction, *mDeleteAction, *mSaveAsAction, *mEditAction,
00375 *mSendAgainAction, *mApplyFiltersAction, *mFindInMessageAction,
00376 *mSaveAttachmentsAction, *mOpenAction;
00377
00378 KAction *mPrintAction, *mReplyAction, *mReplyAllAction, *mReplyAuthorAction,
00379 *mReplyListAction,
00380 *mForwardAction, *mForwardAttachedAction, *mRedirectAction,
00381 *mBounceAction, *mNoQuoteReplyAction;
00382 KActionMenu *mReplyActionMenu;
00383 KActionMenu *mForwardActionMenu;
00384
00385 KActionMenu *mFilterMenu;
00386 KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00387 *mListFilterAction;
00388
00389 KActionMenu *mStatusMenu, *mThreadStatusMenu,
00390 *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00391 KAction *mMarkThreadAsNewAction;
00392 KAction *mMarkThreadAsReadAction;
00393 KAction *mMarkThreadAsUnreadAction;
00394 KToggleAction *mToggleThreadRepliedAction;
00395 KToggleAction *mToggleThreadForwardedAction;
00396 KToggleAction *mToggleThreadQueuedAction;
00397 KToggleAction *mToggleThreadSentAction;
00398 KToggleAction *mToggleThreadFlagAction;
00399 KAction *mMarkThreadAsSpamAction;
00400 KAction *mMarkThreadAsHamAction;
00401 KToggleAction *mToggleRepliedAction;
00402 KToggleAction *mToggleForwardedAction;
00403 KToggleAction *mToggleQueuedAction;
00404 KToggleAction *mToggleSentAction;
00405 KToggleAction *mToggleFlagAction;
00406 KAction *mMarkAsSpamAction;
00407 KAction *mMarkAsHamAction;
00408
00409 KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00410
00412 KRadioAction* mUnreadColumnToggle;
00413 KRadioAction* mUnreadTextToggle;
00414 KToggleAction* mTotalColumnToggle;
00415
00416 KToggleAction *mToggleShowQuickSearchAction;
00417
private:
00418 KMFolderTree *mFolderTree;
00419 KMReaderWin *mMsgView;
00420
QSplitter *mPanner1, *mPanner2;
00421
KMHeaders *mHeaders;
00422
QVBox *mSearchAndHeaders;
00423 KToolBar *mSearchToolBar;
00424 KMail::HeaderListQuickSearch *mQuickSearchLine;
00425
KMFolder *mFolder;
00426
const QTextCodec *mCodec;
00427
QPopupMenu *mViewMenu, *mBodyPartsMenu;
00428 KSelectAction *mEncoding;
00429 KAction *mlistFilterAction;
00430
QCString mEncodingStr;
00431
bool mIntegrated;
00432
bool mBeepOnNew;
00433
bool mConfirmEmpty;
00434
QString mStartupFolder;
00435
int mMessageStatusId;
00436
QValueList<int> mPanner1Sep, mPanner2Sep;
00437 KURL mUrlCurrent;
00438
QPopupMenu *mActMenu;
00439
QPopupMenu *mFileMenu;
00440
00441
bool mLongFolderList;
00442
00443
bool mStartupDone;
00444 KMMenuToFolder mMenuToFolder;
00445
int copyId, moveId, htmlId, threadId;
00446
bool mHtmlPref, mThreadPref, mFolderHtmlPref, mFolderThreadPref,
00447 mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00448
00449
00450 KMFldSearch *mSearchWin;
00451
00452 KAction *mModifyFolderAction, *mRemoveFolderAction, *mExpireFolderAction,
00453 *mCompactFolderAction, *mRefreshFolderAction, *mEmptyFolderAction,
00454 *mMarkAllAsReadAction;
00455 KToggleAction *mPreferHtmlAction, *mThreadMessagesAction;
00456 KToggleAction *mThreadBySubjectAction;
00457 KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00458
00459
QTimer *menutimer;
00460
00461
QGuardedPtr<KMail::Vacation> mVacation;
00462 KActionCollection *mActionCollection;
00463
QVBoxLayout *mTopLayout;
00464
bool mDestructed, mForceJumpToUnread;
00465
QPtrList<KAction> mFilterActions;
00466
QPtrList<KMMetaFilterActionCommand> mFilterCommands;
00467 QGuardedPtr <KMail::FolderJob> mJob;
00468
00469
KMSystemTray *mSystemTray;
00470 KConfig *mConfig;
00471
00472
static QPtrList<KMMainWidget>* s_mainWidgetList;
00473 };
00474
00475
#endif
00476