int main(int argc, char *argv[])
{
- QApplication a(argc, argv);
int ret;
- a.setApplicationName("Dorian");
- a.setApplicationVersion(DORIAN_VERSION);
- a.setOrganizationDomain("pipacs.com");
- a.setOrganizationName("Pipacs");
+ // Set up application
+ QApplication app(argc, argv);
+ app.setApplicationName("Dorian");
+ app.setApplicationVersion(DORIAN_VERSION);
+ app.setOrganizationDomain("pipacs.com");
+ app.setOrganizationName("Pipacs");
- Trace::level = (QtMsgType)Settings::instance()->
+ // 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);
-#ifdef Q_OS_SYMBIAN
- Splash *splash = new Splash();
- splash->showFullScreen();
- a.processEvents();
-#endif
+ // Show splash screen
+ Splash splash;
+ splash.show();
+ app.processEvents();
- {
- MainWindow w;
-#ifdef Q_OS_SYMBIAN
- splash->close();
-#endif
- ret = a.exec();
+ // Initialize main window
+ MainWindow *mainWindow = new MainWindow();
+ mainWindow->initialize();
+
+ // Hide splash screen
+ splash.finish(mainWindow);
+
+ // Apply settings (orientation, style etc.)
+ settings->apply();
+
+ // 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
- // Re-start application if event loop exit code was 1000
- if (ret == 1000) {
- Platform::restart(argv);
- }
return ret;
}