kmail

kmkernel.h
1#ifndef _KMCONTROL
2#define _KMCONTROL
3
4#include <tqobject.h>
5#include <tqstring.h>
6#include <tqguardedptr.h>
7#include <weaver.h>
8#include <weaverlogger.h>
9
10#include <tdemacros.h>
11#include <tdeconfig.h>
12#include <tdeimproxy.h>
13#include <tdemacros.h>
14
15#ifdef __TDE_HAVE_TDEHWLIB
16# include <tdenetworkconnections.h>
17#else
18namespace TDENetworkConnectionStatus {
19 enum TDENetworkConnectionStatus {
20 };
21}
22#endif
23
24#include "kmailIface.h"
25#include "kmmsgbase.h"
26#include "globalsettings.h"
27
28#define kmkernel KMKernel::self()
29#define kmconfig KMKernel::config()
30
31namespace TDEIO {
32 class Job;
33}
34namespace TDEWallet {
35 class Wallet;
36}
37
42namespace KMail {
43 class MailServiceImpl;
44 class UndoStack;
45 class JobScheduler;
46 class MessageSender;
47 class AccountManager;
48}
49namespace KPIM { class ProgressDialog; }
50using KMail::MailServiceImpl;
52using KMail::UndoStack;
54using KPIM::ProgressDialog;
55class KMMsgIndex;
56class TQLabel;
57class KMFolder;
58class KMFolderMgr;
59class KMFilterMgr;
61class KMSender;
62namespace KPIM {
63 class Identity;
64 class IdentityManager;
65}
66class KMKernel;
67class TDEProcess;
68class KProgressDialog;
69class TDEInstance;
70class TQTimer;
71class KProgress;
72class KPassivePopup;
73class KMMainWin;
74class TDEMainWindow;
76class KMReaderWin;
77class KSystemTray;
78class KMMainWidget;
79class ConfigureDialog;
80
90class TDE_EXPORT KMKernel : public TQObject, virtual public KMailIface
91{
92 TQ_OBJECT
93
94
95public:
96 KMKernel (TQObject *parent=0, const char *name=0);
97 ~KMKernel ();
98
101 void checkMail ();
102 TQStringList accounts();
103 void checkAccount (const TQString &account);
105 int openComposer (const TQString &to, const TQString &cc, const TQString &bcc,
106 const TQString &subject, const TQString &body, int hidden,
107 const KURL &messageFile, const KURL::List &attachURLs,
108 const QCStringList &customHeaders);
110 int openComposer (const TQString &to, const TQString &cc, const TQString &bcc,
111 const TQString &subject, const TQString &body, int hidden,
112 const KURL &messageFile, const KURL::List &attachURLs)
113 {
114 QCStringList noCustomHeaders;
115 return openComposer(to, cc, bcc, subject, body, hidden, messageFile, attachURLs, noCustomHeaders);
116 }
118 int openComposer (const TQString &to, const TQString &cc, const TQString &bcc,
119 const TQString &subject, const TQString &body, int hidden,
120 const KURL &messageFile, const KURL& attachURL)
121 {
122 return openComposer(to, cc, bcc, subject, body, hidden, messageFile, KURL::List(attachURL));
123 }
125 int openComposer (const TQString &to, const TQString &cc, const TQString &bcc,
126 const TQString &subject, const TQString &body, int hidden,
127 const KURL &messageFile)
128 {
129 return openComposer(to, cc, bcc, subject, body, hidden, messageFile, KURL::List());
130 }
134 int openComposer (const TQString &to, const TQString &cc,
135 const TQString &bcc, const TQString &subject,
136 const TQString &body, int hidden,
137 const TQString &attachName,
138 const TQCString &attachCte,
139 const TQCString &attachData,
140 const TQCString &attachType,
141 const TQCString &attachSubType,
142 const TQCString &attachParamAttr,
143 const TQString &attachParamValue,
144 const TQCString &attachContDisp);
145
149 int openComposer (const TQString &to, const TQString &cc,
150 const TQString &bcc, const TQString &subject,
151 const TQString &body, int hidden,
152 const TQString &attachName,
153 const TQCString &attachCte,
154 const TQCString &attachData,
155 const TQCString &attachType,
156 const TQCString &attachSubType,
157 const TQCString &attachParamAttr,
158 const TQString &attachParamValue,
159 const TQCString &attachContDisp,
160 const TQCString &attachCharset);
161
162 int openComposer (const TQString &to, const TQString &cc,
163 const TQString &bcc, const TQString &subject,
164 const TQString &body, int hidden,
165 const TQString &attachName,
166 const TQCString &attachCte,
167 const TQCString &attachData,
168 const TQCString &attachType,
169 const TQCString &attachSubType,
170 const TQCString &attachParamAttr,
171 const TQString &attachParamValue,
172 const TQCString &attachContDisp,
173 const TQCString &attachCharset,
174 unsigned int identity);
175
176 DCOPRef openComposer(const TQString &to, const TQString &cc,
177 const TQString &bcc, const TQString &subject,
178 const TQString &body,bool hidden);
179
182 void setDefaultTransport( const TQString & transport );
183
185 DCOPRef newMessage(const TQString &to,
186 const TQString &cc,
187 const TQString &bcc,
188 bool hidden,
189 bool useFolderId,
190 const KURL &messageFile,
191 const KURL &attachURL);
192
193 int sendCertificate( const TQString& to, const TQByteArray& certData );
194
195 void openReader() { openReader( false ); }
196
197 int dcopAddMessage(const TQString & foldername, const TQString & messagefile,
198 const TQString & MsgStatusFlags = TQString());
199 int dcopAddMessage(const TQString & foldername, const KURL & messagefile,
200 const TQString & MsgStatusFlags = TQString());
201 void dcopResetAddMessage();
203 int dcopAddMessage_fastImport(const TQString & foldername, const TQString & messagefile,
204 const TQString & MsgStatusFlags = TQString());
205 int dcopAddMessage_fastImport(const TQString & foldername, const KURL & messagefile,
206 const TQString & MsgStatusFlags = TQString());
207 void showImportArchiveDialog();
208
209 TQStringList folderList() const;
210 DCOPRef getFolder( const TQString& vpath );
211 void selectFolder( TQString folder );
212 int timeOfLastMessageCountChange() const;
213 virtual bool showMail( TQ_UINT32 serialNumber, TQString messageId );
214 virtual TQString getFrom( TQ_UINT32 serialNumber );
215 virtual TQString debugScheduler();
216 virtual TQString debugSernum( TQ_UINT32 serialNumber );
217 int viewMessage( const KURL & messageFile );
218
223 virtual void pauseBackgroundJobs();
224
229 virtual void resumeBackgroundJobs();
230
235 void stopNetworkJobs();
236
241 void resumeNetworkJobs();
242
248 static bool askToGoOnline();
249
254 static bool isOffline();
255
258 static KMKernel *self() { return mySelf; }
259 static TDEConfig *config();
260
261 void init();
262 void readConfig();
263 void cleanupImapFolders();
264 void recreateCorruptIndexFiles();
265 void testDir(const char *_name);
266 void recoverDeadLetters();
267 void initFolders(TDEConfig* cfg);
268 void closeAllKMailWindows();
269 void cleanup(void);
270 void quit();
276 bool transferMail( TQString & destinationDir );
277 void ungrabPtrKb(void);
278 void kmailMsgHandler(TQtMsgType aType, const char* aMsg);
279 bool doSessionManagement();
280 bool firstInstance() { return the_firstInstance; }
281 void setFirstInstance(bool value) { the_firstInstance = value; }
282 void action (bool mailto, bool check, const TQString &to, const TQString &cc,
283 const TQString &bcc, const TQString &subj, const TQString &body,
284 const KURL &messageFile, const KURL::List &attach,
285 const QCStringList &customHeaders);
286 void byteArrayToRemoteFile(const TQByteArray&, const KURL&,
287 bool overwrite = false);
288 bool folderIsDraftOrOutbox( const KMFolder * );
289 bool folderIsDrafts( const KMFolder * );
290 bool folderIsTemplates( const KMFolder * );
291 bool folderIsTrash( KMFolder * );
295 bool folderIsSentMailFolder( const KMFolder * );
299 KMFolder* findFolderById( const TQString& idString );
300
301 TDEInstance *xmlGuiInstance() { return mXmlGuiInstance; }
302 void setXmlGuiInstance( TDEInstance *instance ) { mXmlGuiInstance = instance; }
303
304 KMFolder *inboxFolder() { return the_inboxFolder; }
305 KMFolder *outboxFolder() { return the_outboxFolder; }
306 KMFolder *sentFolder() { return the_sentFolder; }
307 KMFolder *trashFolder() { return the_trashFolder; }
308 KMFolder *draftsFolder() { return the_draftsFolder; }
309 KMFolder *templatesFolder() { return the_templatesFolder; }
310
311 KMFolderMgr *folderMgr() { return the_folderMgr; }
312 KMFolderMgr *imapFolderMgr() { return the_imapFolderMgr; }
313 KMFolderMgr *dimapFolderMgr() { return the_dimapFolderMgr; }
314 KMFolderMgr *searchFolderMgr() { return the_searchFolderMgr; }
315 UndoStack *undoStack() { return the_undoStack; }
316 AccountManager *acctMgr() { return the_acctMgr; }
317 KMFilterMgr *filterMgr() { return the_filterMgr; }
318 KMFilterMgr *popFilterMgr() { return the_popFilterMgr; }
319 KMFilterActionDict *filterActionDict() { return the_filterActionDict; }
320 KMail::MessageSender *msgSender();
321 KMMsgIndex *msgIndex();
322
323 KPIM::ThreadWeaver::Weaver *weaver() { return the_weaver; }
325 KPIM::IdentityManager *identityManager();
326
327 JobScheduler* jobScheduler() { return mJobScheduler; }
328
330 void compactAllFolders();
332 void expireAllFoldersNow();
333
334 KMailICalIfaceImpl& iCalIface();
335
336 bool firstStart() { return the_firstStart; }
337 TQString previousVersion() { return the_previousVersion; }
338 bool startingUp() { return the_startingUp; }
339 void setStartingUp (bool flag) { the_startingUp = flag; }
340 bool shuttingDown() { return the_shuttingDown; }
341 void setShuttingDown(bool flag) { the_shuttingDown = flag; }
342 void serverReady (bool flag) { the_server_is_ready = flag; }
343
347 static TQString localDataPath();
348
353 bool haveSystemTrayApplet();
354
355 bool registerSystemTrayApplet( const KSystemTray* );
356 bool unregisterSystemTrayApplet( const KSystemTray* );
357
359 bool handleCommandLine( bool noArgsOpensReader );
360 void emergencyExit( const TQString& reason );
361
363 unsigned long getNextMsgSerNum();
364 TQTextCodec *networkCodec() { return netCodec; }
365
367 TDEMainWindow* mainWin();
368
369 // ### The mContextMenuShown flag is necessary to work around bug# 56693
370 // ### (kmail freeze with the complete desktop while pinentry-qt appears)
371 // ### FIXME: Once the encryption support is asynchron this can be removed
372 // ### again.
373 void setContextMenuShown( bool flag ) { mContextMenuShown = flag; }
374 bool contextMenuShown() const { return mContextMenuShown; }
375
380 ::KIMProxy* imProxy();
381
386 bool mailCheckAborted() const;
390 void enableMailCheck();
396 void abortMailCheck();
397
398 bool canQueryClose();
399
403 void messageCountChanged();
404
406 TDEWallet::Wallet *wallet();
407
409 KMMainWidget *getKMMainWidget();
410
412 TQValueList< TQGuardedPtr<KMFolder> > allFolders();
413
414 void raise();
415
416 void loadProfile( const TQString& path );
417
418 void saveToProfile( const TQString& path ) const;
419
420 bool isCodecAsciiCompatible( const TQTextCodec *codec );
421public slots:
422
424 void dumpDeadLetters();
425
431 void slotRequestConfigSync();
432
434 void slotEmptyTrash();
435
436 void slotShowConfigurationDialog();
437 void slotRunBackgroundTasks();
438
439 void slotConfigChanged();
440
441protected slots:
442 void slotDataReq(TDEIO::Job*,TQByteArray&);
443 void slotResult(TDEIO::Job*);
444 void slotNetworkStateChanged(TDENetworkConnectionStatus::TDENetworkConnectionStatus, TDENetworkConnectionStatus::TDENetworkConnectionStatus, TQString);
445
446signals:
447 void configChanged();
448 void folderRemoved( KMFolder* aFolder );
449 void onlineStatusChanged( GlobalSettings::EnumNetworkState::type );
450
451private:
452 void openReader( bool onlyCheck );
453 KMMsgStatus strToStatus(const TQString &flags);
454 bool networkStateConnected();
455 KMFolder *currentFolder();
456
457 KMFolder *the_inboxFolder;
458 KMFolder *the_outboxFolder;
459 KMFolder *the_sentFolder;
460 KMFolder *the_trashFolder;
461 KMFolder *the_draftsFolder;
462 KMFolder *the_templatesFolder;
463
464 KMFolderMgr *the_folderMgr;
465 KMFolderMgr *the_imapFolderMgr;
466 KMFolderMgr *the_dimapFolderMgr;
467 KMFolderMgr *the_searchFolderMgr;
468 UndoStack *the_undoStack;
469 AccountManager *the_acctMgr;
470 KMFilterMgr *the_filterMgr;
471 KMFilterMgr *the_popFilterMgr;
472 KMFilterActionDict *the_filterActionDict;
473 mutable KPIM::IdentityManager *mIdentityManager;
474 KMSender *the_msgSender;
475 KMMsgIndex *the_msgIndex;
476 struct putData
477 {
478 KURL url;
479 TQByteArray data;
480 int offset;
481 };
482 TQMap<TDEIO::Job *, putData> mPutJobs;
485 TQString the_previousVersion;
487 bool the_firstStart;
489 bool the_startingUp;
491 bool the_shuttingDown;
493 bool the_server_is_ready;
495 bool closed_by_user;
496 bool the_firstInstance;
497 bool mMailCheckAborted;
498 static KMKernel *mySelf;
499 TDESharedConfig::Ptr mConfig;
500 TQTextCodec *netCodec;
501 TDEInstance* mXmlGuiInstance;
502 ConfigureDialog *mConfigureDialog;
503
504 TQTimer *mBackgroundTasksTimer;
505 KMailICalIfaceImpl* mICalIface;
506 JobScheduler* mJobScheduler;
507 // temporary mainwin
508 KMMainWin *mWin;
509 MailServiceImpl *mMailService;
510
511 // the time of the last change of the unread or total count of a folder;
512 // this can be queried via DCOP in order to determine whether the counts
513 // need to be updated (e.g. in the Summary in Kontact)
514 int mTimeOfLastMessageCountChange;
515
516 // true if the context menu of KMFolderTree or KMHeaders is shown
517 // this is necessary to know in order to prevent a dead lock between the
518 // context menus and the pinentry program
519 bool mContextMenuShown;
520
521 TQValueList<const KSystemTray*> systemTrayApplets;
522 TQValueList<const TQTextCodec*> mNonAsciiCompatibleCodecs;
523
524 /* Weaver */
525 KPIM::ThreadWeaver::Weaver *the_weaver;
526 KPIM::ThreadWeaver::WeaverThreadLogger *the_weaverLogger;
527
528 TDEWallet::Wallet *mWallet;
529
530 // variables used by dcopAddMessage()
531 TQStringList mAddMessageMsgIds;
532 TQString mAddMessageLastFolder;
533 KMFolder *mAddMsgCurrentFolder;
534
535#ifdef __TDE_HAVE_TDEHWLIB
536 TDEGlobalNetworkManager *mNetworkManager;
537#endif
538};
539
540#endif
Dictionary that contains a list of all registered filter actions with their creation functions.
Mail folder.
Definition: kmfolder.h:69
Central point of coordination in KMail.
Definition: kmkernel.h:91
int openComposer(const TQString &to, const TQString &cc, const TQString &bcc, const TQString &subject, const TQString &body, int hidden, const KURL &messageFile, const KURL &attachURL)
For backward compatibility.
Definition: kmkernel.h:118
int openComposer(const TQString &to, const TQString &cc, const TQString &bcc, const TQString &subject, const TQString &body, int hidden, const KURL &messageFile)
For backward compatibility.
Definition: kmkernel.h:125
unsigned long getNextMsgSerNum()
Returns a message serial number that hasn't been used yet.
static KMKernel * self()
normal control stuff
Definition: kmkernel.h:258
int openComposer(const TQString &to, const TQString &cc, const TQString &bcc, const TQString &subject, const TQString &body, int hidden, const KURL &messageFile, const KURL::List &attachURLs)
For backward compatibility.
Definition: kmkernel.h:110
This class implements a "reader window", that is a window used for reading or viewing messages.
Definition: kmreaderwin.h:75
The implementation of the interface.
checkMail wont show reader but will check mail.
Definition: kmailIface.h:18
virtual void setDefaultTransport(const TQString &transport)=0
Set the KMail Default transport.
virtual void dcopResetAddMessage()=0
Clears the list of added message ids which is used to filter out duplicates.
virtual void resumeBackgroundJobs()=0
Resume compaction/expiry, and allow launching new ones.
virtual void pauseBackgroundJobs()=0
Abort any running compaction/expiry, and don't launch any new ones until resumeBackgroundJobs() is ca...
virtual int dcopAddMessage_fastImport(const TQString &foldername, const TQString &messagefile, const TQString &MsgStatusFlags=TQString())=0
Does essentially the same as dcopAddMessage except that it doesn't reject duplicate messages.
virtual bool showMail(TQ_UINT32 serialNumber, TQString messageId)=0
Shows the specified message in a separate message window.
virtual bool handleCommandLine(bool noArgsOpensReader)=0
DCOP-enabled for KMailUniqueAppHandler in the kontact plugin.
virtual int dcopAddMessage(const TQString &foldername, const TQString &messagefile, const TQString &MsgStatusFlags=TQString())=0
virtual int sendCertificate(const TQString &to, const TQByteArray &certData)=0
Send a certificate request to the CA specified in to.
virtual void stopNetworkJobs()=0
Stop all network related jobs and enter offline mode.
virtual void resumeNetworkJobs()=0
Resume all network related jobs and enter online mode.
virtual TQString getFrom(TQ_UINT32 serialNumber)=0
DCOP-enabled for use in kaddressbook drop.
The account manager is responsible for creating accounts of various types via the factory method crea...
The unique JobScheduler instance (owned by kmkernel) implements "background processing" of folder ope...
Definition: jobscheduler.h:97
folderdiaquotatab.h
Definition: aboutdata.cpp:40