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 
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   class ImapAccountBase;
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 *forwardInlineAction() const { return mForwardInlineAction; }
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 slotLocalSubscriptionDialog();
00189 
00191   void slotFolderTreeColumnsChanged();
00192 
00194   void clearFilterActions();
00195   void initializeFilterActions();
00196 
00198   void initializeIMAPActions() { initializeIMAPActions( true ); }
00199 
00200 signals:
00201   void messagesTransfered( bool );
00202   void captionChangeRequest( const QString & caption );
00203 
00204 protected:
00205   void setupActions();
00206   void createWidgets();
00207   void activatePanners();
00208   void showMsg(KMReaderWin *win, KMMessage *msg);
00209   void updateFileMenu();
00210 
00211   KActionCollection * actionCollection() { return mActionCollection; }
00212 
00213 
00214   KRadioAction * actionForAttachmentStrategy( const KMail::AttachmentStrategy * );
00215 
00219   KConfig * config();
00220 
00221 protected slots:
00222   void slotCheckOneAccount(int);
00223   void slotMailChecked( bool newMail, bool sendOnCheck,
00224                         const QMap<QString, int> & newInFolder );
00225   void getAccountMenu();
00226   void slotHelp();
00227   void slotNewMailReader();
00228   void slotFilter();
00229   void slotPopFilter();
00230   void slotAddrBook();
00231   void slotImport();
00232   void slotViewChange();
00233   void slotCompose();
00234   void slotPostToML();
00235   void slotModifyFolder();
00236   void slotExpireFolder();
00237   void slotExpireAll();
00238   void slotMarkAllAsRead();
00239   void slotRemoveFolder();
00240   void slotEmptyFolder();
00241   void slotCompactFolder();
00242   void slotRefreshFolder();
00243   void slotTroubleshootFolder();
00244   void slotCompactAll();
00245   void slotOverrideHtml();
00246   void slotOverrideThread();
00247   void slotToggleSubjectThreading();
00248   void slotMessageQueuedOrDrafted();
00249   void slotEditMsg();
00250   //void slotTrashMsg();   // move to trash
00251   void slotDeleteMsg( bool confirmDelete = true );  // completely delete message
00252   void slotUndo();
00253   void slotReadOn();
00254   void slotSaveMsg();
00255   void slotSaveTextAs();
00256   void slotOpenMsg();
00257   void slotSaveAttachments();
00258   void slotMoveMsg();
00259   //void slotMoveMsgToFolder( KMFolder *dest);
00260   void slotCopyMsgToFolder( KMFolder *dest);
00261   void slotCopyMsg();
00262   void slotResendMsg();
00263   void slotEditVacation();
00264   void slotStartCertManager();
00265   void slotStartWatchGnuPG();
00266   void slotApplyFilters();
00267   void slotExpandThread();
00268   void slotExpandAllThreads();
00269   void slotCollapseThread();
00270   void slotCollapseAllThreads();
00271   void slotSetMsgStatusNew();
00272   void slotSetMsgStatusUnread();
00273   void slotSetMsgStatusRead();
00274   void slotSetMsgStatusReplied();
00275   void slotSetMsgStatusForwarded();
00276   void slotSetMsgStatusQueued();
00277   void slotSetMsgStatusTodo();
00278   void slotSetMsgStatusSent();
00279   void slotSetMsgStatusFlag();
00280   void slotSetMsgStatusSpam();
00281   void slotSetMsgStatusHam();
00282   void slotSetThreadStatusNew();
00283   void slotSetThreadStatusUnread();
00284   void slotSetThreadStatusRead();
00285   void slotSetThreadStatusReplied();
00286   void slotSetThreadStatusForwarded();
00287   void slotSetThreadStatusQueued();
00288   void slotSetThreadStatusSent();
00289   void slotSetThreadStatusFlag();
00290   void slotSetThreadStatusSpam();
00291   void slotSetThreadStatusHam();
00292   void slotSetThreadStatusWatched();
00293   void slotSetThreadStatusIgnored();
00294   void slotToggleUnread();
00295   void slotToggleTotalColumn();
00296   //void slotBriefHeaders();
00297   //void slotFancyHeaders();
00298   //void slotStandardHeaders();
00299   //void slotLongHeaders();
00300   //void slotAllHeaders();
00301   //void slotMinimalHeaders();
00302   void slotIconicAttachments();
00303   void slotSmartAttachments();
00304   void slotInlineAttachments();
00305   void slotHideAttachments();
00306   //void slotCycleHeaderStyles();
00307   void slotCycleAttachmentStrategy();
00308   void slotSendQueued();
00309   void slotOnlineStatus();
00310   void slotUpdateOnlineStatus( int );
00311   void slotMsgPopup(KMMessage &msg, const KURL &aUrl, const QPoint&);
00312   void slotMarkAll();
00313   void slotMemInfo();
00314   void slotSearch();
00315   void slotSearchClosed();
00316   void slotFind();
00317   void slotIntro();
00318   void slotShowStartupFolder();
00320   void slotShowTip();
00321   void slotAntiSpamWizard();
00322   void slotAntiVirusWizard();
00323   void slotFilterLogViewer();
00324 
00326   void slotNextMessage();
00327   void slotNextUnreadMessage();
00328   void slotNextImportantMessage();
00329   void slotNextUnreadFolder();
00330   void slotPrevMessage();
00331   void slotPrevUnreadMessage();
00332   void slotPrevImportantMessage();
00333   void slotPrevUnreadFolder();
00334 
00336   void slotDisplayCurrentMessage();
00337   void slotMsgActivated(KMMessage*);
00338 
00340   void slotUpdateUndo();
00341 
00343   virtual void moveSelectedToFolder( int menuId );
00345   virtual void copySelectedToFolder( int menuId );
00347   void updateFolderMenu();
00350   void updateMarkAsReadAction();
00351 
00353   void slotToggleShowQuickSearch();
00354 
00356   void slotEditNotifications();
00357   void slotEditKeys();
00358 
00360   void slotChangeCaption(QListViewItem*);
00361   void removeDuplicates();
00362 
00364   void slotReplyToMsg();
00365   void slotReplyAuthorToMsg();
00366   void slotReplyListToMsg();
00367   void slotReplyAllToMsg();
00368   void slotForwardMsg();
00369   void slotForwardAttachedMsg();
00370   void slotRedirectMsg();
00371   void slotBounceMsg();
00372   void slotNoQuoteReplyToMsg();
00373   void slotSubjectFilter();
00374   void slotMailingListFilter();
00375   void slotFromFilter();
00376   void slotToFilter();
00377   void slotPrintMsg();
00378 
00379   void slotConfigChanged();
00380 
00381 private:
00383   QString overrideEncoding() const;
00384 
00385   void initializeIMAPActions( bool setState );
00386 
00390   KMail::ImapAccountBase* findCurrentImapAccountBase();
00391 
00395   QString findCurrentImapPath();
00396 
00397 private:
00398   // Message actions
00399   KAction *mTrashAction, *mDeleteAction, *mSaveAsAction, *mEditAction,
00400     *mSendAgainAction, *mApplyFiltersAction, *mFindInMessageAction,
00401     *mSaveAttachmentsAction, *mOpenAction, *mSaveTextAsAction;
00402   // Composition actions
00403   KAction *mPrintAction, *mReplyAction, *mReplyAllAction, *mReplyAuthorAction,
00404       *mReplyListAction,
00405       *mForwardInlineAction, *mForwardAttachedAction, *mRedirectAction,
00406       *mBounceAction, *mNoQuoteReplyAction;
00407   KActionMenu *mReplyActionMenu;
00408   KActionMenu *mForwardActionMenu;
00409   // Filter actions
00410   KActionMenu *mFilterMenu;
00411   KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00412       *mListFilterAction;
00413 
00414   KActionMenu *mStatusMenu, *mThreadStatusMenu,
00415     *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00416   KAction *mMarkThreadAsNewAction;
00417   KAction *mMarkThreadAsReadAction;
00418   KAction *mMarkThreadAsUnreadAction;
00419   KToggleAction *mToggleThreadRepliedAction;
00420   KToggleAction *mToggleThreadForwardedAction;
00421   KToggleAction *mToggleThreadQueuedAction;
00422   KToggleAction *mToggleThreadSentAction;
00423   KToggleAction *mToggleThreadFlagAction;
00424   KAction *mMarkThreadAsSpamAction;
00425   KAction *mMarkThreadAsHamAction;
00426   KToggleAction *mToggleRepliedAction;
00427   KToggleAction *mToggleForwardedAction;
00428   KToggleAction *mToggleQueuedAction;
00429   KToggleAction *mToggleSentAction;
00430   KToggleAction *mToggleFlagAction;
00431   KAction *mMarkAsSpamAction;
00432   KAction *mMarkAsHamAction;
00433   KToggleAction *mToggleTodoAction;
00434 
00435   KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00436 
00438   KRadioAction* mUnreadColumnToggle;
00439   KRadioAction* mUnreadTextToggle;
00440   KToggleAction* mTotalColumnToggle;
00441 
00442   KToggleAction *mToggleShowQuickSearchAction;
00443   KAction *mSelectAllTextAction, *mCopyMsgTextAction;
00444 private:
00445   KMFolderTree *mFolderTree;
00446   KMReaderWin  *mMsgView;
00447   QSplitter    *mPanner1, *mPanner2;
00448   KMHeaders    *mHeaders;
00449   QVBox        *mSearchAndHeaders;
00450   KToolBar     *mSearchToolBar;
00451   KMail::HeaderListQuickSearch *mQuickSearchLine;
00452   KMFolder     *mFolder;
00453   QPopupMenu   *mViewMenu, *mBodyPartsMenu;
00454   KAction       *mlistFilterAction;
00455   bool      mIntegrated;
00456   bool          mBeepOnNew;
00457   bool          mConfirmEmpty;
00458   QString       mStartupFolder;
00459   int       mMessageStatusId;
00460   QValueList<int> mPanner1Sep, mPanner2Sep;
00461   KURL          mUrlCurrent;
00462   QPopupMenu    *mActMenu;
00463   QPopupMenu    *mFileMenu;
00464 
00465   bool mLongFolderList;
00466 
00467   bool      mStartupDone;
00468   KMMenuToFolder mMenuToFolder;
00469   int copyId, moveId, htmlId, threadId;
00470   bool mHtmlPref, mThreadPref, mFolderHtmlPref, mFolderThreadPref,
00471        mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00472 
00473 //  QPopupMenu *mMessageMenu;
00474   KMFldSearch *mSearchWin;
00475 
00476   KAction *mModifyFolderAction, *mRemoveFolderAction, *mExpireFolderAction,
00477       *mCompactFolderAction, *mRefreshFolderAction, *mEmptyFolderAction,
00478       *mMarkAllAsReadAction, *mTroubleshootFolderAction;
00479   KToggleAction *mPreferHtmlAction, *mThreadMessagesAction;
00480   KToggleAction *mThreadBySubjectAction;
00481   KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00482 
00483   QTimer *menutimer;
00484 
00485   QGuardedPtr<KMail::Vacation> mVacation;
00486   KActionCollection *mActionCollection;
00487   QVBoxLayout *mTopLayout;
00488   bool mDestructed, mForceJumpToUnread;
00489   QPtrList<KAction> mFilterMenuActions;
00490   QPtrList<KAction> mFilterTBarActions;
00491   QPtrList<KMMetaFilterActionCommand> mFilterCommands;
00492   QGuardedPtr <KMail::FolderJob> mJob;
00493 
00494   KMSystemTray  *mSystemTray;
00495   KConfig *mConfig;
00496   KXMLGUIClient *mGUIClient;
00497 
00498   static QPtrList<KMMainWidget>* s_mainWidgetList;
00499 };
00500 
00501 #endif
00502 
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 Thu Oct 4 14:42:27 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003