#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" 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")); 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())); } bool sqlConnected= SQLHelper::Open(); if (!sqlConnected) { //TODO: 数据库连接失败错误 exit(-99); } MainWindow w; DialogManager::Default()->init(&w); UserOperationLog::Default()->init(); Locker::getInstance()->start(); 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(); if (app_args.contains("-d")) //if (true) { w.debugConsoleOn(); w.showFullScreen(); 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); Timer.start(1000); thread.start(); DeviceManager::Default()->initDevice(); ret = a.exec(); thread.terminate(); } else { w.showFullScreen(); DeviceManager::Default()->initDevice(); ret = a.exec(); } DeviceManager::Default()->close(); return ret; }