14#include "mainwindow.h"
16#include <QApplication>
20#include <QSharedPointer>
21#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
22 #include <QRegularExpression>
24#if defined(Q_OS_ANDROID) && (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
28#include "RabbitCommonTools.h"
31#include "FrmUpdater.h"
34 #include "QUIWidget/QUIWidget.h"
37#include <QLoggingCategory>
39static Q_LOGGING_CATEGORY(log,
"App.Main")
41int main(
int argc,
char *argv[])
45 qDebug(log) <<
"Version:" << RabbitRemoteControl_VERSION;
46 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
50#if (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID) \
51 && (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)))
58 QString szPlatform = qEnvironmentVariable(
"QT_QPA_PLATFORM");
59 if(szPlatform.isEmpty()
60 || -1 != szPlatform.indexOf(QRegularExpression(
"wayland.*")))
61 qputenv(
"QT_QPA_PLATFORM",
"xcb");
62 qInfo(log) <<
"QT_QPA_PLATFORM:" << szPlatform <<
"\nCurrent Qt Platform is:"
63 << qEnvironmentVariable(
"QT_QPA_PLATFORM")
64 <<
"; This can be modified with the environment variables QT_QPA_PLATFORM:\n"
65 <<
"export QT_QPA_PLATFORM=xcb\n Optional: xcb; vnc";
67#if (QT_VERSION > QT_VERSION_CHECK(5,6,0)) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
68 QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
70#if defined(Q_OS_ANDROID) && (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
71 QtAndroid::hideSplashScreen();
78 QApplication::setApplicationVersion(RabbitRemoteControl_VERSION);
79 QApplication::setApplicationName(
"RabbitRemoteControl");
80#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
81 QApplication::setDesktopFileName(QLatin1String(
"RabbitRemoteControl.desktop"));
84 QApplication app(argc, argv);
86 RabbitCommon::CTools::Instance()->Init();
88 qInfo(log) << app.applicationName() +
" " + app.applicationVersion()
89 +
" " + QObject::tr(
"Start") +
" ......"
90 <<
"\n" << app.arguments();
92 QSharedPointer<QTranslator> tApp =
93 RabbitCommon::CTools::Instance()->InstallTranslator(
"RabbitRemoteControlApp");
95 app.setApplicationDisplayName(QObject::tr(
"Rabbit Remote Control"));
96 app.setOrganizationName(QObject::tr(
"Kang Lin Studio"));
100 if(qEnvironmentVariable(
"SNAP").isEmpty()
101 && qEnvironmentVariable(
"FLATPAK_ID").isEmpty()) {
102 QSharedPointer<CFrmUpdater> pUpdate(
new CFrmUpdater());
104 QIcon icon = QIcon::fromTheme(
"app");
107 auto sizeList = icon.availableSizes();
108 if(!sizeList.isEmpty()){
109 QPixmap p = icon.pixmap(*sizeList.begin());
110 pUpdate->SetTitle(p.toImage());
113 if(app.arguments().length() > 1) {
115 pUpdate->GenerateUpdateJson();
116 pUpdate->GenerateUpdateXml();
118 qCritical(log) <<
"Generate update fail";
120 qInfo(log) << app.applicationName() +
" " + app.applicationVersion()
121 +
" " + QObject::tr(
"Generate update json file End");
125 qCritical(log) <<
"new CFrmUpdater() fail";
135#ifdef BUILD_QUIWidget
136 QSharedPointer<QUIWidget> quiwidget(
new QUIWidget(
nullptr,
true));
137 bool check = quiwidget->connect(w, SIGNAL(sigFullScreen()),
138 SLOT(showFullScreen()));
140 check = quiwidget->connect(w, SIGNAL(sigShowNormal()),
145 quiwidget->setMainWidget(w);
152 }
catch (std::exception &e) {
153 qCritical(log) <<
"exception:" << e.what();
155 qCritical(log) <<
"exception:";
158#ifndef BUILD_QUIWidget
162 RabbitCommon::CTools::Instance()->Clean();
164 RabbitCommon::CTools::Instance()->RemoveTranslator(tApp);
169 qInfo(log) << app.applicationName() +
" " + app.applicationVersion() +
" " + QObject::tr(
"End");