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

kmail

  • sources
  • kde-4.12
  • 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 
22 #define kmkernel KMKernel::self()
23 #define kmconfig KMKernel::config()
24 
25 namespace MailCommon {
26  class KMFilterDialog;
27 }
28 
29 class QAbstractItemModel;
30 namespace Akonadi {
31  class Collection;
32  class ChangeRecorder;
33  class EntityTreeModel;
34  class EntityMimeTypeFilterModel;
35 }
36 
37 namespace KIO {
38  class Job;
39 }
40 
41 namespace KPIM {
42  class ProgressItem;
43 }
44 
45 namespace MessageComposer {
46  class MessageSender;
47  class ComposerAutoCorrection;
48 }
49 
54 namespace KMail {
55  class MailServiceImpl;
56  class UndoStack;
57  class KMSystemTray;
58 }
59 using KMail::MailServiceImpl;
60 using KMail::UndoStack;
61 namespace MessageComposer {
62 class AkonadiSender;
63 }
64 
65 namespace KPIMIdentities {
66  class Identity;
67  class IdentityManager;
68 }
69 class KComponentData;
70 class QTimer;
71 class KMMainWin;
72 class KMainWindow;
73 class KMMainWidget;
74 class ConfigureDialog;
75 
76 namespace MailCommon {
77  class Kernel;
78  class FolderCollection;
79  class FolderCollectionMonitor;
80  class JobScheduler;
81 }
82 
103 class KMAIL_EXPORT KMKernel : public QObject, public MailCommon::IKernel, public MailCommon::ISettings, public MailCommon::IFilter
104 {
105  Q_OBJECT
106  Q_CLASSINFO("D-Bus Interface", "org.kde.kmail.kmail")
107 
108 public:
109  explicit KMKernel (QObject *parent=0, const char *name=0);
110  ~KMKernel ();
111 
116 public Q_SLOTS:
117 
118  Q_SCRIPTABLE void checkMail();
119  Q_SCRIPTABLE void openReader() { openReader( false ); }
120 
125  Q_SCRIPTABLE void setSystrayIconNotificationsEnabled( bool enabled );
126 
131  Q_SCRIPTABLE void pauseBackgroundJobs();
132 
137  Q_SCRIPTABLE void resumeBackgroundJobs();
138 
143  Q_SCRIPTABLE void stopNetworkJobs();
144 
149  Q_SCRIPTABLE void resumeNetworkJobs();
150 
151  Q_SCRIPTABLE QStringList accounts();
152 
153  Q_SCRIPTABLE void makeResourceOnline(MessageViewer::Viewer::ResourceOnlineMode mode);
154 
160  Q_SCRIPTABLE void checkAccount( const QString & account );
161 
162  Q_SCRIPTABLE bool selectFolder( const QString & folder );
163 
164  Q_SCRIPTABLE bool canQueryClose();
165 
166  Q_SCRIPTABLE bool handleCommandLine( bool noArgsOpensReader );
167 
184  Q_SCRIPTABLE int openComposer(const QString & to,
185  const QString & cc,
186  const QString & bcc,
187  const QString & subject,
188  const QString & body,
189  bool hidden,
190  const QString & messageFile,
191  const QStringList & attachmentPaths,
192  const QStringList & customHeaders , const QString &replyTo = QString(), const QString &inReplyTo = QString());
193 
217  Q_SCRIPTABLE int openComposer( const QString & to,
218  const QString & cc,
219  const QString & bcc,
220  const QString & subject,
221  const QString & body,
222  bool hidden,
223  const QString & attachName,
224  const QByteArray & attachCte,
225  const QByteArray &attachData,
226  const QByteArray & attachType,
227  const QByteArray & attachSubType,
228  const QByteArray & attachParamAttr,
229  const QString & attachParamValue,
230  const QByteArray & attachContDisp,
231  const QByteArray & attachCharset,
232  unsigned int identity );
233 
247  Q_SCRIPTABLE QDBusObjectPath openComposer( const QString & to,
248  const QString & cc,
249  const QString & bcc,
250  const QString & subject,
251  const QString & body,
252  bool hidden );
253 
270  Q_SCRIPTABLE QDBusObjectPath newMessage( const QString & to,
271  const QString & cc,
272  const QString & bcc,
273  bool hidden,
274  bool useFolderId,
275  const QString & messageFile,
276  const QString & attachURL );
277 
278  Q_SCRIPTABLE bool showMail( quint32 serialNumber, const QString & messageId );
279 
280  Q_SCRIPTABLE int viewMessage( const QString & messageFile );
281 
282  Q_SCRIPTABLE void updateConfig();
283 
284  Q_SCRIPTABLE void showFolder(const QString &collectionId);
285 
291 public:
292  void checkMailOnStartup();
293 
299  static bool askToGoOnline();
300 
305  static bool isOffline();
306 
309  static KMKernel *self();
310  /*reimp*/ KSharedConfig::Ptr config();
311  /*reimp*/ void syncConfig();
312 
313  void init();
314  void setupDBus();
315  void readConfig();
316 
317  /*reimp*/ Akonadi::ChangeRecorder *folderCollectionMonitor() const;
318 
322  Akonadi::EntityTreeModel *entityTreeModel() const;
323 
328  /*reimp*/ Akonadi::EntityMimeTypeFilterModel *collectionModel() const;
329 
330  void recoverDeadLetters();
331  void closeAllKMailWindows();
332  void cleanup(void);
333  void quit();
334  bool doSessionManagement();
335  bool firstInstance() const { return the_firstInstance; }
336  void setFirstInstance(bool value) { the_firstInstance = value; }
337  void action(bool mailto, bool check, const QString &to, const QString &cc,
338  const QString &bcc, const QString &subj, const QString &body,
339  const KUrl &messageFile, const KUrl::List &attach,
340  const QStringList &customHeaders , const QString &replyTo, const QString &inReplyTo);
341 
342  bool isImapFolder(const Akonadi::Collection& , bool &isOnline) const;
343 
344  //sets online status for akonadi accounts. true for online, false for offline
345  void setAccountStatus(bool);
346 
347  const KComponentData &xmlGuiInstance() { return mXmlGuiInstance; }
348  void setXmlGuiInstance( const KComponentData &instance ) { mXmlGuiInstance = instance; }
349 
350  UndoStack *undoStack() { return the_undoStack; }
351  MessageComposer::MessageSender *msgSender();
352 
353  /*reimp*/ void openFilterDialog(bool createDummyFilter = true);
354  /*reimp*/ void createFilter(const QByteArray& field, const QString& value);
355 
357  /*reimp*/ KPIMIdentities::IdentityManager *identityManager();
358 
359  /*reimp*/ MailCommon::JobScheduler* jobScheduler() const { return mJobScheduler; }
360 
362  void expireAllFoldersNow();
363 
364  int wrapCol() const { return mWrapCol;}
365 
366  bool firstStart() const { return the_firstStart; }
368  void firstStartDone() { the_firstStart = false; }
369  QString previousVersion() const { return the_previousVersion; }
370  bool startingUp() const { return the_startingUp; }
371  void setStartingUp (bool flag) { the_startingUp = flag; }
372  bool shuttingDown() const { return the_shuttingDown; }
373  void setShuttingDown(bool flag) { the_shuttingDown = flag; }
374 
378  static QString localDataPath();
379 
384  bool haveSystemTrayApplet() const;
385 
386  QTextCodec *networkCodec() { return netCodec; }
387 
389  KMainWindow* mainWin();
390 
392  KMMainWidget *getKMMainWidget();
393 
398  Akonadi::Collection::List allFolders() const;
399 //
400  void selectCollectionFromId( const Akonadi::Collection::Id id);
401 
402  void raise();
403 
404  void stopAgentInstance();
405 
406  //ISettings
407  /*reimp*/ bool showPopupAfterDnD();
408 
409  /*reimp*/ bool excludeImportantMailFromExpiry();
410 
411  /*reimp*/ qreal closeToQuotaThreshold();
412 
413  /*reimp*/ Akonadi::Collection::Id lastSelectedFolder();
414  /*reimp*/ void setLastSelectedFolder( const Akonadi::Collection::Id &col );
415 
416  /*reimp*/ QStringList customTemplates();
417 
418  void checkFolderFromResources( const Akonadi::Collection::List& collectionList );
419 
420  const QAbstractItemModel* treeviewModelSelection();
421 
422  void savePaneSelection();
423 
424  void updatePaneTagComboBox();
425 
426 
427  MessageComposer::ComposerAutoCorrection* composerAutoCorrection();
428 
429  void toggleSystemTray();
430 
431 protected:
432  void agentInstanceBroken( const Akonadi::AgentInstance& instance );
433 
434 
435 public slots:
436 
437  /*reimp*/ void updateSystemTray();
438 
441  void updatedTemplates();
442 
444  void dumpDeadLetters();
445 
451  void slotRequestConfigSync();
452 
456  void slotSyncConfig();
457 
458  void slotShowConfigurationDialog();
459  void slotRunBackgroundTasks();
460 
461  void slotConfigChanged();
462 
463 signals:
464  void configChanged();
465  void onlineStatusChanged( GlobalSettings::EnumNetworkState::type );
466  void customTemplatesChanged();
467 
468  void startCheckMail();
469  void endCheckMail();
470 
471 private slots:
473  void transportRemoved( int id, const QString &name );
475  void transportRenamed( int id, const QString &oldName, const QString &newName );
476  void itemDispatchStarted();
477  void instanceStatusChanged( const Akonadi::AgentInstance &);
478 
479  void akonadiStateChanged( Akonadi::ServerManager::State );
480  void slotProgressItemCompletedOrCanceled( KPIM::ProgressItem * item);
481  void slotInstanceError(const Akonadi::AgentInstance& instance, const QString & message);
482  void slotInstanceWarning(const Akonadi::AgentInstance&instance, const QString& message);
483  void slotCollectionMoved( const Akonadi::Collection &collection, const Akonadi::Collection &source, const Akonadi::Collection &destination );
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 private:
491  void resourceGoOnLine();
492  void openReader( bool onlyCheck );
493  QSharedPointer<MailCommon::FolderCollection> currentFolderCollection();
494 
495  UndoStack *the_undoStack;
496  mutable KPIMIdentities::IdentityManager *mIdentityManager;
497  MessageComposer::AkonadiSender *the_msgSender;
500  QString the_previousVersion;
502  bool the_firstStart;
504  bool the_startingUp;
506  bool the_shuttingDown;
508  bool the_firstInstance;
509 
510  KSharedConfig::Ptr mConfig;
511  QTextCodec *netCodec;
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, bool> mResourceCryptoSettingCache;
525  MailCommon::FolderCollectionMonitor *mFolderCollectionMonitor;
526  Akonadi::EntityTreeModel *mEntityTreeModel;
527  Akonadi::EntityMimeTypeFilterModel *mCollectionModel;
528 
530  QList<QString> mResourcesBeingChecked;
531 
532  int mWrapCol;
533 
534  QPointer<MailCommon::KMFilterDialog> mFilterEditDialog;
535  MessageComposer::ComposerAutoCorrection *mAutoCorrection;
536 };
537 
538 #endif // _KMKERNEL_H
globalsettings.h
QSharedPointer< MailCommon::FolderCollection >
KMKernel::firstStartDone
void firstStartDone()
Mark first start as done.
Definition: kmkernel.h:368
kmail_export.h
KMMainWin
Definition: kmmainwin.h:34
KMKernel
Central point of coordination in KMail.
Definition: kmkernel.h:103
KMKernel::openReader
Q_SCRIPTABLE void openReader()
Definition: kmkernel.h:119
KMKernel::firstStart
bool firstStart() const
Definition: kmkernel.h:366
KMKernel::startingUp
bool startingUp() const
Definition: kmkernel.h:370
KMKernel::xmlGuiInstance
const KComponentData & xmlGuiInstance()
Definition: kmkernel.h:347
KMail::KMSystemTray
Definition: kmsystemtray.h:35
QObject
KMKernel::firstInstance
bool firstInstance() const
Definition: kmkernel.h:335
KMKernel::jobScheduler
MailCommon::JobScheduler * jobScheduler() const
Definition: kmkernel.h:359
messageId
QString messageId() const
KMKernel::setFirstInstance
void setFirstInstance(bool value)
Definition: kmkernel.h:336
KMKernel::setStartingUp
void setStartingUp(bool flag)
Definition: kmkernel.h:371
to
QString to() const
subject
QString subject() const
KMMainWidget
Definition: kmmainwidget.h:83
ConfigureDialog
Definition: configuredialog.h:29
KMKernel::shuttingDown
bool shuttingDown() const
Definition: kmkernel.h:372
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:348
KMail::UndoStack
Definition: undostack.h:43
KPIM::ProgressItem
KMKernel::wrapCol
int wrapCol() const
Definition: kmkernel.h:364
KMKernel::setShuttingDown
void setShuttingDown(bool flag)
Definition: kmkernel.h:373
serialNumber
quint32 serialNumber() const
KMKernel::undoStack
UndoStack * undoStack()
Definition: kmkernel.h:350
KMKernel::networkCodec
QTextCodec * networkCodec()
Definition: kmkernel.h:386
KMKernel::previousVersion
QString previousVersion() const
Definition: kmkernel.h:369
QList< QString >
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:52 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

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