#include "windows/MainWindow.h" #include "UsctApplication.h" #include "windows/LoginDialog.h" #include "db/SQLHelper.h" #include #include #include #include #include #include "log/UserOperationLog.h" #include #include #include "dialogs/DialogManager.h" #include "dialogs/MultyMessageDialogManager.h" #include "action/AsyncAction.h" #include "json/jsonobject.h" #include "src/utilities/Locker.h" #include "src/utilities/LanguageSwitcher.h" #include "utilities/TouchScreenSignalSender.h" #include "keyboard/KeyboardManager.h" #include "appvals/AppGlobalValues.h" #include "log/SystemOperationLog.h" #include 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[]) { //QLocale::setDefault(QLocale::English); //qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); #ifdef CUTE_STYLE //qputenv("QT_VIRTUALKEYBOARD_STYLE", QByteArray("retro")); #endif // CUTE_STYLE //qputenv("QT_LOGGING_RULES", QByteArray("qt.virtualkeyboard=true")); const char* dicomDictPath = "/usr/local/share/dcmtk/dicom.dic"; setenv("DCMDICTPATH", dicomDictPath, 1); UsctApplication a(argc, argv); qRegisterMetaType>("QPair"); qRegisterMetaType("Qt::Orientation"); qRegisterMetaType("ActionResult"); qRegisterMetaType>("QMap"); QString layouts_path = QString(QCoreApplication::applicationDirPath()).append("/layouts"); qputenv("QT_VIRTUALKEYBOARD_LAYOUT_PATH", QByteArray(layouts_path.toStdString().c_str())); QTextCodec* codec = QTextCodec::codecForName("utf8"); QTextCodec::setCodecForLocale(codec); //multi-language suppport LanguageSwitcher::getInstance()->setDefaultLanguage(JsonObject::Instance()->defaultLanguage()); a.installTranslator(LanguageSwitcher::getInstance()->getTranslator()); //QString fontName = loadFontFromFile(":/fonts/MicrosoftYahei.ttf"); QString fontName = loadFontFromFile(":/fonts/DroidSansFallback.ttf"); QFont font(fontName); QApplication::setFont(font); QFile file(":/stylesheet/Dark2.css"); file.open(QFile::ReadOnly); if (file.isOpen()) { a.setStyleSheet(QLatin1String(file.readAll())); } #ifdef _DEBUG QFileSystemWatcher fileWatcher; fileWatcher.addPath("../src/stylesheet/Dark2.css"); QObject::connect(&fileWatcher, &QFileSystemWatcher::fileChanged, [](const QString &path){ QFile file(path); if (file.open(QIODevice::ReadOnly)) { qobject_cast(QApplication::instance())->setStyleSheet(file.readAll()); file.close(); qDebug()<<"style updated!"; } }); #endif AppGlobalValues::setDBconnected(false); MainWindow w; DialogManager::Default()->init(&w); UserOperationLog::Default()->init(); SystemOperationLog::getInstance(); QObject::connect(TouchScreenSignalSender::getInstance(), SIGNAL(touchScreen()), Locker::getInstance(), SLOT(refreshTimer())); QList gestures; gestures << Qt::SwipeGesture; gestures << Qt::PanGesture; w.grabGestures(gestures); QStringList app_args = a.arguments(); int ret = 0; KeyboardManager::getInstance(); UserOperationLog::cleanHistoryLog(); bool sqlConnected= SQLHelper::Open(); if (sqlConnected) { AppGlobalValues::setDBconnected(true); } w.showFullScreen(); DeviceManager::Default()->initDevice(); ret = a.exec(); DeviceManager::Default()->close(); return ret; }