added session management
[quassel.git] / src / common / main.cpp
index e72166d..a46f099 100644 (file)
 #include "cliparser.h"
 
 #if defined BUILD_CORE
-#include <QCoreApplication>
 #include <QDir>
 #include "core.h"
 #include "message.h"
 
 #elif defined BUILD_QTUI
-#include <QApplication>
 #include "client.h"
+#include "qtuiapplication.h"
 #include "qtui.h"
 
 #elif defined BUILD_MONO
-#include <QApplication>
 #include "client.h"
 #include "core.h"
 #include "coresession.h"
+#include "qtuiapplication.h"
 #include "qtui.h"
 
 #else
 #error "Something is wrong - you need to #define a build mode!"
 #endif
 
+
 #include <signal.h>
 
 //! Signal handler for graceful shutdown.
@@ -68,6 +68,7 @@ int main(int argc, char **argv) {
   Global::registerMetaTypes();
   Global::setupVersion();
 
+/*
 #if defined BUILD_CORE
   Global::runMode = Global::CoreOnly;
   QCoreApplication app(argc, argv);
@@ -78,6 +79,19 @@ int main(int argc, char **argv) {
   Global::runMode = Global::Monolithic;
   QApplication app(argc, argv);
 #endif
+*/
+#if defined BUILD_CORE
+  Global::runMode = Global::CoreOnly;
+  QCoreApplication app(argc, argv);
+#elif defined BUILD_QTUI
+  Global::runMode = Global::ClientOnly;
+  QtUiApplication app(argc, argv);
+#else
+  Global::runMode = Global::Monolithic;
+  QtUiApplication app(argc, argv);
+#endif
+
+
 
   Global::parser = CliParser(QCoreApplication::arguments());
 
@@ -85,8 +99,9 @@ int main(int argc, char **argv) {
 // put core-only arguments here
   Global::parser.addOption("port",'p',"The port quasselcore will listen at",QString("4242"));
   Global::parser.addSwitch("norestore", 'n', "Don't restore last core's state");
-  Global::parser.addOption("logfile",'l',"Path to logfile","./quassel.log");
+  Global::parser.addOption("logfile",'l',"Path to logfile");
   Global::parser.addOption("loglevel",'L',"Loglevel Debug|Info|Warning|Error","Info");
+  Global::parser.addOption("datadir", 0, "Specify the directory holding datafiles like the Sqlite DB and the SSL Cert");
 #endif // BUILD_QTUI
 #ifndef BUILD_CORE
 // put client-only arguments here
@@ -112,9 +127,8 @@ int main(int argc, char **argv) {
       logFile.setFileName(Global::parser.value("logfile"));
       if(!logFile.open(QIODevice::Append | QIODevice::Text))
         qWarning("Warning: Couldn't open logfile '%s' - will log to stdout instead",qPrintable(logFile.fileName()));
-      logFile.close();
+      else logFile.close();
     }
-    else qWarning("Warning: Couldn't open logfile '%s' - will log to stdout instead",qPrintable(logFile.fileName()));
   }
 
   qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
@@ -140,6 +154,7 @@ int main(int argc, char **argv) {
   QCoreApplication::setApplicationName("Quassel IRC");
   QCoreApplication::setOrganizationName("Quassel Project");
 
+  
 #ifndef BUILD_QTUI
   Core::instance();  // create and init the core
 #endif
@@ -147,6 +162,7 @@ int main(int argc, char **argv) {
   //Settings::init();
 
 #ifndef BUILD_CORE
+  // session resume
   QtUi *gui = new QtUi();
   Client::init(gui);
   // init gui only after the event loop has started
@@ -160,6 +176,10 @@ int main(int argc, char **argv) {
   }
 #endif
 
+#ifndef BUILD_CORE 
+  app.resumeSessionIfPossible();
+#endif
+  
   int exitCode = app.exec();
 
 #ifndef BUILD_QTUI