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