• 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
kmkernel.h
Go to the documentation of this file.
1 // -*- mode: C++; c-file-style: "gnu" -*-
2 
3 #ifndef _KMKERNEL_H
4 #define _KMKERNEL_H
5 
6 #include "interfaces/mailinterfaces.h"
7 
8 #include <QList>
9 #include <QObject>
10 #include <QPointer>
11 #include <QDBusObjectPath>
12 #include <Solid/Networking>
13 
14 #include <kurl.h>
15 
16 #include "kmail_export.h"
17 #include "settings/globalsettings.h"
18 #include <kcomponentdata.h>
19 #include <akonadi/servermanager.h>
20 #include "messageviewer/viewer/viewer.h"
21 #include "progresswidget/progressmanager.h"
22 
23 
24 #define kmkernel KMKernel::self()
25 #define kmconfig KMKernel::config()
26 
27 
28 class QAbstractItemModel;
29 namespace Akonadi {
30 class Collection;
31 class ChangeRecorder;
32 class EntityTreeModel;
33 class EntityMimeTypeFilterModel;
34 }
35 
36 namespace KIO {
37 class Job;
38 }
39 
40 
41 namespace MessageComposer {
42 class MessageSender;
43 }
44 namespace PimCommon {
45 class AutoCorrection;
46 class StorageServiceManager;
47 }
48 
53 namespace KMail {
54 class MailServiceImpl;
55 class UndoStack;
56 class KMSystemTray;
57 }
58 using KMail::MailServiceImpl;
59 using KMail::UndoStack;
60 namespace MessageComposer {
61 class AkonadiSender;
62 }
63 
64 namespace KPIMIdentities {
65 class Identity;
66 class IdentityManager;
67 }
68 
69 namespace MailCommon {
70 class Kernel;
71 class FolderCollection;
72 class FolderCollectionMonitor;
73 class JobScheduler;
74 class KMFilterDialog;
75 }
76 
77 class KComponentData;
78 class QTimer;
79 class KMMainWin;
80 class KMainWindow;
81 class KMMainWidget;
82 class ConfigureDialog;
83 class FolderArchiveManager;
84 
105 class KMAIL_EXPORT KMKernel : public QObject, public MailCommon::IKernel, public MailCommon::ISettings, public MailCommon::IFilter
106 {
107  Q_OBJECT
108  Q_CLASSINFO("D-Bus Interface", "org.kde.kmail.kmail")
109 
110 public:
111  explicit KMKernel (QObject *parent=0);
112  ~KMKernel ();
113 
118 public Q_SLOTS:
119 
120  Q_SCRIPTABLE void checkMail();
121  Q_SCRIPTABLE void openReader() { openReader( false ); }
122 
127  Q_SCRIPTABLE void setSystrayIconNotificationsEnabled( bool enabled );
128 
133  Q_SCRIPTABLE void pauseBackgroundJobs();
134 
139  Q_SCRIPTABLE void resumeBackgroundJobs();
140 
145  Q_SCRIPTABLE void stopNetworkJobs();
146 
151  Q_SCRIPTABLE void resumeNetworkJobs();
152 
153  Q_SCRIPTABLE QStringList accounts();
154 
155  Q_SCRIPTABLE void makeResourceOnline(MessageViewer::Viewer::ResourceOnlineMode mode);
156 
162  Q_SCRIPTABLE void checkAccount( const QString & account );
163 
164  Q_SCRIPTABLE bool selectFolder( const QString & folder );
165 
166  Q_SCRIPTABLE bool canQueryClose();
167 
168  Q_SCRIPTABLE bool handleCommandLine( bool noArgsOpensReader );
169 
186  Q_SCRIPTABLE int openComposer(const QString & to,
187  const QString & cc,
188  const QString & bcc,
189  const QString & subject,
190  const QString & body,
191  bool hidden,
192  const QString & messageFile,
193  const QStringList & attachmentPaths,
194  const QStringList & customHeaders , const QString &replyTo = QString(), const QString &inReplyTo = QString());
195 
219  Q_SCRIPTABLE int openComposer( const QString & to,
220  const QString & cc,
221  const QString & bcc,
222  const QString & subject,
223  const QString & body,
224  bool hidden,
225  const QString & attachName,
226  const QByteArray & attachCte,
227  const QByteArray &attachData,
228  const QByteArray & attachType,
229  const QByteArray & attachSubType,
230  const QByteArray & attachParamAttr,
231  const QString & attachParamValue,
232  const QByteArray & attachContDisp,
233  const QByteArray & attachCharset,
234  unsigned int identity );
235 
249  Q_SCRIPTABLE QDBusObjectPath openComposer( const QString & to,
250  const QString & cc,
251  const QString & bcc,
252  const QString & subject,
253  const QString & body,
254  bool hidden );
255 
272  Q_SCRIPTABLE QDBusObjectPath newMessage( const QString & to,
273  const QString & cc,
274  const QString & bcc,
275  bool hidden,
276  bool useFolderId,
277  const QString & messageFile,
278  const QString & attachURL );
279 
280  Q_SCRIPTABLE bool showMail( qint64 serialNumber );
281 
282  Q_SCRIPTABLE int viewMessage( const QString & messageFile );
283 
284  Q_SCRIPTABLE void updateConfig();
285 
286  Q_SCRIPTABLE void showFolder(const QString &collectionId);
287 
288  Q_SCRIPTABLE void reloadFolderArchiveConfig();
289 
295 public:
296  void checkMailOnStartup();
297 
303  static bool askToGoOnline();
304 
309  static bool isOffline();
310 
313  static KMKernel *self();
314  /*reimp*/ KSharedConfig::Ptr config();
315  /*reimp*/ void syncConfig();
316 
317  void init();
318  void setupDBus();
319 
320  /*reimp*/ Akonadi::ChangeRecorder *folderCollectionMonitor() const;
321 
325  Akonadi::EntityTreeModel *entityTreeModel() const;
326 
331  /*reimp*/ Akonadi::EntityMimeTypeFilterModel *collectionModel() const;
332 
333  void recoverDeadLetters();
334  void closeAllKMailWindows();
335  void cleanup(void);
336  void quit();
337  bool doSessionManagement();
338  bool firstInstance() const { return the_firstInstance; }
339  void setFirstInstance(bool value) { the_firstInstance = value; }
340  void action(bool mailto, bool check, const QString &to, const QString &cc,
341  const QString &bcc, const QString &subj, const QString &body,
342  const KUrl &messageFile, const KUrl::List &attach,
343  const QStringList &customHeaders , const QString &replyTo, const QString &inReplyTo);
344 
345  bool isImapFolder(const Akonadi::Collection& , bool &isOnline) const;
346 
347  //sets online status for akonadi accounts. true for online, false for offline
348  void setAccountStatus(bool);
349 
350  const KComponentData &xmlGuiInstance() { return mXmlGuiInstance; }
351  void setXmlGuiInstance( const KComponentData &instance ) { mXmlGuiInstance = instance; }
352 
353  UndoStack *undoStack() const { return the_undoStack; }
354  MessageComposer::MessageSender *msgSender();
355 
356  /*reimp*/ void openFilterDialog(bool createDummyFilter = true);
357  /*reimp*/ void createFilter(const QByteArray& field, const QString& value);
358 
360  /*reimp*/ KPIMIdentities::IdentityManager *identityManager();
361 
362  /*reimp*/ MailCommon::JobScheduler* jobScheduler() const { return mJobScheduler; }
363 
365  void expireAllFoldersNow();
366 
367  bool firstStart() const { return the_firstStart; }
368  QString previousVersion() const { return the_previousVersion; }
369  bool shuttingDown() const { return the_shuttingDown; }
370  void setShuttingDown(bool flag) { the_shuttingDown = flag; }
371 
375  static QString localDataPath();
376 
381  bool haveSystemTrayApplet() const;
382 
383  QTextCodec *networkCodec() const { return mNetCodec; }
384 
386  KMainWindow* mainWin();
387 
389  KMMainWidget *getKMMainWidget();
390 
395  Akonadi::Collection::List allFolders() const;
396  //
397  void selectCollectionFromId( const Akonadi::Collection::Id id);
398 
399  void raise();
400 
401  void stopAgentInstance();
402 
403  //ISettings
404  /*reimp*/ bool showPopupAfterDnD();
405 
406  /*reimp*/ bool excludeImportantMailFromExpiry();
407 
408  /*reimp*/ qreal closeToQuotaThreshold();
409 
410  /*reimp*/ Akonadi::Collection::Id lastSelectedFolder();
411  /*reimp*/ void setLastSelectedFolder( const Akonadi::Collection::Id &col );
412 
413  /*reimp*/ QStringList customTemplates();
414 
415  void checkFolderFromResources( const Akonadi::Collection::List& collectionList );
416 
417  const QAbstractItemModel* treeviewModelSelection();
418 
419  void savePaneSelection();
420 
421  void updatePaneTagComboBox();
422 
423 
424  PimCommon::AutoCorrection* composerAutoCorrection();
425 
426  void toggleSystemTray();
427  FolderArchiveManager *folderArchiveManager() const;
428  PimCommon::StorageServiceManager *storageServiceManager() const;
429 
430  bool allowToDebugBalooSupport() const;
431 
432 protected:
433  void agentInstanceBroken( const Akonadi::AgentInstance& instance );
434 
435 
436 public slots:
437 
438  /*reimp*/ void updateSystemTray();
439 
442  void updatedTemplates();
443 
445  void dumpDeadLetters();
446 
452  void slotRequestConfigSync();
453 
457  void slotSyncConfig();
458 
459  void slotShowConfigurationDialog();
460  void slotRunBackgroundTasks();
461 
462  void slotConfigChanged();
463 
464 signals:
465  void configChanged();
466  void onlineStatusChanged( GlobalSettings::EnumNetworkState::type );
467  void customTemplatesChanged();
468 
469  void startCheckMail();
470  void endCheckMail();
471 
472 private slots:
474  void transportRemoved( int id, const QString &name );
476  void transportRenamed( int id, const QString &oldName, const QString &newName );
477  void itemDispatchStarted();
478  void instanceStatusChanged( const Akonadi::AgentInstance &);
479 
480  void akonadiStateChanged( Akonadi::ServerManager::State );
481  void slotProgressItemCompletedOrCanceled( KPIM::ProgressItem * item);
482  void slotInstanceError(const Akonadi::AgentInstance& instance, const QString & message);
483  void slotInstanceWarning(const Akonadi::AgentInstance&instance, const QString& message);
484  void slotCollectionRemoved(const Akonadi::Collection& col);
485  void slotDeleteIdentity( uint identity);
486  void slotInstanceRemoved(const Akonadi::AgentInstance&);
487  void slotSystemNetworkStatusChanged( Solid::Networking::Status );
488  void slotCollectionChanged(const Akonadi::Collection &, const QSet<QByteArray> &set);
489 
490  void slotCheckAccount(Akonadi::ServerManager::State state);
491 private:
492  void verifyAccount();
493  void resourceGoOnLine();
494  void openReader( bool onlyCheck );
495  QSharedPointer<MailCommon::FolderCollection> currentFolderCollection();
496 
497  UndoStack *the_undoStack;
498  mutable KPIMIdentities::IdentityManager *mIdentityManager;
499  MessageComposer::AkonadiSender *the_msgSender;
502  QString the_previousVersion;
504  bool the_firstStart;
506  bool the_shuttingDown;
508  bool the_firstInstance;
509 
510  KSharedConfig::Ptr mConfig;
511  QTextCodec *mNetCodec;
512  KComponentData mXmlGuiInstance;
513  ConfigureDialog *mConfigureDialog;
514 
515  QTimer *mBackgroundTasksTimer;
516  MailCommon::JobScheduler* mJobScheduler;
517  // temporary mainwin
518  KMMainWin *mWin;
519  MailServiceImpl *mMailService;
520 
521  Solid::Networking::Status mSystemNetworkStatus;
522 
523  KMail::KMSystemTray* mSystemTray;
524  QHash<QString, KPIM::ProgressItem::CryptoStatus> mResourceCryptoSettingCache;
525  MailCommon::FolderCollectionMonitor *mFolderCollectionMonitor;
526  Akonadi::EntityTreeModel *mEntityTreeModel;
527  Akonadi::EntityMimeTypeFilterModel *mCollectionModel;
528 
530  QList<QString> mResourcesBeingChecked;
531 
532  QPointer<MailCommon::KMFilterDialog> mFilterEditDialog;
533  PimCommon::AutoCorrection *mAutoCorrection;
534  FolderArchiveManager *mFolderArchiveManager;
535  PimCommon::StorageServiceManager *mStorageManager;
536  bool mDebugBaloo;
537 };
538 
539 #endif // _KMKERNEL_H
globalsettings.h
KMKernel::networkCodec
QTextCodec * networkCodec() const
Definition: kmkernel.h:383
kmail_export.h
KMMainWin
Definition: kmmainwin.h:30
QByteArray
KMKernel
Central point of coordination in KMail.
Definition: kmkernel.h:105
KMKernel::openReader
Q_SCRIPTABLE void openReader()
Definition: kmkernel.h:121
KMKernel::undoStack
UndoStack * undoStack() const
Definition: kmkernel.h:353
KMKernel::firstStart
bool firstStart() const
Definition: kmkernel.h:367
QPointer< MailCommon::KMFilterDialog >
KMKernel::xmlGuiInstance
const KComponentData & xmlGuiInstance()
Definition: kmkernel.h:350
KMail::KMSystemTray
Definition: kmsystemtray.h:35
QDBusObjectPath
KMKernel::firstInstance
bool firstInstance() const
Definition: kmkernel.h:338
KMKernel::jobScheduler
MailCommon::JobScheduler * jobScheduler() const
Definition: kmkernel.h:362
QTimer
QSharedPointer< MailCommon::FolderCollection >
KMKernel::setFirstInstance
void setFirstInstance(bool value)
Definition: kmkernel.h:339
QHash< QString, KPIM::ProgressItem::CryptoStatus >
QObject
progressmanager.h
to
QString to() const
subject
QString subject() const
KMMainWidget
Definition: kmmainwidget.h:91
QSet
QString
QList< QString >
FolderArchiveManager
Definition: folderarchivemanager.h:33
QTextCodec
QStringList
ConfigureDialog
Definition: configuredialog.h:29
KMKernel::shuttingDown
bool shuttingDown() const
Definition: kmkernel.h:369
set
void set(quint32, const QString &, const QString &, const QString &, const QString &, time_t)
KMAIL_EXPORT
#define KMAIL_EXPORT
Definition: kmail_export.h:35
KMail::MailServiceImpl
Definition: mailserviceimpl.h:41
KMKernel::setXmlGuiInstance
void setXmlGuiInstance(const KComponentData &instance)
Definition: kmkernel.h:351
KMail::UndoStack
Definition: undostack.h:50
KPIM::ProgressItem
KMKernel::setShuttingDown
void setShuttingDown(bool flag)
Definition: kmkernel.h:370
QAbstractItemModel
serialNumber
quint32 serialNumber() const
KMKernel::previousVersion
QString previousVersion() const
Definition: kmkernel.h:368
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