kmail Library API Documentation

kmmainwidget.h

00001 /* -*- mode: C++; c-file-style: "gnu" -*-
00002  * kmail main window
00003  * Copyright 2002 Don Sanders <sanders@kde.org>
00004  * Based on the work of Stefan Taferner <taferner@kde.org>
00005  *
00006  * License GPL
00007  */
00008 #ifndef __KMMAINWIDGET
00009 #define __KMMAINWIDGET
00010 
00011 #include <kurl.h>
00012 #include <qlistview.h>
00013 
00014 #include "kmreaderwin.h" //for inline actions
00015 #include "kmkernel.h" // for access to config
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   // Forwarded to the reader window.
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();   // move to trash
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   //void slotTrashMsg();   // move to trash
00227   void slotDeleteMsg();  // completely delete message
00228   void slotUndo();
00229   void slotReadOn();
00230   void slotSaveMsg();
00231   void slotSaveAttachments();
00232   void slotMoveMsg();
00233   //void slotMoveMsgToFolder( KMFolder *dest);
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   // Message actions
00353   KAction *mTrashAction, *mDeleteAction, *mSaveAsAction, *mEditAction,
00354     *mSendAgainAction, *mApplyFiltersAction, *mFindInMessageAction,
00355     *mSaveAttachmentsAction;
00356   // Composition actions
00357   KAction *mPrintAction, *mReplyAction, *mReplyAllAction, *mReplyAuthorAction,
00358       *mReplyListAction,
00359       *mForwardAction, *mForwardAttachedAction, *mRedirectAction,
00360       *mBounceAction, *mNoQuoteReplyAction;
00361   KActionMenu *mReplyActionMenu;
00362   KActionMenu *mForwardActionMenu;
00363   // Filter actions
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 //  QPopupMenu *mMessageMenu;
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   // ProgressDialog for transferring messages
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 
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:32 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003