Files
Flora/src/main.cpp
T

59 lines
2.2 KiB
C++
Raw Normal View History

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QCommandLineParser>
#include "app/VaultManager.h"
#include "app/WindowController.h"
#include "core/SettingsStore.h"
#include "git/GitManager.h"
#include "sync/SyncManager.h"
#include <cmark-gfm.h>
#include <git2.h>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
app.setApplicationName("Flora");
app.setOrganizationName("Flora");
app.setApplicationVersion("0.0.1");
QCommandLineParser parser;
parser.setApplicationDescription("Минималистичный markdown-заметочник с git-историей");
parser.addHelpOption();
parser.addVersionOption();
parser.process(app);
// Версии библиотек — быстрая проверка, что зависимости подключены и слинкованы.
int gitMajor = 0, gitMinor = 0, gitRev = 0;
git_libgit2_version(&gitMajor, &gitMinor, &gitRev);
qInfo("Flora %s | cmark-gfm %s | libgit2 %d.%d.%d",
qPrintable(app.applicationVersion()),
cmark_version_string(),
gitMajor, gitMinor, gitRev);
SettingsStore settingsStore;
GitManager gitManager;
SyncManager syncManager;
VaultManager vaultManager(&settingsStore, &gitManager);
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("settingsStore", &settingsStore);
engine.rootContext()->setContextProperty("gitManager", &gitManager);
engine.rootContext()->setContextProperty("syncManager", &syncManager);
engine.rootContext()->setContextProperty("vaultManager", &vaultManager);
WindowController windowController(
&engine, QStringLiteral("qrc:/qt/qml/Flora/qml/MainWindow.qml"));
engine.rootContext()->setContextProperty("windowController", &windowController);
// Основное окно = последнее (основное) хранилище. Если хранилищ нет —
// откроется мастер первого запуска.
windowController.openWindow(settingsStore.currentVault());
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}