Files
GUI/src/main.cpp

115 lines
2.9 KiB
C++
Raw Normal View History

2021-10-25 15:00:09 +08:00
#include "mainwindow.h"
2021-10-09 16:38:34 +08:00
#include <QApplication>
#include "loginwindow.h"
2021-10-15 11:52:23 +08:00
#include "InputObject.h"
#include <QQmlApplicationEngine>
2021-12-23 10:09:35 +08:00
#include "db/SQLHelper.h"
2021-10-21 15:56:42 +08:00
#include <QTextCodec>
2021-10-25 15:00:09 +08:00
#include <QFontDatabase>
2021-11-19 13:20:17 +08:00
#include <QDebug>
#include <QThread>
#include <QTimer>
2021-11-19 15:36:12 +08:00
#include "log/UserOperationLog.h"
2021-12-07 14:14:20 +08:00
#include <QTranslator>
2022-01-11 13:07:42 +08:00
#include <src/device/DeviceManager.h>
2021-12-07 14:14:20 +08:00
#include "json/jsonobject.h"
#include "locker.h"
#include "languageswitcher.h"
2021-10-25 15:00:09 +08:00
QString loadFontFromFile(QString path)
{
static QString font;
static bool loaded = false;
if (!loaded)
{
loaded = true;
int loadedFontID = QFontDatabase::addApplicationFont(path);
QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID);
if (!loadedFontFamilies.empty())
font = loadedFontFamilies.at(0);
}
return font;
}
int main(int argc, char* argv[])
2021-10-09 16:38:34 +08:00
{
2021-10-15 11:52:23 +08:00
//QLocale::setDefault(QLocale::English);
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
2021-10-25 15:00:09 +08:00
#ifdef CUTE_STYLE
qputenv("QT_VIRTUALKEYBOARD_STYLE", QByteArray("retro"));
#endif // CUTE_STYLE
2021-10-15 11:52:23 +08:00
//qputenv("QT_LOGGING_RULES", QByteArray("qt.virtualkeyboard=true"));
2021-10-25 15:00:09 +08:00
2021-10-15 11:52:23 +08:00
QApplication a(argc, argv);
2021-10-20 15:55:15 +08:00
QString layouts_path = QString(QCoreApplication::applicationDirPath()).append("/layouts");
qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", QByteArray(layouts_path.toStdString().c_str()));
2021-10-25 15:00:09 +08:00
QTextCodec* codec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale(codec);
2021-12-23 10:09:35 +08:00
//multi-language suppport
QTranslator translator;
LanguageSwitcher::Instance()->setTranslator(&translator);
LanguageSwitcher::Instance()->setDefaultLanguage(JsonObject::Instance()->defaultLanguage());
a.installTranslator(&translator);
2021-10-25 15:00:09 +08:00
2021-12-23 10:09:35 +08:00
//QString fontName = loadFontFromFile(":/fonts/MicrosoftYahei.ttf");
QString fontName = loadFontFromFile(":/fonts/DroidSansFallback.ttf");
2021-10-25 15:00:09 +08:00
QFont font(fontName);
QApplication::setFont(font);
InputObject* obj = new InputObject();
2021-10-15 11:52:23 +08:00
a.installEventFilter(obj);
2021-11-19 13:20:17 +08:00
SQLHelper::Open();
MainWindow w;
2021-11-26 10:49:09 +08:00
UserOperationLog::Default()->init();
2021-12-07 14:14:20 +08:00
//暂时为了调试关闭锁屏
//Locker::Instance()->start();
//QObject::connect(obj, SIGNAL(touchScreen()), Locker::Instance(), SLOT(refreshTimer()));
2022-01-18 16:40:18 +08:00
QList<Qt::GestureType> gestures;
gestures << Qt::SwipeGesture;
w.grabGestures(gestures);
2021-10-25 15:00:09 +08:00
2021-11-19 13:20:17 +08:00
QStringList app_args = a.arguments();
2022-01-19 14:24:16 +08:00
int ret = 0;
2021-11-19 13:20:17 +08:00
if (app_args.contains("-d"))
2022-01-18 16:40:18 +08:00
//if (true)
2021-12-07 14:14:20 +08:00
{
2022-01-19 14:24:16 +08:00
2021-12-07 14:14:20 +08:00
w.debugConsoleOn();
2022-01-19 14:24:16 +08:00
w.showFullScreen();
2021-12-07 14:14:20 +08:00
qInstallMessageHandler(MainWindow::QMessageOutput);
QThread thread;
StdOutRedirector redir;
redir.setOutputTF(w.getEdit());
QTimer Timer;
redir.moveToThread(&thread);
QObject::connect(&Timer, SIGNAL(timeout()), &redir, SLOT(readOutsToTF()));
fflush(stdout);
2022-01-19 14:24:16 +08:00
Timer.start(10000);
2021-12-07 14:14:20 +08:00
thread.start();
2022-01-19 14:24:16 +08:00
2022-01-18 16:40:18 +08:00
DeviceManager::Default()->initDevice();
2021-12-07 14:14:20 +08:00
w.requestLogin();
2022-01-11 13:07:42 +08:00
2022-01-14 14:22:07 +08:00
ret = a.exec();
2021-12-07 14:14:20 +08:00
thread.terminate();
2022-01-14 14:22:07 +08:00
2021-12-07 14:14:20 +08:00
}
else {
w.showFullScreen();
2022-01-18 16:40:18 +08:00
DeviceManager::Default()->initDevice();
2021-12-07 14:14:20 +08:00
w.requestLogin();
2022-01-19 14:24:16 +08:00
ret = a.exec();
2021-11-19 13:20:17 +08:00
}
2022-01-19 14:24:16 +08:00
DeviceManager::Default()->close();
return ret;
2021-10-09 16:38:34 +08:00
}