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