kmail
main.cppGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <config.h>
00021
00022 #include <kuniqueapplication.h>
00023 #include <kglobal.h>
00024 #include <knotifyclient.h>
00025 #include <dcopclient.h>
00026 #include "kmkernel.h"
00027 #include "kmail_options.h"
00028
00029 #include <kdebug.h>
00030
00031 #undef Status // stupid X headers
00032
00033 #include "aboutdata.h"
00034
00035 #include "kmstartup.h"
00036
00037
00038
00039 class KMailApplication : public KUniqueApplication
00040 {
00041 public:
00042 KMailApplication() : KUniqueApplication() { };
00043 virtual int newInstance();
00044 void commitData(QSessionManager& sm);
00045
00046 };
00047
00048 void KMailApplication::commitData(QSessionManager& sm) {
00049 kmkernel->dumpDeadLetters();
00050 kmkernel->setShuttingDown( true );
00051 KApplication::commitData( sm );
00052 }
00053
00054
00055 int KMailApplication::newInstance()
00056 {
00057 kdDebug(5006) << "KMailApplication::newInstance()" << endl;
00058 if (!kmkernel)
00059 return 0;
00060
00061 if (!kmkernel->firstInstance() || !kapp->isRestored())
00062 kmkernel->handleCommandLine( true );
00063 kmkernel->setFirstInstance(FALSE);
00064 return 0;
00065 }
00066
00067 int main(int argc, char *argv[])
00068 {
00069
00070
00071
00072
00073
00074 KMail::AboutData about;
00075
00076 KCmdLineArgs::init(argc, argv, &about);
00077 KCmdLineArgs::addCmdLineOptions( kmail_options );
00078 if (!KMailApplication::start())
00079 return 0;
00080
00081 KMailApplication app;
00082
00083
00084 KMail::insertLibraryCataloguesAndIcons();
00085
00086
00087
00088 KNotifyClient::startDaemon();
00089
00090 kapp->dcopClient()->suspend();
00091
00092 KMail::lockOrDie();
00093
00094
00095 KMKernel kmailKernel;
00096 kmailKernel.init();
00097 kapp->dcopClient()->setDefaultObject( kmailKernel.objId() );
00098
00099
00100 kmailKernel.doSessionManagement();
00101
00102
00103 kmailKernel.recoverDeadLetters();
00104
00105 kmsetSignalHandler(kmsignalHandler);
00106
00107 kapp->dcopClient()->resume();
00108 kmkernel->setStartingUp( false );
00109
00110 int ret = kapp->exec();
00111
00112 kmailKernel.cleanup();
00113
00114 KMail::cleanup();
00115 return ret;
00116 }
|