X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=main.cpp;h=69bf13c72c9ac0098e57cf56af04aaa361475eba;hb=4f302c4427507fec544f32b9003035e93f32b2e2;hp=647822e13d8ee2fc89de70997cc9ae0b72dd0737;hpb=598038169e0a06479477d78f121775e1d2f68583;p=dorian diff --git a/main.cpp b/main.cpp index 647822e..69bf13c 100644 --- a/main.cpp +++ b/main.cpp @@ -1,38 +1,82 @@ -#ifdef Q_OS_UNIX -#include -#endif - #include #include "mainwindow.h" #include "trace.h" #include "settings.h" +#include "library.h" +#include "settings.h" +#include "bookdb.h" +#include "search.h" +#include "platform.h" +#include "splash.h" + +#ifdef Q_OS_SYMBIAN +# include "mediakeysobserver.h" +#endif + +static const char *DORIAN_VERSION = +#include "pkg/version.txt" +; + +static const QtMsgType DORIAN_DEFAULT_TRACE_LEVEL = +#ifdef Q_OS_SYMBIAN + QtDebugMsg +#else + QtWarningMsg +#endif + ; int main(int argc, char *argv[]) { - QApplication a(argc, argv); - a.setApplicationName("Dorian"); - a.setApplicationVersion("0.0.1"); - a.setOrganizationDomain("pipacs.com"); - a.setOrganizationName("Pipacs"); - - Trace::level = (QtMsgType)Settings::instance()-> - value("tracelevel", (int)QtWarningMsg).toInt(); + int ret; + + // Set up application + QApplication app(argc, argv); + app.setApplicationName("Dorian"); + app.setApplicationVersion(DORIAN_VERSION); + app.setOrganizationDomain("pipacs.com"); + app.setOrganizationName("Pipacs"); + + // Initialize tracing + Settings *settings = Settings::instance(); + Trace::level = (QtMsgType)settings-> + value("tracelevel", (int)DORIAN_DEFAULT_TRACE_LEVEL).toInt(); + Trace::setFileName(settings->value("tracefilename").toString()); qInstallMsgHandler(Trace::messageHandler); - MainWindow w; -#ifdef Q_WS_S60 - w.showMaximized(); -#else - w.show(); +#ifdef Q_OS_SYMBIAN + // Show splash screen + Splash splash; + splash.show(); + app.processEvents(); #endif - int ret = a.exec(); - if (ret == 1000) { -#ifdef Q_OS_UNIX - extern char **environ; - execve(argv[0], argv, environ); + // Initialize main window + MainWindow *mainWindow = new MainWindow(); + settings->apply(); + mainWindow->initialize(); + +#ifdef Q_OS_SYMBIAN + // Hide splash screen + splash.finish(mainWindow); #endif + + // Run event loop, Re-start application if event loop exit code was 1000 + ret = app.exec(); + if (ret == 1000) { + Platform::instance()->restart(argv); } + + // Release singletons + delete mainWindow; + Library::close(); + BookDb::close(); + Settings::close(); + Search::close(); + Platform::close(); +#ifdef Q_OS_SYMBIAN + MediaKeysObserver::close(); +#endif + return ret; }