int main(int argc, char* argv[]) { #ifdef Q_WS_X11 QCoreApplication::setAttribute(Qt::AA_X11InitThreads); #endif QGuiApplication app(argc,argv); SettingsRef settings; MainWindow *window; int result; app.setOrganizationName("libosmscout"); app.setOrganizationDomain("libosmscout.sf.net"); app.setApplicationName("OSMScout"); settings=std::make_shared<Settings>(); qRegisterMetaType<RenderMapRequest>(); qRegisterMetaType<DatabaseLoadedResponse>(); qRegisterMetaType<osmscout::TileRef>(); qmlRegisterType<MapWidget>("net.sf.libosmscout.map", 1, 0, "Map"); qmlRegisterType<Location>("net.sf.libosmscout.map", 1, 0, "Location"); qmlRegisterType<LocationListModel>("net.sf.libosmscout.map", 1, 0, "LocationListModel"); qmlRegisterType<FileIO, 1>("FileIO", 1, 0, "FileIO"); QThread thread; if (!DBThread::InitializeInstance(/*settings*/)) { std::cerr << "Cannot initialize DBThread" << std::endl; } DBThread* dbThread=DBThread::GetInstance(); window=new MainWindow(settings, dbThread); dbThread->connect(&thread, SIGNAL(started()), SLOT(Initialize())); dbThread->connect(&thread, SIGNAL(finished()), SLOT(Finalize())); dbThread->moveToThread(&thread); thread.start(); result=app.exec(); delete window; QString tmpStylesheet(dbThread->GetStylesheetFilename()+TMP_SUFFIX); if(QFile::exists(tmpStylesheet)) { QFile::remove(tmpStylesheet); } thread.quit(); thread.wait(); DBThread::FreeInstance(); return result; }
int main(int argc, char* argv[]) { #ifdef Q_WS_X11 QCoreApplication::setAttribute(Qt::AA_X11InitThreads); #endif QGuiApplication app(argc,argv); MainWindow *window; int result; app.setOrganizationName("libosmscout"); app.setOrganizationDomain("libosmscout.sf.net"); app.setApplicationName("StyleEditor"); qRegisterMetaType<RenderMapRequest>(); qRegisterMetaType<DatabaseLoadedResponse>(); qRegisterMetaType<osmscout::TileRef>(); qmlRegisterType<MapWidget>("net.sf.libosmscout.map", 1, 0, "Map"); qmlRegisterType<LocationEntry>("net.sf.libosmscout.map", 1, 0, "Location"); qmlRegisterType<LocationListModel>("net.sf.libosmscout.map", 1, 0, "LocationListModel"); qmlRegisterType<FileIO, 1>("FileIO", 1, 0, "FileIO"); qmlRegisterType<QmlSettings>("net.sf.libosmscout.map", 1, 0, "Settings"); QThread thread; // load online tile providers Settings::GetInstance()->loadOnlineTileProviders( ":/resources/online-tile-providers.json"); // setup paths QString documentsLocation = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); QString cacheLocation = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); QStringList cmdLineArgs = QApplication::arguments(); QStringList mapLookupDirectories; if (cmdLineArgs.size() > 1){ mapLookupDirectories << cmdLineArgs.at(1); }else{ mapLookupDirectories << QDir::currentPath(); mapLookupDirectories << documentsLocation + QDir::separator() + "Maps"; } QString stylesheetFilename; if (cmdLineArgs.size() > 2){ stylesheetFilename = cmdLineArgs.at(2); }else{ if (cmdLineArgs.size() > 1){ stylesheetFilename = cmdLineArgs.at(1) + "standard.oss"; }else{ stylesheetFilename = QString("stylesheets") + QDir::separator() + "standard.oss"; } } QString iconDirectory; if (cmdLineArgs.size() > 3){ iconDirectory = cmdLineArgs.at(3); }else{ if (cmdLineArgs.size() > 1){ iconDirectory = cmdLineArgs.at(1) + "icons"; }else{ iconDirectory = "icons"; } } if (!DBThread::InitializeTiledInstance( mapLookupDirectories, stylesheetFilename, iconDirectory, cacheLocation + QDir::separator() + "OSMScoutTileCache", /* onlineTileCacheSize */ 100, /* offlineTileCacheSize */ 200 )) { std::cerr << "Cannot initialize DBThread" << std::endl; } DBThread* dbThread=DBThread::GetInstance(); window=new MainWindow(dbThread); dbThread->connect(&thread, SIGNAL(started()), SLOT(Initialize())); dbThread->connect(&thread, SIGNAL(finished()), SLOT(Finalize())); dbThread->moveToThread(&thread); thread.start(); result=app.exec(); delete window; QString tmpStylesheet(dbThread->GetStylesheetFilename()+TMP_SUFFIX); if(QFile::exists(tmpStylesheet)){ QFile::remove(tmpStylesheet); } thread.quit(); thread.wait(); DBThread::FreeInstance(); Settings::FreeInstance(); return result; }