#include #include #include #include #include #include #include "app/VaultManager.h" #include "app/WindowController.h" #include "core/DocumentManager.h" #include "core/SettingsStore.h" #include "core/VaultIndex.h" #include "git/GitManager.h" #include "markdown/MdParser.h" #include "sync/SyncManager.h" #include #include int main(int argc, char *argv[]) { // Единообразный светлый стиль — без нативной тёмной темы macOS QQuickStyle::setStyle("Basic"); 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); DocumentManager documentManager; MdParser mdParser; VaultIndex vaultIndex; QQmlApplicationEngine engine; QObject::connect(&engine, &QQmlApplicationEngine::warnings, [](const QList &list) { for (const QQmlError &e : list) qWarning("QML: %s", qPrintable(e.toString())); }); engine.rootContext()->setContextProperty("settingsStore", &settingsStore); engine.rootContext()->setContextProperty("gitManager", &gitManager); engine.rootContext()->setContextProperty("syncManager", &syncManager); engine.rootContext()->setContextProperty("vaultManager", &vaultManager); engine.rootContext()->setContextProperty("documentManager", &documentManager); engine.rootContext()->setContextProperty("mdParser", &mdParser); engine.rootContext()->setContextProperty("vaultIndex", &vaultIndex); WindowController windowController( &engine, QStringLiteral("qrc:/qt/qml/Flora/qml/MainWindow.qml")); engine.rootContext()->setContextProperty("windowController", &windowController); // Основное окно = последнее (основное) хранилище. Если хранилищ нет — // откроется мастер первого запуска. windowController.openWindow(settingsStore.currentVault()); // Окна создаются через QQmlComponent (WindowController), поэтому проверяем // количество окон, а не engine.rootObjects() (для таких объектов он пуст). if (windowController.windowCount() == 0) { qWarning("=== Не удалось создать окно приложения ==="); return -1; } return app.exec(); }