int main(int argc, char* argv[]) { QGuiApplication app(argc, argv); // Use QCommandLineParser to parse arguments (see documentation) QQmlEngine engine; // Register needed types registerQmlTypes(); // Add image provider engine.addImageProvider(QStringLiteral("svgelement"), new qtouch::SvgElementProvider(QQmlImageProviderBase::Image, QUrl(QStringLiteral("qrc:///images/")))); qtouch::DataModel dataModel; try { dataModel.init(); } catch (qtouch::Exception& e) { qCritical() << e.message(); return EXIT_FAILURE; } qtouch::CourseModel* courseModel = new qtouch::CourseModel(&dataModel, &app); qtouch::ProfileModel* profileModel = new qtouch::ProfileModel(&dataModel, &app); // Embed view models engine.rootContext()->setContextProperty("$courseModel", courseModel); engine.rootContext()->setContextProperty("$profileModel", profileModel); // Create root component QQmlComponent component(&engine); QQuickWindow::setDefaultAlphaBuffer(true); component.loadUrl(QUrl(QStringLiteral("qrc:/qml/MainWindow.qml"))); if (componentError(&component)) return EXIT_FAILURE; if (component.isReady()) { component.create(); if (componentError(&component)) return EXIT_FAILURE; } else { qWarning() << component.errorString(); return EXIT_FAILURE; } // FIXME: Not nice but fixes initialization problem courseModel->selectCourse(0); return app.exec(); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QtWebEngine::initialize(); a.setAttribute(Qt::AA_DontUseNativeMenuBar,true); QString appName("RCSE"); a.setApplicationName(appName); QString version = QObject::tr("Unknown"); #ifdef VERSION_MINOR #ifdef VERSION_MAJOR #ifdef VERSION_MIDDLE version = QString("%1.%2.%3").arg(VERSION_MAJOR).arg(VERSION_MIDDLE).arg(VERSION_MINOR); #endif #endif #endif a.setApplicationVersion(version); registerQmlTypes(); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QString locale = QLocale::system().name(); // Ressources //QResource::registerResource(appName+".rcc"); QTranslator rolisteamTranslator; rolisteamTranslator.load(":/translations/rcse_" + locale); a.installTranslator(&rolisteamTranslator); QTranslator qtTranslator; qtTranslator.load(":/translations/qt_" + locale); a.installTranslator(&qtTranslator); QStringList translationCLI; translationCLI << "-t"<<"--translation"; QStringList argList = a.arguments(); foreach(QString str, translationCLI) { int pos = argList.indexOf(str); if(pos!=-1) { if(argList.size()>pos+1) { QTranslator* cliTranslator = new QTranslator(); cliTranslator->load(argList.at(pos+1)); a.installTranslator(cliTranslator); } } }
Kernel::Kernel(const RuntimeConfiguration &config, QObject *parent) : QObject(parent) , m_runtimeConfiguration(config) , m_storage(new JsonStorage(this, this)) , m_qmlEngine(new QQmlEngine(0)) // leak the engine, no point in wasting shutdown time. Also we get a qmldebug server crash if it's parented to qApp, which Kernel is , m_settings(config.settings() ? config.settings() : new Settings(this)) , m_controller(new Controller(m_qmlEngine->rootContext(), this, m_storage, m_settings, this)) , m_pluginModel(new PluginModel(this)) #ifndef NO_WEBDAV , m_webDavSyncer(new WebDAVSyncer(this)) #endif #if defined(QT_WIDGETS_LIB) && !defined(QT_NO_SYSTRAY) , m_systrayIcon(0) , m_trayMenu(0) #endif { QFontDatabase::addApplicationFont(QStringLiteral(":/fonts/fontawesome-webfont.ttf")); QFontDatabase::addApplicationFont(QStringLiteral(":/fonts/open-sans/OpenSans-Regular.ttf")); qApp->setFont(QFont(QStringLiteral("Open Sans"))); m_qmlEngine->rootContext()->setObjectName(QStringLiteral("QQmlContext")); // GammaRay convenience registerQmlTypes(); qmlContext()->setContextProperty(QStringLiteral("_controller"), m_controller); qmlContext()->setContextProperty(QStringLiteral("_storage"), m_storage); qmlContext()->setContextProperty(QStringLiteral("_pluginModel"), m_pluginModel); qmlContext()->setContextProperty(QStringLiteral("_loadManager"), m_controller->loadManager()); qmlContext()->setContextProperty(QStringLiteral("_settings"), m_settings); #ifndef NO_WEBDAV qmlContext()->setContextProperty("_webdavSync", m_webDavSyncer); #endif connect(m_controller, &Controller::currentTaskChanged, this, &Kernel::onTaskStatusChanged); connect(m_qmlEngine, &QQmlEngine::quit, qGuiApp, &QGuiApplication::quit); QMetaObject::invokeMethod(m_storage, "load", Qt::QueuedConnection); // Schedule a load. Don't do it directly, it will deadlock in instance() QMetaObject::invokeMethod(this, "maybeLoadPlugins", Qt::QueuedConnection); QMetaObject::invokeMethod(m_controller, "updateWebDavCredentials", Qt::QueuedConnection); if (m_runtimeConfiguration.useSystray() && m_settings->useSystray()) setupSystray(); const QDateTime currentDateTime = QDateTime::currentDateTime(); m_currentDate = currentDateTime.date(); connect(&m_dayChangedTimer, &QTimer::timeout, this, &Kernel::checkDayChanged); m_dayChangedTimer.start(5 * 60 * 1000); // every 5 minutes instead of daily in case of suspend // Startup counts as dayChanged, so handlers are run QMetaObject::invokeMethod(this, "dayChanged", Qt::QueuedConnection); }
PwDatabaseFacade::PwDatabaseFacade(QObject* parent) : QObject(parent), _searchResultDataModel() { db = NULL; _locked = true; _searchResultDataModel.setParent(this); registerQmlTypes(); }