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