00001
00002
00003
#ifndef _KMCONTROL
00004
#define _KMCONTROL
00005
00006
#include <qobject.h>
00007
#include <qstring.h>
00008
#include <weaver.h>
00009
#include <weaverlogger.h>
00010
00011
#include <kconfig.h>
00012
#include <kdeversion.h>
00013
00014
#include "kmailIface.h"
00015
00016
#define kmkernel KMKernel::self()
00017
#define kmconfig KMKernel::config()
00018
00019
namespace KIO {
00020
class Job;
00021 }
00022
namespace KMail {
00023
class MailServiceImpl;
00024
class UndoStack;
00025 }
00026
using KMail::MailServiceImpl;
00027
using KMail::UndoStack;
00028
class KMMsgIndex;
00029
class QLabel;
00030
class KMFolder;
00031
class KMFolderMgr;
00032
class KMAcctMgr;
00033
class KMFilterMgr;
00034
class KMFilterActionDict;
00035
class KMSender;
00036
class KMIdentity;
00037
class KMKernel;
00038
class KMMsgDict;
00039
class IdentityManager;
00040
class KProcess;
00041
class KProgressDialog;
00042
class CryptPlugWrapperList;
00043
class ConfigureDialog;
00044
class KInstance;
00045
class QTimer;
00046
class KProgress;
00047
class KPassivePopup;
00048
class KMMainWin;
00049
class KMainWindow;
00050
class KMGroupware;
00051
class KMailICalIfaceImpl;
00052
class KMReaderWin;
00053
class KSystemTray;
00054
00055
class KMKernel :
public QObject,
virtual public KMailIface
00056 {
00057 Q_OBJECT
00058
00059
public:
00060 KMKernel (QObject *parent=0,
const char *name=0);
00061 ~KMKernel ();
00062
00064
void setCanExpire(
bool expire);
00065
bool canExpire();
00066
00069
void checkMail ();
00070 QStringList accounts();
00071
void checkAccount (
const QString &account);
00073
int openComposer (
const QString &to,
const QString &cc,
const QString &bcc,
00074
const QString &subject,
const QString &body,
int hidden,
00075
const KURL &messageFile,
const KURL::List &attachURLs);
00077
int openComposer (
const QString &to,
const QString &cc,
const QString &bcc,
00078
const QString &subject,
const QString &body,
int hidden,
00079
const KURL &messageFile,
const KURL& attachURL)
00080 {
00081
return openComposer(to, cc, bcc, subject, body, hidden, messageFile, KURL::List(attachURL));
00082 }
00084
int openComposer (
const QString &to,
const QString &cc,
const QString &bcc,
00085
const QString &subject,
const QString &body,
int hidden,
00086
const KURL &messageFile)
00087 {
00088
return openComposer(to, cc, bcc, subject, body, hidden, messageFile, KURL::List());
00089 }
00090
int openComposer (
const QString &to,
const QString &cc,
00091
const QString &bcc,
const QString &subject,
00092
const QString &body,
int hidden,
00093
const QString &attachName,
00094
const QCString &attachCte,
00095
const QCString &attachData,
00096
const QCString &attachType,
00097
const QCString &attachSubType,
00098
const QCString &attachParamAttr,
00099
const QString &attachParamValue,
00100
const QCString &attachContDisp);
00101 DCOPRef openComposer(
const QString &to,
const QString &cc,
00102
const QString &bcc,
const QString &subject,
00103
const QString &body,
bool hidden);
00104
00105
int sendCertificate(
const QString& to,
const QByteArray& certData );
00106
00107
void openReader() { openReader(
false ); }
00108
void compactAllFolders();
00109
int dcopAddMessage(
const QString & foldername,
const QString & messageFile);
00110
int dcopAddMessage(
const QString & foldername,
const KURL & messageFile);
00111
void requestAddresses( QString filename );
00112
bool storeAddresses( QString addresses, QStringList delUIDs );
00113 QStringList folderList() const;
00114 DCOPRef getFolder( const QString& vpath );
00115 virtual
bool showMail( Q_UINT32 serialNumber, QString messageId );
00118 static KMKernel *self() {
return mySelf; }
00119
static KConfig *config();
00120
00121
void init ();
00122
void cleanupImapFolders();
00123
void testDir(
const char *_name);
00124
void recoverDeadLetters(
void);
00125
void initFolders(KConfig* cfg);
00126
void closeAllKMTopLevelWidgets();
00127
void notClosedByUser();
00128
void cleanup(
void);
00129
void quit();
00130
void transferMail(
void);
00131
void ungrabPtrKb(
void);
00132
void kmailMsgHandler(QtMsgType aType,
const char* aMsg);
00133
bool doSessionManagement();
00134
bool firstInstance() {
return the_firstInstance; }
00135
void setFirstInstance(
bool value) { the_firstInstance = value; }
00136
void action (
bool mailto,
bool check,
const QString &to,
const QString &cc,
00137
const QString &bcc,
const QString &subj,
const QString &body,
00138
const KURL &messageFile,
const KURL::List &attach);
00139
void byteArrayToRemoteFile(
const QByteArray&,
const KURL&,
00140
bool overwrite = FALSE);
00141
bool folderIsDraftOrOutbox(
const KMFolder *);
00142
bool folderIsTrash(
KMFolder *);
00146
bool folderIsSentMailFolder(
const KMFolder * );
00147
00148 KInstance *xmlGuiInstance() {
return mXmlGuiInstance; }
00149
void setXmlGuiInstance( KInstance *instance ) { mXmlGuiInstance = instance; }
00150
00151
KMFolder *inboxFolder() {
return the_inboxFolder; }
00152
KMFolder *outboxFolder() {
return the_outboxFolder; }
00153
KMFolder *sentFolder() {
return the_sentFolder; }
00154
KMFolder *trashFolder() {
return the_trashFolder; }
00155
KMFolder *draftsFolder() {
return the_draftsFolder; }
00156
00157 KMFolderMgr *folderMgr() {
return the_folderMgr; }
00158 KMFolderMgr *imapFolderMgr() {
return the_imapFolderMgr; }
00159 KMFolderMgr *dimapFolderMgr() {
return the_dimapFolderMgr; }
00160 KMFolderMgr *searchFolderMgr() {
return the_searchFolderMgr; }
00161 UndoStack *undoStack() {
return the_undoStack; }
00162 KMAcctMgr *acctMgr() {
return the_acctMgr; }
00163 KMFilterMgr *filterMgr() {
return the_filterMgr; }
00164 KMFilterMgr *popFilterMgr() {
return the_popFilterMgr; }
00165
KMFilterActionDict *filterActionDict() {
return the_filterActionDict; }
00166 KMSender *msgSender() {
return the_msgSender; }
00167 KMMsgDict *msgDict();
00168 KMMsgIndex *msgIndex();
00169
00170 KPIM::ThreadWeaver::Weaver *weaver() {
return the_weaver; }
00172
IdentityManager *identityManager();
00173 CryptPlugWrapperList * cryptPlugList()
const {
return mCryptPlugList; }
00174
00175 KMGroupware& groupware();
00176 KMailICalIfaceImpl& iCalIface();
00177
00178
bool firstStart() {
return the_firstStart; }
00179 QString previousVersion() {
return the_previousVersion; }
00180
bool startingUp() {
return the_startingUp; }
00181
void setStartingUp (
bool flag) { the_startingUp = flag; }
00182
bool shuttingDown() {
return the_shuttingDown; }
00183
void setShuttingDown(
bool flag) { the_shuttingDown = flag; }
00184
void serverReady (
bool flag) { the_server_is_ready = flag; }
00185
00190
bool haveSystemTrayApplet();
00191
00192
bool registerSystemTrayApplet(
const KSystemTray* );
00193
bool unregisterSystemTrayApplet(
const KSystemTray* );
00194
00196
bool handleCommandLine(
bool noArgsOpensReader );
00197
void emergencyExit(
const QString& reason );
00198
00200
unsigned long getNextMsgSerNum();
00201 QTextCodec *networkCodec() {
return netCodec; }
00202
00204 QByteArray getCollectedStdOut(KProcess*);
00206 QByteArray getCollectedStdErr(KProcess*);
00207
00209 KMainWindow* mainWin();
00210
00211
00212
00213
00214
00215
void setContextMenuShown(
bool flag ) { mContextMenuShown = flag; }
00216
bool contextMenuShown()
const {
return mContextMenuShown; }
00217
00218
public slots:
00219
00220
void dumpDeadLetters();
00221
00235
void slotCollectStdOut(KProcess*,
char*,
int);
00237
void slotCollectStdErr(KProcess*,
char*,
int);
00238
00244
void slotRequestConfigSync();
00245
00247
void slotEmptyTrash();
00248
00249
void slotShowConfigurationDialog();
00250
00251
protected slots:
00252
void slotDataReq(KIO::Job*,QByteArray&);
00253
void slotResult(KIO::Job*);
00254
void cleanupLoop();
00255
void cleanupProgress();
00256
00257 signals:
00258
void configChanged();
00259
00260
private:
00261
void openReader(
bool onlyCheck );
00262
00263
KMFolder *the_inboxFolder;
00264
KMFolder *the_outboxFolder;
00265
KMFolder *the_sentFolder;
00266
KMFolder *the_trashFolder;
00267
KMFolder *the_draftsFolder;
00268
00269 KMFolderMgr *the_folderMgr;
00270 KMFolderMgr *the_imapFolderMgr;
00271 KMFolderMgr *the_dimapFolderMgr;
00272 KMFolderMgr *the_searchFolderMgr;
00273 UndoStack *the_undoStack;
00274 KMAcctMgr *the_acctMgr;
00275 KMFilterMgr *the_filterMgr;
00276 KMFilterMgr *the_popFilterMgr;
00277
KMFilterActionDict *the_filterActionDict;
00278
mutable IdentityManager *mIdentityManager;
00279 KMSender *the_msgSender;
00280 KMMsgDict *the_msgDict;
00281 KMMsgIndex *the_msgIndex;
00282
struct putData
00283 {
00284 KURL url;
00285 QByteArray data;
00286
int offset;
00287 };
00288 QMap<KIO::Job *, putData> mPutJobs;
00289 QMap<KProcess*,QByteArray> mStdOutCollection;
00290 QMap<KProcess*,QByteArray> mStdErrCollection;
00293 QString the_previousVersion;
00295
bool the_firstStart;
00297
bool the_startingUp;
00299
bool the_shuttingDown;
00301
bool the_server_is_ready;
00303
bool closed_by_user;
00304
bool allowedToExpire;
00305
bool the_firstInstance;
00306
static KMKernel *mySelf;
00307
#if KDE_IS_VERSION( 3, 1, 92 )
00308
KSharedConfig::Ptr mConfig;
00309
#else
00310
static KConfig * myConfig;
00311
#endif
00312
QTextCodec *netCodec;
00313 KProgress *mProgress;
00314 KPassivePopup *mCleanupPopup;
00315 QLabel *mCleanupLabel;
00316 CryptPlugWrapperList *mCryptPlugList;
00317 KInstance* mXmlGuiInstance;
00318 ConfigureDialog *mConfigureDialog;
00319 QTimer *mDeadLetterTimer;
00320
int mDeadLetterInterval;
00321 KMGroupware * mGroupware;
00322 KMailICalIfaceImpl* mICalIface;
00323
00324 KMMainWin *mWin;
00325 MailServiceImpl *mMailService;
00326
00327
00328
00329
00330
bool mContextMenuShown;
00331
00332 QValueList<const KSystemTray*> systemTrayApplets;
00333
00334
00335 KPIM::ThreadWeaver::Weaver *the_weaver;
00336 KPIM::ThreadWeaver::WeaverThreadLogger *the_weaverLogger;
00337 };
00338
00339
#endif