Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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);
            }
        }
    }
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
PwDatabaseFacade::PwDatabaseFacade(QObject* parent) : QObject(parent), _searchResultDataModel() {
    db = NULL;
    _locked = true;
    _searchResultDataModel.setParent(this);
    registerQmlTypes();
}