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

kmail

  • sources
  • kde-4.14
  • kdepim
  • kmail
kmmainwidget.h
Go to the documentation of this file.
1 /* -*- mode: C++; c-file-style: "gnu" -*-
2  This file is part of KMail, the KDE mail client.
3  Copyright (c) 2002 Don Sanders <sanders@kde.org>
4 
5  Based on the work of Stefan Taferner <taferner@kde.org>
6 
7  KMail is free software; you can redistribute it and/or modify it
8  under the terms of the GNU General Public License, version 2, as
9  published by the Free Software Foundation.
10 
11  KMail is distributed in the hope that it will be useful, but
12  WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License along
17  with this program; if not, write to the Free Software Foundation, Inc.,
18  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20 
21 #ifndef __KMMAINWIDGET
22 #define __KMMAINWIDGET
23 
24 #include "kmail_export.h"
25 #include "kmreaderwin.h" //for inline actions
26 #include "kmkernel.h" // for access to config
27 
28 #include "foldertreewidget.h"
29 
30 #include <kxmlguiclient.h>
31 #include "messageactions.h"
32 #include <kactioncollection.h>
33 #include <foldercollection.h>
34 
35 #include <QPointer>
36 #include <QTimer>
37 #include <akonadi/kmime/standardmailactionmanager.h>
38 #include <akonadi/tag.h>
39 #include <messagelist/core/view.h>
40 
41 namespace MailTransport {
42 class Transport;
43 }
44 namespace Akonadi {
45 class Tag;
46 }
47 
48 namespace KMime {
49 class Message;
50 }
51 class KUrl;
52 class QVBoxLayout;
53 class QSplitter;
54 class KMLaunchExternalComponent;
55 class DisplayMessageFormatActionMenu;
56 class KAction;
57 class KActionMenu;
58 class KToggleAction;
59 class KMMetaFilterActionCommand;
60 class CollectionPane;
61 class KMCommand;
62 class KMMoveCommand;
63 class KRecentFilesAction;
64 class ManageShowCollectionProperties;
65 class KActionMenuTransport;
66 template <typename T, typename S> class QMap;
67 
68 namespace KIO {
69 class Job;
70 }
71 
72 namespace KMail {
73 class SearchWindow;
74 class VacationScriptIndicatorWidget;
75 class TagActionManager;
76 class FolderShortcutActionManager;
77 }
78 
79 namespace KSieveUi {
80 class SieveDebugDialog;
81 class Vacation;
82 class ManageSieveScriptsDialog;
83 class VacationManager;
84 }
85 
86 namespace MailCommon {
87 class FolderSelectionDialog;
88 class FavoriteCollectionWidget;
89 }
90 
91 class KMAIL_EXPORT KMMainWidget : public QWidget
92 {
93  Q_OBJECT
94 
95 public:
96  typedef QList<KMMainWidget*> PtrList;
97 
98  KMMainWidget(QWidget *parent, KXMLGUIClient *aGUIClient,
99  KActionCollection *actionCollection,
100  KSharedConfig::Ptr config = KMKernel::self()->config() );
101  virtual ~KMMainWidget();
102  void destruct();
103 
105  void readPreConfig();
106 
108  void readFolderConfig();
109 
111  void writeFolderConfig();
112 
114  void readConfig();
115 
117  void writeConfig(bool force = true);
118 
119  void writeReaderConfig();
120 
122  KMReaderWin* messageView() const { return mMsgView; }
124  CollectionPane* messageListPane() const { return mMessagePane; }
125 
126  QSharedPointer<MailCommon::FolderCollection> currentFolder() const;
127 
128  static void cleanup();
129  QAction *action( const QString &name ) { return mActionCollection->action( name ); }
130  KActionMenu *filterMenu() const { return mFilterMenu; }
131  KActionMenu *mailingListActionMenu() const { return mMsgActions->mailingListActionMenu(); }
132  KAction *editAction() const { return mMsgActions->editAction(); }
133  KAction *sendAgainAction() const { return mSendAgainAction; }
134  KAction *sendQueuedAction() const { return mSendQueued; }
135  KActionMenuTransport *sendQueueViaMenu() const { return mSendActionMenu; }
136 
137  KMail::MessageActions *messageActions() const { return mMsgActions; }
138 
143  static const PtrList *mainWidgetList();
144 
145  QWidget *vacationScriptIndicator() const;
146  void updateVacationScriptStatus();
147 
148  MailCommon::FolderTreeView *folderTreeView() const {
149  return mFolderTreeWidget->folderTreeView();
150  }
151 
153  KXMLGUIClient* guiClient() const { return mGUIClient; }
154 
155  KMail::TagActionManager *tagActionManager() const;
156 
157  KMail::FolderShortcutActionManager *folderShortcutActionManager() const;
158  void savePaneSelection();
159 
160  void updatePaneTagComboBox();
161 
162  void clearViewer();
163 
164  void addRecentFile(const KUrl& mUrl);
165  void updateQuickSearchLineText();
166 
167  void populateMessageListStatusFilterCombo();
168 public slots:
169  // Moving messages around
174  void slotMoveSelectedMessageToFolder();
175 
176  // Copying messages around
177 
182  void slotCopySelectedMessagesToFolder();
183 
187  void slotTrashSelectedMessages();
188 
189  void slotCheckMail();
190 
191  void slotCheckMailOnStartup();
192 
197  void folderSelected( const Akonadi::Collection & col );
198 
202  void slotMessageActivated( const Akonadi::Item & );
203 
207  void slotMessageSelected( const Akonadi::Item & );
208 
209  void slotItemsFetchedForActivation( KMCommand* command );
210  void slotMessageStatusChangeRequest( const Akonadi::Item &, const Akonadi::MessageStatus &, const Akonadi::MessageStatus & );
211 
212 
213  void slotReplaceMsgByUnencryptedVersion();
214 
218  void updateMessageMenu();
219 
223  void startUpdateMessageActionsTimer();
224 
226  void updateMessageActions( bool fast = false );
227  void updateMessageActionsDelayed();
228 
230  void clearFilterActions();
231  void initializeFilterActions();
232 
233 
235  void slotEditVacation(const QString &serverName = QString());
236 
239  void slotUpdateMessageTagList( const Akonadi::Tag &tag );
240  void slotSelectMoreMessageTagList();
241 
249  QList<KActionCollection*> actionCollections() const;
250 
251 
252  KAction *akonadiStandardAction( Akonadi::StandardActionManager::Type type );
253  KAction *akonadiStandardAction( Akonadi::StandardMailActionManager::Type type );
254  Akonadi::StandardMailActionManager *standardMailActionManager() const { return mAkonadiStandardActionManager; }
255 
256  void refreshMessageListSelection();
257 
258  void slotStartCheckMail();
259  void slotEndCheckMail();
260 
261  void slotRemoveDuplicates();
262 
263  void slotSelectCollectionFolder( const Akonadi::Collection & col );
264 
265  void restoreCollectionFolderViewConfig();
266 signals:
267  void messagesTransfered( bool );
268  void captionChangeRequest( const QString &caption );
269  void recreateGui();
270 
271 protected:
272  void setupActions();
273  void createWidgets();
274  void deleteWidgets();
275  void layoutSplitters();
276  void newFromTemplate( const Akonadi::Item& );
277  void moveSelectedMessagesToFolder( const Akonadi::Collection & dest );
278  void copySelectedMessagesToFolder( const Akonadi::Collection& dest );
279 
280 
281  virtual void showEvent( QShowEvent *event );
282 
283  KActionCollection *actionCollection() const { return mActionCollection; }
284 
290  KSharedConfig::Ptr config();
291 
292 protected slots:
293  void updateFileMenu();
294  void slotHelp();
295  void slotFilter();
296  void slotManageSieveScripts();
297  void slotCompose();
298  void slotPostToML();
299  void slotExpireFolder();
300  void slotExpireAll();
301  void slotArchiveFolder();
302  void slotRemoveFolder();
303  void slotEmptyFolder();
304  void slotClearCurrentFolder();
305  void slotAddFavoriteFolder();
306  void slotShowSelectedFolderInPane();
307  void slotOverrideHtmlLoadExt();
308  void slotMessageQueuedOrDrafted();
309  void slotUseTemplate();
310  void slotDeleteMsg( bool confirmDelete = true ); // completely delete message
311  void slotTrashThread();
312  void slotDeleteThread( bool confirmDelete = true ); // completely delete thread
313  void slotUndo();
314  void slotReadOn();
315  void slotSaveMsg();
316  void slotOpenMsg();
317  void slotSaveAttachments();
318  void slotJumpToFolder();
319  void slotResendMsg();
320  void slotCheckVacation();
321  void slotDebugSieve();
322  void slotApplyFilters();
323  void slotApplyFiltersOnFolder();
324  void slotExpandThread();
325  void slotExpandAllThreads();
326  void slotCollapseThread();
327  void slotCollapseAllThreads();
328  void slotSetThreadStatusUnread();
329  void slotSetThreadStatusRead();
330  void slotSetThreadStatusImportant();
331  void slotSetThreadStatusToAct();
332  void slotSetThreadStatusWatched();
333  void slotSetThreadStatusIgnored();
334  void slotSendQueued();
335  void slotSendQueuedVia(MailTransport::Transport*transport);
336  void slotOnlineStatus();
337  void slotUpdateOnlineStatus( GlobalSettings::EnumNetworkState::type );
338  void slotMessagePopup(const Akonadi::Item& ,const KUrl&,const KUrl &imageUrl,const QPoint& );
339  void slotContactSearchJobForMessagePopupDone( KJob *job );
340  void slotMarkAll();
341  void slotFocusQuickSearch();
342  bool slotSearch();
343  void slotIntro();
344  void slotShowStartupFolder();
345 
347  void slotSelectNextMessage();
348  void slotExtendSelectionToNextMessage();
349  void slotSelectNextUnreadMessage();
350  void slotSelectPreviousMessage();
351  void slotExtendSelectionToPreviousMessage();
352  void slotSelectPreviousUnreadMessage();
353  void slotFocusOnNextMessage();
354  void slotFocusOnPrevMessage();
355  void slotSelectFirstMessage();
356  void slotSelectLastMessage();
357  void slotSelectFocusedMessage();
358 
359  void slotNextUnreadFolder();
360  void slotPrevUnreadFolder();
361 
363  void slotDisplayCurrentMessage();
364 
365  void slotShowNewFromTemplate();
366  void slotDelayedShowNewFromTemplate( KJob* );
367  void slotNewFromTemplate( QAction* );
368 
370  void slotUpdateUndo();
371 
373  void updateFolderMenu();
374 
378  void slotEditNotifications();
379 
381  void slotCustomReplyToMsg( const QString &tmpl );
382  void slotCustomReplyAllToMsg( const QString &tmpl );
383  void slotForwardInlineMsg();
384  void slotForwardAttachedMsg();
385  void slotRedirectMsg();
386  void slotCustomForwardMsg( const QString &tmpl );
387  void slotSubjectFilter();
388  void slotFromFilter();
389  void slotToFilter();
390 
391  void slotConfigChanged();
392 
394  void slotShowBusySplash();
395 
400  void showOfflinePage();
401  void showResourceOfflinePage();
402  void updateVacationScriptStatus(bool active , const QString &serverName = QString());
403 
404 
405  void slotItemAdded( const Akonadi::Item &, const Akonadi::Collection& col);
406  void slotItemRemoved( const Akonadi::Item & );
407  void slotItemMoved( const Akonadi::Item &item, const Akonadi::Collection &from, const Akonadi::Collection &to );
408  void slotCollectionStatisticsChanged( const Akonadi::Collection::Id, const Akonadi::CollectionStatistics& );
409 
410  void slotAkonadiStandardActionUpdated();
411  void slotCollectionChanged( const Akonadi::Collection&, const QSet<QByteArray>& );
412  void slotCreateNewTab( bool );
413  void slotUpdateActionsAfterMailChecking();
414  void slotCreateAddressBookContact();
415  void slotOpenRecentMsg(const KUrl& url);
416 
417 private:
418  void checkAkonadiServerManagerState();
419  void updateHtmlMenuEntry();
420 
421  void updateMoveAction( const Akonadi::CollectionStatistics& statistic );
422  void updateMoveAction( bool hasUnreadMails, bool hasMails );
423 
424  void updateAllToTrashAction(int statistics);
425 
427  QString overrideEncoding() const;
428 
429  void moveMessageSelected( MessageList::Core::MessageItemSetReference ref, const Akonadi::Collection &dest, bool confirmOnDeletion = true );
430 
431  void copyMessageSelected( const QList<Akonadi::Item> &selectMsg, const Akonadi::Collection &dest );
432 
433 
439  void trashMessageSelected( MessageList::Core::MessageItemSetReference ref );
444  void setMessageSetStatus( const QList<Akonadi::Item> &select,
445  const Akonadi::MessageStatus &status,
446  bool toggle
447  );
452  void toggleMessageSetTag( const QList<Akonadi::Item> &select, const Akonadi::Tag &tag );
456  void setCurrentThreadStatus( const Akonadi::MessageStatus &status, bool toggle );
457 
458  void applyFilters( const QList< Akonadi::Item >& selectedMessages );
459 
465  MailCommon::FolderSelectionDialog* moveOrCopyToDialog();
466 
471  MailCommon::FolderSelectionDialog* selectFromAllFoldersDialog();
472 
473 
478  void refreshFavoriteFoldersViewProperties();
479 
480  void openFilterDialog(const QByteArray &field, const QString &value);
481 
482  void showMessagePopup(const Akonadi::Item&msg ,const KUrl&aUrl,const KUrl &imageUrl,const QPoint& aPoint, bool contactAlreadyExists, bool uniqueContactFound);
483 
484 
485 private slots:
486  void slotMoveMessageToTrash();
490  void slotTrashMessagesCompleted( KMMoveCommand *command );
491 
495  void slotMoveMessagesCompleted( KMMoveCommand *command );
496 
500  void slotCopyMessagesCompleted( KMCommand *command );
501 
502  void slotRequestFullSearchFromQuickSearch();
503  void slotFolderChanged( const Akonadi::Collection& );
504  void slotCollectionFetched( int collectionId );
505 
506  void itemsReceived(const Akonadi::Item::List &list );
507  void itemsFetchDone( KJob *job );
508 
509  void slotServerSideSubscription();
510  void slotFetchItemsForFolderDone(KJob*job);
511  void slotServerStateChanged(Akonadi::ServerManager::State state);
512  void slotArchiveMails();
513  void slotChangeDisplayMessageFormat(MessageViewer::Viewer::DisplayFormatMessage format);
514 
515  void slotCollectionRemoved(const Akonadi::Collection &col);
516 private:
517  // Message actions
518  KAction *mDeleteAction, *mTrashThreadAction,
519  *mDeleteThreadAction, *mSaveAsAction, *mUseAction,
520  *mSendAgainAction, *mApplyAllFiltersAction,
521  *mSaveAttachmentsAction, *mOpenAction,
522  *mMoveMsgToFolderAction, *mCollectionProperties, *mSendQueued;
523  KAction *mArchiveAction;
524  KActionMenuTransport *mSendActionMenu;
525  // Filter actions
526  KActionMenu *mFilterMenu;
527  KAction *mExpireConfigAction;
528  KAction *mApplyFiltersOnFolder;
529  // Custom template actions menu
530  KActionMenu *mTemplateMenu;
531 
532  KActionMenu *mThreadStatusMenu, *mApplyFilterActionsMenu;
533  KAction *mCopyActionMenu;
534  KAction *mMoveActionMenu;
535  KAction *mMarkThreadAsReadAction;
536  KAction *mMarkThreadAsUnreadAction;
537  KToggleAction *mToggleThreadImportantAction;
538  KToggleAction *mToggleThreadToActAction;
539 
540  KToggleAction *mWatchThreadAction, *mIgnoreThreadAction;
541 
542  MailCommon::FavoriteCollectionWidget *mFavoriteCollectionsView;
543  Akonadi::FavoriteCollectionsModel *mFavoritesModel;
544  QWidget *mSearchAndTree;
545  KMReaderWin *mMsgView;
546  QSplitter *mSplitter1, *mSplitter2, *mFolderViewSplitter;
547  Akonadi::Collection mTemplateFolder;
548  bool mLongFolderList;
549  bool mStartupDone;
550  bool mWasEverShown;
551  bool mHtmlGlobalSetting, mHtmlLoadExtGlobalSetting, mFolderHtmlLoadExtPreference,
552  mReaderWindowActive, mReaderWindowBelow;
553  bool mEnableFavoriteFolderView;
554  bool mEnableFolderQuickSearch;
555 
556  QPointer<KMail::SearchWindow> mSearchWin;
557 
558  KAction *mExpireFolderAction,
559  *mFolderMailingListPropertiesAction,
560  *mShowFolderShortcutDialogAction,
561  *mArchiveFolderAction, *mMessageNewList;
562  KToggleAction *mPreferHtmlLoadExtAction;
563 
564  QTimer *menutimer;
565  QTimer *mShowBusySplashTimer;
566 
567  KSieveUi::VacationManager *mVacationManager;
568 #if !defined(NDEBUG)
569  QPointer<KSieveUi::SieveDebugDialog> mSieveDebugDialog;
570 #endif
571  KActionCollection *mActionCollection;
572  QAction *mToolbarActionSeparator;
573  QVBoxLayout *mTopLayout;
574  bool mDestructed;
575  QList<QAction*> mFilterMenuActions;
576  QList<QAction*> mFilterTBarActions;
577  QList<KMMetaFilterActionCommand*> mFilterCommands;
578 
579  KMail::TagActionManager *mTagActionManager;
580  KMail::FolderShortcutActionManager *mFolderShortcutActionManager;
581  KSharedConfig::Ptr mConfig;
582  KXMLGUIClient *mGUIClient;
583 
584  KMail::MessageActions *mMsgActions;
585  Akonadi::StandardMailActionManager *mAkonadiStandardActionManager;
586  CollectionPane *mMessagePane;
587  QSharedPointer<MailCommon::FolderCollection> mCurrentFolder;
588 
589  MailCommon::FolderTreeWidget *mFolderTreeWidget;
590 
591  KMail::VacationScriptIndicatorWidget *mVacationScriptIndicator;
592  bool mVacationIndicatorActive;
593  bool mGoToFirstUnreadMessageInSelectedFolder;
594  MessageList::Core::PreSelectionMode mPreSelectionMode;
595 
596  QTimer mCheckMailTimer;
597 
598  QPointer<MailCommon::FolderSelectionDialog> mMoveOrCopyToDialog;
599  QPointer<MailCommon::FolderSelectionDialog> mSelectFromAllFoldersDialog;
600  KAction *mServerSideSubscription;
601  KRecentFilesAction *mOpenRecentAction;
602  QPointer<KSieveUi::ManageSieveScriptsDialog> mManageSieveDialog;
603  KAction *mQuickSearchAction;
604  DisplayMessageFormatActionMenu *mDisplayMessageFormatMenu;
605  MessageViewer::Viewer::DisplayFormatMessage mFolderDisplayFormatPreference;
606  KAction *mSearchMessages;
607  KMLaunchExternalComponent *mLaunchExternalComponent;
608  ManageShowCollectionProperties *mManageShowCollectionProperties;
609  KAction *mShowIntroductionAction;
610 };
611 
612 #endif
613 
KMMainWidget::action
QAction * action(const QString &name)
Definition: kmmainwidget.h:129
QWidget
KMMainWidget::editAction
KAction * editAction() const
Definition: kmmainwidget.h:132
KXMLGUIClient
kmail_export.h
QByteArray
KMReaderWin
This class implements a "reader window", that is a window used for reading or viewing messages...
Definition: kmreaderwin.h:49
QMap
Definition: kmmainwidget.h:66
KMail::MessageActions
Manages common actions that can be performed on one or more messages.
Definition: messageactions.h:50
QPointer< KMail::SearchWindow >
KMMainWidget::messageListPane
CollectionPane * messageListPane() const
Access to the header list pane.
Definition: kmmainwidget.h:124
KMMoveCommand
Definition: kmcommands.h:523
KMMainWidget::messageActions
KMail::MessageActions * messageActions() const
Definition: kmmainwidget.h:137
QPoint
from
QString from() const
KMKernel::self
static KMKernel * self()
normal control stuff
Definition: kmkernel.cpp:1471
kmreaderwin.h
KMail::TagActionManager
Creates actions related to the existing Akonadi tags and plugs them into the GUI. ...
Definition: tagactionmanager.h:55
KMMainWidget::folderTreeView
MailCommon::FolderTreeView * folderTreeView() const
Definition: kmmainwidget.h:148
messageactions.h
KActionMenuTransport
Definition: kactionmenutransport.h:27
KMMainWidget::PtrList
QList< KMMainWidget * > PtrList
Definition: kmmainwidget.h:96
KMMetaFilterActionCommand
Definition: kmcommands.h:476
KMMainWidget::actionCollection
KActionCollection * actionCollection() const
Definition: kmmainwidget.h:283
QWidget::showEvent
virtual void showEvent(QShowEvent *event)
KMCommand
Small helper structure which encapsulates the KMMessage created when creating a reply, and.
Definition: kmcommands.h:48
QTimer
QSharedPointer< MailCommon::FolderCollection >
QShowEvent
KMMainWidget::sendAgainAction
KAction * sendAgainAction() const
Definition: kmmainwidget.h:133
to
QString to() const
QVBoxLayout
KMMainWidget
Definition: kmmainwidget.h:91
QSet
QString
QList
ManageShowCollectionProperties
Definition: manageshowcollectionproperties.h:33
KMMainWidget::sendQueueViaMenu
KActionMenuTransport * sendQueueViaMenu() const
Definition: kmmainwidget.h:135
KMLaunchExternalComponent
Definition: kmlaunchexternalcomponent.h:23
KMAIL_EXPORT
#define KMAIL_EXPORT
Definition: kmail_export.h:35
QSplitter
kmkernel.h
KActionMenu
QAction
KMail::FolderShortcutActionManager
Definition: foldershortcutactionmanager.h:61
KMMainWidget::filterMenu
KActionMenu * filterMenu() const
Definition: kmmainwidget.h:130
CollectionPane
Definition: collectionpane.h:25
KMMainWidget::sendQueuedAction
KAction * sendQueuedAction() const
Definition: kmmainwidget.h:134
KJob
KMMainWidget::guiClient
KXMLGUIClient * guiClient() const
Returns the XML GUI client.
Definition: kmmainwidget.h:153
KMMainWidget::mailingListActionMenu
KActionMenu * mailingListActionMenu() const
Definition: kmmainwidget.h:131
KMail::VacationScriptIndicatorWidget
Definition: vacationscriptindicatorwidget.h:57
KMMainWidget::standardMailActionManager
Akonadi::StandardMailActionManager * standardMailActionManager() const
Definition: kmmainwidget.h:254
DisplayMessageFormatActionMenu
Definition: displaymessageformatactionmenu.h:24
KMMainWidget::messageView
KMReaderWin * messageView() const
Easy access to main components of the window.
Definition: kmmainwidget.h:122
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:34:33 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kmail

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

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal