中国象棋控件 2.0.15
载入中...
搜索中...
未找到
main.cpp
1// Author: Kang Lin <kl222@126.com>
2
3#include <QApplication>
4#include <QLoggingCategory>
5#include <QTranslator>
6
7#include "FrmChineseChess.h"
8#include "RabbitCommonDir.h"
9#include "RabbitCommonTools.h"
10#include "FrmUpdater/FrmUpdater.h"
11
12#include "MainWindow.h"
13
14static Q_LOGGING_CATEGORY(log, "App.Main")
15int main(int argc, char *argv[])
16{
17 int nRet = 0;
18#ifdef ChineseChessApp_VERSION
19 QApplication::setApplicationVersion(ChineseChessApp_VERSION);
20#endif
21 QApplication::setApplicationName("ChineseChessControl");
22 QApplication app(argc, argv);
23
24 RabbitCommon::CTools::Instance()->Init();
25 QStringList lstPermissions;
26 lstPermissions << "android.permission.WRITE_EXTERNAL_STORAGE"
27 << "android.permission.READ_EXTERNAL_STORAGE";
28 RabbitCommon::CTools::AndroidRequestPermission(lstPermissions);
29 CFrmChineseChess::InitResource(RabbitCommon::CTools::Instance()->GetLanguage());
30
31 QSharedPointer<QTranslator> translator =
32 RabbitCommon::CTools::Instance()->InstallTranslator("ChineseChessApp");
33
34 app.setApplicationDisplayName(QObject::tr("Chinese chess"));
35
36#ifdef HAVE_UPDATE
37 // Check update version
38 QScopedPointer<CFrmUpdater> pUpdater(new CFrmUpdater());
39#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
40 if(qEnvironmentVariable("SNAP").isEmpty()
41 && qEnvironmentVariable("FLATPAK_ID").isEmpty())
42#else
43 if(qgetenv("SNAP").isEmpty()
44 && qgetenv("FLATPAK_ID").isEmpty())
45#endif
46 {
47 if(pUpdater) {
48 pUpdater->setAttribute(Qt::WA_DeleteOnClose, false);
49 QIcon icon = QIcon::fromTheme(":/image/Chess");
50 if(!icon.isNull()) {
51 auto sizeList = icon.availableSizes();
52 if(!sizeList.isEmpty()) {
53 QPixmap p = icon.pixmap(*sizeList.begin());
54 pUpdater->SetTitle(p.toImage());
55 }
56 }
57 if(app.arguments().length() > 1) {
58 try {
59 pUpdater->GenerateUpdateJson();
60 pUpdater->GenerateUpdateXml();
61 } catch(...) {
62 qCritical(log) << "Generate update fail";
63 }
64 qInfo(log) << app.applicationName() + " " + app.applicationVersion()
65 + " " + QObject::tr("Generate update json file End");
66 return 0;
67 }
68 } else {
69 qCritical(log) << "new CFrmUpdater() fail";
70 }
71 }
72#endif // #ifdef HAVE_UPDATE
73
74 MainWindow w;
75 RC_SHOW_WINDOW(&w);
76
77 nRet = app.exec();
78
79 if(translator)
80 RabbitCommon::CTools::Instance()->RemoveTranslator(translator);
82 RabbitCommon::CTools::Instance()->Clean();
83
84 return nRet;
85}
static int CleanResource()
清理资源,仅在程序结束时调用一次
static int InitResource(const QString szLanguage)
初始化资源,仅在程序开始时调用一次