Files
GUI/src/main.cpp

122 lines
4.0 KiB
C++

#include "windows/MainWindow.h"
#include "UsctApplication.h"
#include "windows/LoginDialog.h"
#include "db/SQLHelper.h"
#include <QTextCodec>
#include <QFontDatabase>
#include <QDebug>
#include <QThread>
#include <QTimer>
#include "log/UserOperationLog.h"
#include <QTranslator>
#include <src/device/DeviceManager.h>
#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 <QFileSystemWatcher>
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<QString, uint>>("QPair<QString, uint>");
qRegisterMetaType<Qt::Orientation>("Qt::Orientation");
qRegisterMetaType<ActionResult>("ActionResult");
qRegisterMetaType<QMap<QString,int>>("QMap<QString,int>");
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*>(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<Qt::GestureType> 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;
}