Files
Button/main.cpp
T
2026-06-25 15:28:46 +03:00

60 lines
2.0 KiB
C++

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QCommandLineParser>
#include <QFileInfo>
#include <QDir>
#include <QDebug>
#include "configmanager.h"
#include "buttonsmodel.h"
#include "buttoncontroller.h"
#include "settingscontainer.h"
#include "systeminfo.h"
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", "qtvirtualkeyboard");
QGuiApplication app(argc, argv);
QCoreApplication::setApplicationName("ButtonTask");
QCoreApplication::setOrganizationName("ButtonTask");
QCoreApplication::setApplicationVersion("2.5");
QCommandLineParser parser;
parser.setApplicationDescription("ButtonTask v2 - configurable button panel");
parser.addHelpOption();
parser.addVersionOption();
QCommandLineOption configOpt(QStringList() << "c" << "config",
"Path to config.json",
"path");
parser.addOption(configOpt);
parser.process(app);
QString configPath = parser.value(configOpt);
if (configPath.isEmpty())
configPath = qEnvironmentVariable("BUTTONTASK_CONFIG");
if (configPath.isEmpty())
configPath = QCoreApplication::applicationDirPath() + "/config/config.json";
qInfo() << "Using config:" << configPath;
ConfigManager config(configPath);
ButtonsModel model(&config);
ButtonController controller(&config, &model);
SettingsContainer settings(&config);
SystemInfo systemInfo;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("config", &config);
engine.rootContext()->setContextProperty("buttonsModel", &model);
engine.rootContext()->setContextProperty("btnController", &controller);
engine.rootContext()->setContextProperty("settingsContainer", &settings);
engine.rootContext()->setContextProperty("systemInfo", &systemInfo);
engine.load(QUrl(QStringLiteral("qrc:/qml/Main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}