• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdepim
  • Sitemap
  • Contact Us
 

kmail

kmmainwidget.h

Go to the documentation of this file.
00001 /* -*- mode: C++; c-file-style: "gnu" -*-
00002   This file is part of KMail, the KDE mail client.
00003   Copyright (c) 2002 Don Sanders <sanders@kde.org>
00004 
00005   Based on the work of Stefan Taferner <taferner@kde.org>
00006 
00007   KMail is free software; you can redistribute it and/or modify it
00008   under the terms of the GNU General Public License, version 2, as
00009   published by the Free Software Foundation.
00010 
00011   KMail is distributed in the hope that it will be useful, but
00012   WITHOUT ANY WARRANTY; without even the implied warranty of
00013   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014   General Public License for more details.
00015 
00016   You should have received a copy of the GNU General Public License along
00017   with this program; if not, write to the Free Software Foundation, Inc.,
00018   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00019 */
00020 
00021 #ifndef __KMMAINWIDGET
00022 #define __KMMAINWIDGET
00023 
00024 #include "kmail_export.h"
00025 #include "kmreaderwin.h" //for inline actions
00026 #include "kmkernel.h" // for access to config
00027 
00028 #include <kurl.h>
00029 #include <kxmlguiclient.h>
00030 #include "messageactions.h"
00031 #include <kaction.h>
00032 #include <kactioncollection.h>
00033 #include <kvbox.h>
00034 
00035 #include <QList>
00036 #include <QVBoxLayout>
00037 #include <q3listview.h>
00038 #include <QMenu>
00039 #include <QHash>
00040 #include <QPointer>
00041 
00042 class QVBoxLayout;
00043 class QSplitter;
00044 class QSignalMapper;
00045 class QToolBar;
00046 
00047 class KActionMenu;
00048 class KConfig;
00049 class KToggleAction;
00050 class K3ListViewSearchLine;
00051 
00052 class KMFolder;
00053 class KMFolderTree;
00054 class KMFolderTreeItem;
00055 class KMMetaFilterActionCommand;
00056 class FolderShortcutCommand;
00057 class KMMessage;
00058 class KMFolder;
00059 class KMSystemTray;
00060 class KMHeaders;
00061 class KMMessageTagDescription;
00062 typedef QPair<KMMessageTagDescription*,KAction*> MessageTagPtrPair;
00063 class CustomTemplatesMenu;
00064 
00065 template <typename T> class QList;
00066 template <typename T, typename S> class QMap;
00067 template <typename T> class QPointer;
00068 
00069 namespace KIO {
00070   class Job;
00071 }
00072 
00073 namespace KMail {
00074   class Vacation;
00075   class SieveDebugDialog;
00076   class FolderJob;
00077   class HeaderListQuickSearch;
00078   class SearchWindow;
00079   class ImapAccountBase;
00080   class FavoriteFolderView;
00081   class StatusBarLabel;
00082 }
00083 
00084 typedef QMap<QAction*,KMFolder*> KMMenuToFolder;
00085 
00086 class KMAIL_EXPORT KMMainWidget : public QWidget
00087 {
00088   Q_OBJECT
00089 
00090   public:
00091     typedef QList<KMMainWidget*> PtrList;
00092 
00093     KMMainWidget(QWidget *parent, KXMLGUIClient *aGUIClient,
00094                  KActionCollection *actionCollection,
00095                  KConfig *config = KMKernel::config() );
00096     virtual ~KMMainWidget();
00097     void destruct();
00098 
00100     virtual void readPreConfig();
00101 
00103     virtual void readFolderConfig();
00104 
00106     virtual void writeFolderConfig();
00107 
00109     virtual void readConfig();
00110 
00112     virtual void writeConfig();
00113 
00115     KMReaderWin* messageView() const { return mMsgView; }
00116     KMFolderTree* folderTree() const  { return mFolderTree; }
00117     KMail::FavoriteFolderView *favoriteFolderView() const { return mFavoriteFolderView; }
00118 
00119     static void cleanup();
00120 
00121     QAction *action( const char *name ) { return mActionCollection->action( name ); }
00122     KActionMenu *forwardMenu() const { return mForwardActionMenu; }
00123     KAction *forwardAction() const { return mForwardAction; }
00124     KAction *forwardAttachedAction() const { return mForwardAttachedAction; }
00125     KAction *redirectAction() const { return mRedirectAction; }
00126     KActionMenu *filterMenu() const { return mFilterMenu; }
00127     KAction *printAction() const { return mPrintAction; }
00128     KAction *trashAction() const { return mTrashAction; }
00129     KAction *deleteAction() const { return mDeleteAction; }
00130     KAction *trashThreadAction() const { return mTrashThreadAction; }
00131     KAction *deleteThreadAction() const { return mDeleteThreadAction; }
00132     KAction *saveAsAction() const { return mSaveAsAction; }
00133     KAction *editAction() const { return mMsgActions->editAction(); }
00134     KAction *useAction() const { return mUseAction; }
00135     KAction *sendAgainAction() const { return mSendAgainAction; }
00136     KAction *applyAllFiltersAction() const { return mApplyAllFiltersAction; }
00137     KAction *findInMessageAction() const { return mFindInMessageAction; }
00138     KAction *saveAttachmentsAction() const { return mSaveAttachmentsAction; }
00139     KAction *openAction() const { return mOpenAction; }
00140     KAction *viewSourceAction() const { return mViewSourceAction; }
00141     KMail::MessageActions *messageActions() const { return mMsgActions; }
00142 
00143     KActionMenu *threadStatusMenu() const { return mThreadStatusMenu; }
00144     KActionMenu *moveActionMenu() const{ return mMoveActionMenu; }
00145     KActionMenu *mopyActionMenu() const { return mCopyActionMenu; }
00146     KActionMenu *applyFilterActionsMenu() const { return mApplyFilterActionsMenu; }
00147 
00148     KToggleAction *watchThreadAction() const { return mWatchThreadAction; }
00149     KToggleAction *ignoreThreadAction() const { return mIgnoreThreadAction; }
00150 
00151     KMHeaders *headers() const { return mHeaders; }
00152     void toggleSystemTray();
00153 
00154     void updateListFilterAction();
00155 
00160     static const PtrList *mainWidgetList();
00161 
00162     KMSystemTray *systray() const;
00163 
00167     QList<QAction*> actionList();
00168 
00169     void modifyFolder( KMFolderTreeItem *folderItem );
00170 
00171     QLabel* vacationScriptIndicator() const;
00172     void updateVactionScriptStatus() { updateVactionScriptStatus( mVacationIndicatorActive ); }
00173 
00174   public slots:
00175     void slotMoveMsgToFolder( KMFolder *dest);
00176     void slotTrashMsg();   // move to trash
00177 
00178     void slotCheckMail();
00179 
00184     void folderSelected( KMFolder*, bool forceJumpToUnread = false );
00185 
00189     void folderSelected();
00190 
00194     void folderSelectedUnread( KMFolder* );
00195 
00196     void slotMsgSelected(KMMessage*);
00197     void slotMsgChanged();
00198 
00202     void slotSelectFolder(KMFolder*);
00203     void slotSelectMessage(KMMessage*);
00204 
00205     void slotReplaceMsgByUnencryptedVersion();
00206 
00210     void updateMessageMenu();
00211 
00215     void startUpdateMessageActionsTimer();
00216 
00218     void updateMessageActions();
00219 
00221     void slotSubscriptionDialog();
00222 
00224     void slotLocalSubscriptionDialog();
00225 
00227     void slotFolderTreeColumnsChanged();
00228 
00230     void clearFilterActions();
00231     void initializeFilterActions();
00232 
00234     void initializeIMAPActions() { initializeIMAPActions( true ); }
00235 
00237     void initializeFolderShortcutActions();
00238 
00240     void slotShortcutChanged( KMFolder *folder );
00241 
00243     void clearMessageTagActions();
00244 
00245     void initializeMessageTagActions();
00246 
00248     void slotEditVacation();
00249 
00252     void slotUpdateMessageTagList( const QString &aLabel );
00253 
00254 
00260     void updateMessageTagActions( const int aCount );
00261 
00269     QList<KActionCollection*> actionCollections() const;
00270 
00271   signals:
00272     void messagesTransfered( bool );
00273     void captionChangeRequest( const QString &caption );
00274 
00275   protected:
00276     void setupActions();
00277     void createWidgets();
00278     void deleteWidgets();
00279     void layoutSplitters();
00280     void showMsg( KMReaderWin *win, KMMessage *msg );
00281     void updateFileMenu();
00282     void newFromTemplate( KMMessage *msg );
00283 
00284     // helper functions for keeping reference to mFolder
00285     void openFolder();
00286     void closeFolder();
00287 
00288     virtual void showEvent( QShowEvent *event );
00289 
00290     KActionCollection *actionCollection() const { return mActionCollection; }
00291 
00297     KConfig *config();
00298 
00299   protected slots:
00300     void slotCheckOneAccount( QAction* );
00301     void slotMailChecked( bool newMail, bool sendOnCheck,
00302                           const QMap<QString, int> & newInFolder );
00303     void getAccountMenu();
00304     void getTransportMenu();
00305     void slotHelp();
00306     void slotFilter();
00307     void slotPopFilter();
00308     void slotManageSieveScripts();
00309     void slotAddrBook();
00310     void slotImport();
00311     void slotCompose();
00312     void slotPostToML();
00313     void slotModifyFolder();
00314     void slotFolderMailingListProperties();
00315     void slotFolderShortcutCommand();
00316     void slotExpireFolder();
00317     void slotExpireAll();
00318     void slotInvalidateIMAPFolders();
00319     void slotMarkAllAsRead();
00320     void slotRemoveFolder();
00321     void slotEmptyFolder();
00322     void slotCompactFolder();
00323     void slotRefreshFolder();
00324     void slotTroubleshootFolder();
00325     void slotTroubleshootMaildir();
00326     void slotCompactAll();
00327     void slotOverrideHtml();
00328     void slotOverrideHtmlLoadExt();
00329     void slotOverrideThread();
00330     void slotToggleSubjectThreading();
00331     void slotMessageQueuedOrDrafted();
00332     void slotUseTemplate();
00333     //void slotTrashMsg();   // move to trash
00334     void slotDeleteMsg( bool confirmDelete = true );  // completely delete message
00335     void slotTrashThread();
00336     void slotDeleteThread( bool confirmDelete = true );  // completely delete thread
00337     void slotUndo();
00338     void slotReadOn();
00339     void slotSaveMsg();
00340     void slotOpenMsg();
00341     void slotSaveAttachments();
00342     void slotJumpToFolder();
00343     void slotMoveMsg();
00344     //void slotMoveMsgToFolder( KMFolder *dest);
00345     void slotCopyMsgToFolder( KMFolder *dest);
00346     void slotCopyMsg();
00347     void slotResendMsg();
00348     void slotCheckVacation();
00349     void slotDebugSieve();
00350     void slotStartCertManager();
00351     void slotStartWatchGnuPG();
00352     void slotApplyFilters();
00353     void slotExpandThread();
00354     void slotExpandAllThreads();
00355     void slotCollapseThread();
00356     void slotCollapseAllThreads();
00357     void slotShowMsgSrc();
00358     void slotSetThreadStatusNew();
00359     void slotSetThreadStatusUnread();
00360     void slotSetThreadStatusRead();
00361     void slotSetThreadStatusImportant();
00362     void slotSetThreadStatusToAct();
00363     void slotSetThreadStatusWatched();
00364     void slotSetThreadStatusIgnored();
00365     void slotToggleUnread();
00366     void slotToggleTotalColumn();
00367     void slotToggleSizeColumn();
00368     void slotSendQueued();
00369     void slotSendQueuedVia( QAction* item );
00370     void slotOnlineStatus();
00371     void slotUpdateOnlineStatus( GlobalSettings::EnumNetworkState::type );
00372     void slotMsgPopup(KMMessage &msg, const KUrl &aUrl, const QPoint&);
00373     void slotMarkAll();
00374     void slotFocusQuickSearch();
00375     void slotSearch();
00376     void slotSearchClosed();
00377     void slotFind();
00378     void slotIntro();
00379     void slotShowStartupFolder();
00381     void slotShowTip();
00382     void slotAntiSpamWizard();
00383     void slotAntiVirusWizard();
00384     void slotFilterLogViewer();
00385     void slotAccountWizard();
00386 
00388     void slotNextMessage();
00389     void slotNextUnreadMessage();
00390     void slotNextUnreadFolder();
00391     void slotPrevMessage();
00392     void slotPrevUnreadMessage();
00393     void slotPrevUnreadFolder();
00394 
00396     void slotDisplayCurrentMessage();
00397     void slotMsgActivated( KMMessage* );
00398 
00399     void slotShowNewFromTemplate();
00400     void slotNewFromTemplate( QAction* );
00401 
00403     void slotUpdateUndo();
00404 
00406     virtual void moveSelectedToFolder( QAction* );
00408     virtual void copySelectedToFolder( QAction* );
00410     void updateFolderMenu();
00415     void updateMarkAsReadAction();
00416 
00420     void slotEditNotifications();
00421     void slotEditKeys();
00422 
00424     void slotChangeCaption(Q3ListViewItem*);
00425     void removeDuplicates();
00426 
00428     void slotCustomReplyToMsg( const QString &tmpl );
00429     void slotCustomReplyAllToMsg( const QString &tmpl );
00430     void slotForwardMsg();
00431     void slotForwardAttachedMsg();
00432     void slotRedirectMsg();
00433     void slotCustomForwardMsg( const QString &tmpl );
00434     void slotNoQuoteReplyToMsg();
00435     void slotSubjectFilter();
00436     void slotMailingListFilter();
00437     void slotFromFilter();
00438     void slotToFilter();
00439     void slotPrintMsg();
00440     void slotCreateTodo();
00441 
00442     void slotConfigChanged();
00443 
00447     void slotFolderRemoved( KMFolder *folder );
00448 
00452     void folderClosed( KMFolder *folder );
00453 
00455     void slotShowBusySplash();
00456 
00461     void showOfflinePage();
00462 
00463     void updateVactionScriptStatus( bool active );
00464 
00465   private:
00467     QString overrideEncoding() const;
00468 
00469     void initializeIMAPActions( bool setState );
00470 
00475     KMail::ImapAccountBase* findCurrentImapAccountBase();
00476 
00481     QString findCurrentImapPath();
00482 
00484     void updateCustomTemplateMenus();
00485 
00486   private slots:
00487     void slotRequestFullSearchFromQuickSearch();
00488 
00489   private:
00490     // Message actions
00491     KAction *mTrashAction, *mDeleteAction, *mTrashThreadAction,
00492       *mDeleteThreadAction, *mSaveAsAction, *mUseAction,
00493       *mSendAgainAction, *mApplyAllFiltersAction, *mFindInMessageAction,
00494       *mSaveAttachmentsAction, *mOpenAction, *mViewSourceAction,
00495       *mFavoritesCheckMailAction,
00496       *mMoveMsgToFolderAction;
00497     // Composition actions
00498     KAction *mPrintAction,
00499       *mForwardAction, *mForwardAttachedAction,
00500       *mRedirectAction;
00501     KActionMenu *mForwardActionMenu;
00502     // Filter actions
00503     KActionMenu *mFilterMenu;
00504     KAction *mSubjectFilterAction, *mFromFilterAction, *mToFilterAction,
00505         *mListFilterAction;
00506 
00507     KAction *mNextMessageAction, *mPreviousMessageAction;
00508 
00509     // Custom template actions menu
00510     KActionMenu *mTemplateMenu;
00511     CustomTemplatesMenu *mCustomTemplateMenus;
00512 
00513     KActionMenu *mThreadStatusMenu,
00514       *mMoveActionMenu, *mCopyActionMenu, *mApplyFilterActionsMenu;
00515     KAction *mMarkThreadAsNewAction;
00516     KAction *mMarkThreadAsReadAction;
00517     KAction *mMarkThreadAsUnreadAction;
00518     KToggleAction *mToggleThreadImportantAction;
00519     KToggleAction *mToggleThreadToActAction;
00520     KToggleAction *mToggleThreadFlagAction;
00521     KToggleAction* mSizeColumnToggle;
00522 
00523     KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
00524 
00526     KToggleAction* mUnreadColumnToggle;
00527     KToggleAction* mUnreadTextToggle;
00528     KToggleAction* mTotalColumnToggle;
00529 
00530     KMail::HeaderListQuickSearch *mQuickSearchLine;
00531     KMail::FavoriteFolderView    *mFavoriteFolderView;
00532     QPointer<KMFolder> mFolder;
00533     QWidget      *mSearchAndTree;
00534     K3ListViewSearchLine *mFolderQuickSearch;
00535     KMFolderTree *mFolderTree;
00536     KMReaderWin  *mMsgView;
00537     QSplitter    *mSplitter1, *mSplitter2, *mFolderViewSplitter;
00538     KMHeaders    *mHeaders;
00539     KVBox        *mSearchAndHeaders;
00540     QWidget      *mSearchToolBar;
00541     KMFolder     *mTemplateFolder;
00542     QMenu        *mViewMenu, *mBodyPartsMenu;
00543     KAction      *mlistFilterAction;
00544     bool          mIntegrated;
00545     bool          mBeepOnNew;
00546     bool          mConfirmEmpty;
00547     QString       mStartupFolder;
00548     int           mMessageStatusId;
00549     KUrl          mUrlCurrent;
00550     QMenu        *mActMenu;
00551     QMenu        *mSendMenu;
00552     QMenu        *mFileMenu;
00553     bool          mLongFolderList;
00554     bool          mStartupDone;
00555     bool          mWasEverShown;
00556     KMMenuToFolder mMenuToFolder;
00557     int copyId, moveId, htmlId, threadId;
00558     bool mHtmlPref, mHtmlLoadExtPref, mThreadPref,
00559       mFolderHtmlPref, mFolderHtmlLoadExtPref, mFolderThreadPref,
00560       mFolderThreadSubjPref, mReaderWindowActive, mReaderWindowBelow;
00561     bool mEnableFavoriteFolderView;
00562     bool mEnableFolderQuickSearch;
00563     bool mEnableQuickSearch;
00564 
00565     //  QPopupMenu *mMessageMenu;
00566     KMail::SearchWindow *mSearchWin;
00567 
00568     KAction *mNewFolderAction, *mModifyFolderAction, *mRemoveFolderAction,
00569       *mExpireFolderAction, *mCompactFolderAction, *mRefreshFolderAction,
00570       *mEmptyFolderAction, *mMarkAllAsReadAction, *mFolderMailingListPropertiesAction,
00571       *mFolderShortCutCommandAction, *mTroubleshootFolderAction, *mRemoveDuplicatesAction,
00572       *mTroubleshootMaildirAction, *mPostToMailinglistAction;
00573     KToggleAction *mPreferHtmlAction, *mPreferHtmlLoadExtAction,
00574       *mThreadMessagesAction, *mThreadBySubjectAction;
00575     KToggleAction *mFolderAction, *mHeaderAction, *mMimeAction;
00576 
00577     QTimer *menutimer;
00578     QTimer *mShowBusySplashTimer;
00579 
00580     QPointer<KMail::Vacation> mVacation;
00581 #if !defined(NDEBUG)
00582     QPointer<KMail::SieveDebugDialog> mSieveDebugDialog;
00583 #endif
00584     KActionCollection *mActionCollection;
00585     QAction *mToolbarActionSeparator;
00586     QAction *mMessageTagToolbarActionSeparator;
00587     QVBoxLayout *mTopLayout;
00588     bool mDestructed, mForceJumpToUnread, mShowingOfflineScreen;
00589     QList<QAction*> mFilterMenuActions;
00590     QList<QAction*> mFilterTBarActions;
00591     QList<KMMetaFilterActionCommand*> mFilterCommands;
00592     QHash<QString,FolderShortcutCommand*> mFolderShortcutCommands;
00593     QPointer<KMail::FolderJob> mJob;
00594 
00595     QList<MessageTagPtrPair> mMessageTagMenuActions;
00596     QList<QAction*> mMessageTagTBarActions;
00597     QSignalMapper *mMessageTagToggleMapper;
00598 
00599     KMSystemTray *mSystemTray;
00600     KConfig *mConfig;
00601     KXMLGUIClient *mGUIClient;
00602 
00603     KMail::MessageActions *mMsgActions;
00604 
00605     bool mOpenedImapFolder;
00606 
00607     KMail::StatusBarLabel *mVacationScriptIndicator;
00608     bool mVacationIndicatorActive;
00609 };
00610 
00611 #endif
00612 

kmail

Skip menu "kmail"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdepim

Skip menu "kdepim"
  • akonadi
  •   clients
  •   kabc
  •   kcal
  •   kcm
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • kmobiletools
  • knode
  • knotes
  • kontact
  • kontactinterfaces
  • korganizer
  •   korgac
  • kpilot
  • ktimetracker
  • libkdepim
  • libkholidays
  • libkleo
  • libkpgp
  • maildir
Generated for kdepim by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal