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 <kxmlguiclient.h>
00013 #include <qlistview.h>
00014 #include <qvbox.h>
00015 
00016 #include "kmreaderwin.h" //for inline actions
00017 #include "kmkernel.h" // for access to config
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   // Forwarded to the reader window.
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   void modifyFolder( KMFolderTreeItem* folderItem );
00146 
00147 public slots:
00148   void slotMoveMsgToFolder( KMFolder *dest);
00149   void slotTrashMsg();   // move to trash
00150 
00151   virtual void show();
00152   virtual void hide();
00154   void slotCheckMail();
00155 
00160   void folderSelected( KMFolder*, bool forceJumpToUnread = false );
00161 
00163   void folderSelected();
00164 
00166   void folderSelectedUnread( KMFolder* );
00167 
00168   void slotMsgSelected(KMMessage*);
00169   void slotMsgChanged();
00170 
00172   void slotSelectFolder(KMFolder*);
00173   void slotSelectMessage(KMMessage*);
00174 
00175   void slotReplaceMsgByUnencryptedVersion();
00176 
00178   void updateMessageMenu();
00180   void startUpdateMessageActionsTimer();
00182   void updateMessageActions();
00183 
00185   void slotSubscriptionDialog();
00186 
00188   void slotFolderTreeColumnsChanged();
00189 
00191   void clearFilterActions();
00192   void initializeFilterActions();
00193  
00194 signals:
00195   void messagesTransfered( bool );
00196   void captionChangeRequest( const QString & caption );
00197 
00198 protected:
00199   void setupActions();
00200   void createWidgets();
00201   void activatePanners();
00202   void showMsg(KMReaderWin *win, KMMessage *msg);
00203   void updateFileMenu();
00204   void updateViewMenu();
00205 
00206   KActionCollection * actionCollection() { return mActionCollection; }
00207 
00208   KRadioAction * actionForHeaderStyle( const KMail::HeaderStyle *,
00209                                        const KMail::HeaderStrategy * );
00210   KRadioAction * actionForAttachmentStrategy( const KMail::AttachmentStrategy * );
00211 
00215   KConfig * config();
00216 
00217 protected slots:
00218   void slotCheckOneAccount(int);
00219   void slotMailChecked( bool newMail, bool sendOnCheck,
00220                         const QMap<QString, int> & newInFolder );
00221   void getAccountMenu();
00222   void slotHelp();
00223   void slotNewMailReader();
00224   void slotFilter();
00225   void slotPopFilter();
00226   void slotAddrBook();
00227   void slotImport();
00228   void slotViewChange();
00229   void slotAddFolder();
00230   void slotCompose();
00231   void slotPostToML();
00232   void slotModifyFolder();
00233   void slotExpireFolder();
00234   void slotExpireAll();
00235   void slotInvalidateIMAPFolders();
00236   void slotMarkAllAsRead();
00237   void slotRemoveFolder();
00238   void slotEmptyFolder();
00239   void slotCompactFolder();
00240   void slotRefreshFolder();
00241   void slotCompactAll();
00242   void slotOverrideHtml();
00243   void slotOverrideThread();
00244   void slotToggleSubjectThreading();
00245   void slotMessageQueuedOrDrafted();
00246   void slotEditMsg();
00247   //void slotTrashMsg();   // move to trash
00248   void slotDeleteMsg( bool confirmDelete = true );  // completely delete message
00249   void slotUndo();
00250   void slotReadOn();
00251   void slotSaveMsg();
00252   void slotOpenMsg();
00253   void slotSaveAttachments();
00254   void slotMoveMsg();
00255   //void slotMoveMsgToFolder( KMFolder *dest);
00256   void slotCopyMsgToFolder( KMFolder *dest);
00257   void slotCopyMsg();
00258   void slotResendMsg();
00259   void slotEditVacation();
00260   void slotStartCertManager();
00261   void slotStartWatchGnuPG();
00262   void slotApplyFilters();
00263   void slotExpandThread();
00264   void slotExpandAllThreads();
00265   void slotCollapseThread();
00266   void slotCollapseAllThreads();
00267   void slotSetMsgStatusNew();
00268   void slotSetMsgStatusUnread();
00269   void slotSetMsgStatusRead();
00270   void slotSetMsgStatusReplied();
00271   void slotSetMsgStatusForwarded();
00272   void slotSetMsgStatusQueued();
00273   void slotSetMsgStatusSent();
00274   void slotSetMsgStatusFlag();
00275   void slotSetMsgStatusSpam();
00276   void slotSetMsgStatusHam();
00277   void slotSetThreadStatusNew();
00278   void slotSetThreadStatusUnread();
00279   void slotSetThreadStatusRead();
00280   void slotSetThreadStatusReplied();
00281   void slotSetThreadStatusForwarded();
00282   void slotSetThreadStatusQueued();
00283   void slotSetThreadStatusSent();
00284   void slotSetThreadStatusFlag();
00285   void slotSetThreadStatusSpam();
00286   void slotSetThreadStatusHam();
00287   void slotSetThreadStatusWatched();
00288   void slotSetThreadStatusIgnored();
00289   void slotToggleUnread();
00290   void slotToggleTotalColumn();
00291   void slotBriefHeaders();
00292   void slotFancyHeaders();
00293   void slotStandardHeaders();
00294   void slotLongHeaders();
00295   void slotAllHeaders();
00296   void slotIconicAttachments();
00297   void slotSmartAttachments();
00298   void slotInlineAttachments();
00299   void slotHideAttachments();
00300   void slotCycleHeaderStyles();
00301   void slotCycleAttachmentStrategy();
00302   void slotSetEncoding();
00303   void slotSendQueued();
00304   void slotMsgPopup(KMMessage &msg, const KURL &aUrl, const QPoint&);
00305   void slotMarkAll();
00306   void slotMemInfo();
00307   void slotSearch();
00308   void slotSearchClosed();
00309   void slotFind();
00310   void slotIntro();
00311   void slotShowStartupFolder();
00313   void slotShowTip();
00314   void slotAntiSpamWizard();
00315   void slotAntiVirusWizard();
00316   void slotFilterLogViewer();
00317 
00319   void slotNextMessage();
00320   void slotNextUnreadMessage();
00321   void slotNextImportantMessage();
00322   void slotNextUnreadFolder();
00323   void slotPrevMessage();
00324   void slotPrevUnreadMessage();
00325   void slotPrevImportantMessage();
00326   void slotPrevUnreadFolder();
00327 
00329   void slotMsgActivated(KMMessage*);
00330 
00332   void slotUpdateUndo();
00333 
00335   virtual void moveSelectedToFolder( int menuId );
00337   virtual void copySelectedToFolder( int menuId );
00339   virtual void updateFolderMenu();
00342   void updateMarkAsReadAction();
00343 
00345   void slotToggleShowQuickSearch();
00346 
00348   void slotEditNotifications();
00349   void slotEditKeys();
00350 
00352   void slotChangeCaption(QListViewItem*);
00353   void removeDuplicates();
00354 
00356   void slotReplyToMsg();
00357   void slotReplyAuthorToMsg();
00358   void slotReplyListToMsg();
00359   void slotReplyAllToMsg();
00360   void slotForwardMsg();
00361   void slotForwardAttachedMsg();
00362   void slotRedirectMsg();
00363   void slotBounceMsg();
00364   void slotNoQuoteReplyToMsg();
00365   void slotSubjectFilter();
00366   void slotMailingListFilter();
00367   void slotFromFilter();
00368   void slotToFilter();
00369   void slotPrintMsg();
00370 
00371   void slotConfigChanged();
00372 
00373 private:
00374   // Message actions
00375   KAction *mTrashAction, *mDeleteAction, *mSaveAsAction, *mEditAction,
00376     *mSendAgainAction, *mApplyFiltersAction, *mFindInMessageAction,
00377     *mSaveAttachmentsAction, *mOpenAction;
00378   // Composition actions
00379   KAction *mPrintAction, *mReplyAction, *mReplyAllAction, *mReplyAuthorAction,
00380       *mReplyListAction,
00381       *mForwardAction, *mForwardAttachedAction, *mRedirectAction,
00382       *mBounceAction, *mNoQuoteReplyAction;
00383   KActionMenu *mReplyActionMenu;
00384   KActionMenu *mForwardActionMenu;
00385   // Filter actions
00386   KActionMenu *mFilterMenu;
00387   KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00388       *mListFilterAction;
00389 
00390   KActionMenu *mStatusMenu, *mThreadStatusMenu,
00391     *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00392   KAction *mMarkThreadAsNewAction;
00393   KAction *mMarkThreadAsReadAction;
00394   KAction *mMarkThreadAsUnreadAction;
00395   KToggleAction *mToggleThreadRepliedAction;
00396   KToggleAction *mToggleThreadForwardedAction;
00397   KToggleAction *mToggleThreadQueuedAction;
00398   KToggleAction *mToggleThreadSentAction;
00399   KToggleAction *mToggleThreadFlagAction;
00400   KAction *mMarkThreadAsSpamAction;
00401   KAction *mMarkThreadAsHamAction;
00402   KToggleAction *mToggleRepliedAction;
00403   KToggleAction *mToggleForwardedAction;
00404   KToggleAction *mToggleQueuedAction;
00405   KToggleAction *mToggleSentAction;
00406   KToggleAction *mToggleFlagAction;
00407   KAction *mMarkAsSpamAction;
00408   KAction *mMarkAsHamAction;
00409 
00410   KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00411 
00413   KRadioAction* mUnreadColumnToggle;
00414   KRadioAction* mUnreadTextToggle;
00415   KToggleAction* mTotalColumnToggle;
00416 
00417   KToggleAction *mToggleShowQuickSearchAction;
00418 private:
00419   KMFolderTree *mFolderTree;
00420   KMReaderWin  *mMsgView;
00421   QSplitter    *mPanner1, *mPanner2;
00422   KMHeaders    *mHeaders;
00423   QVBox        *mSearchAndHeaders;
00424   KToolBar     *mSearchToolBar;
00425   KMail::HeaderListQuickSearch *mQuickSearchLine;
00426   KMFolder     *mFolder;
00427   const QTextCodec   *mCodec;
00428   QPopupMenu   *mViewMenu, *mBodyPartsMenu;
00429   KSelectAction *mEncoding;
00430   KAction       *mlistFilterAction;
00431   QCString  mEncodingStr;
00432   bool      mIntegrated;
00433   bool          mBeepOnNew;
00434   bool          mConfirmEmpty;
00435   QString       mStartupFolder;
00436   int       mMessageStatusId;
00437   QValueList<int> mPanner1Sep, mPanner2Sep;
00438   KURL          mUrlCurrent;
00439   QPopupMenu    *mActMenu;
00440   QPopupMenu    *mFileMenu;
00441 
00442   bool mLongFolderList;
00443 
00444   bool      mStartupDone;
00445   KMMenuToFolder mMenuToFolder;
00446   int copyId, moveId, htmlId, threadId;
00447   bool mHtmlPref, mThreadPref, mFolderHtmlPref, mFolderThreadPref,
00448        mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00449 
00450 //  QPopupMenu *mMessageMenu;
00451   KMFldSearch *mSearchWin;
00452 
00453   KAction *mModifyFolderAction, *mRemoveFolderAction, *mExpireFolderAction,
00454       *mCompactFolderAction, *mRefreshFolderAction, *mEmptyFolderAction,
00455       *mMarkAllAsReadAction;
00456   KToggleAction *mPreferHtmlAction, *mThreadMessagesAction;
00457   KToggleAction *mThreadBySubjectAction;
00458   KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00459 
00460   QTimer *menutimer;
00461 
00462   QGuardedPtr<KMail::Vacation> mVacation;
00463   KActionCollection *mActionCollection;
00464   QVBoxLayout *mTopLayout;
00465   bool mDestructed, mForceJumpToUnread;
00466   QPtrList<KAction> mFilterMenuActions;
00467   QPtrList<KAction> mFilterTBarActions;
00468   QPtrList<KMMetaFilterActionCommand> mFilterCommands;
00469   QGuardedPtr <KMail::FolderJob> mJob;
00470 
00471   KMSystemTray  *mSystemTray;
00472   KConfig *mConfig;
00473   KXMLGUIClient *mGUIClient;
00474   
00475   static QPtrList<KMMainWidget>* s_mainWidgetList;
00476 };
00477 
00478 #endif
00479 
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 22:43:51 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003