#include #include #include #include #include #include #include #include "log.hpp" #include "windowmanage.hpp" #include #include "dbus/dbusvfsinterface.h" #include "log.hpp" #include "windowmanage.hpp" const QString VERSION = "1.0.0"; bool initVLC() { QFileInfo file("/bin/vlc"); return file.isExecutable(); } int main(int argc, char *argv[]) { qInstallMessageHandler(kabase::Log::logOutput); setbuf(stdout, NULL); // set env #ifdef Q_OS_LINUX qputenv("ADB_PATH", "/usr/lib/android-sdk/platform-tools/adb"); qputenv("SERVER_PATH", "/usr/share/kylin-connectivity/scrcpy-server.jar"); qputenv("CONFIG_PATH", "/usr/share/kylin-connectivity/config"); qputenv("KEYMAP_PATH", "/usr/share/kylin-connectivity/keymap"); #endif QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); kabase::WindowManage::setScalingProperties(); kdk::QtSingleApplication app(argc, argv); // update version app.setApplicationVersion(VERSION); app.setWindowIcon(QIcon::fromTheme("kylin-connectivity")); if (app.isRunning()) { qDebug() << "is running"; app.sendMessage("running , 4000"); return 0; } // 加载sdk控件翻译 QTranslator trans; QString locale = QLocale::system().name(); if (locale == "zh_CN") { if (trans.load(":/translations/gui_zh_CN.qm")) { app.installTranslator(&trans); } } else if (locale == "bo_CN") { if (trans.load(":/translations/gui_bo_CN.qm")) { app.installTranslator(&trans); } } // 加载翻译 // 加载自定义翻译文件 QString tranPath("/usr/share/kylin-connectivity/translations/"); QTranslator tran; if (tran.load(QLocale(), QString("kylin-connectivity"), QString("_"), tranPath)) { app.installTranslator(&tran); } else { qWarning() << "Waring : load translation file fail"; } // 加载qt翻译文件, 更改fileDialog英文 QString qtTransPath = QLibraryInfo::location(QLibraryInfo::TranslationsPath); QTranslator tranQt; if (tranQt.load(QLocale(), QString("qt"), QString("_"), qtTransPath)) { app.installTranslator(&tranQt); } else { qWarning() << "Waring : load qt translation file fail"; } MainWindow::getInstance(); // 添加窗管协议 kabase::WindowManage::removeHeader(MainWindow::getInstance()); /* 移动到窗口中间 */ // QRect availableGeometry = qApp->primaryScreen()->availableGeometry(); // MainWindow::getInstance()->move(availableGeometry.width() / 2 - MainWindow::getInstance()->width() / 2, // availableGeometry.height() / 2 - MainWindow::getInstance()->height() / 2); app.setActivationWindow(MainWindow::getInstance()); /* wayland 下最小化拉起 */ if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { QObject::connect(&app, &kdk::QtSingleApplication::messageReceived, [=]() { kabase::WindowManage::activateWindow(MainWindow::getInstance()->getWinId()); }); } MainWindow::getInstance()->show(); kabase::WindowManage::setMiddleOfScreen(MainWindow::getInstance()); if (!initVLC()) { qCritical() << "vlc not installed!"; QMessageBox msgBox; msgBox.setText(QObject::tr( "In order to ensure the normal operation of the program, please install the VLC program first!")); msgBox.setIcon(QMessageBox::Critical); msgBox.exec(); MainWindow::getInstance()->close(); exit(1); } DbusVfsInterface vfsDbus; QDBusConnection connection = QDBusConnection::sessionBus(); connection.registerService(KYLIN_CONNECTIVITY_SERVICE); connection.registerObject(KYLIN_CONNECTIVITY_PATH, &vfsDbus, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals); int ret = app.exec(); return ret; }