#include "LoginWindow.h" #include "Client.h" #include "AppTheme.h" #include "AppConfig.h" #include "UserSettings.h" #include "UiHelpers.h" #include "Updater.h" #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) #include #endif namespace { void setupHighDpi() { #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) QGuiApplication::setHighDpiScaleFactorRoundingPolicy( Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); #endif qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); } } int main(int argc, char *argv[]) { setupHighDpi(); int applyRc = 0; if (Updater::runApplyUpdateIfRequested(argc, argv, &applyRc)) return applyRc; QApplication app(argc, argv); app.setQuitOnLastWindowClosed(false); AppConfig::instance().load(); UserSettings::instance().load(); AppTheme::loadFonts(); app.setFont(AppTheme::appFont()); app.setStyleSheet(AppTheme::globalQss()); { QPalette pal = app.palette(); pal.setColor(QPalette::ToolTipBase, QColor(QStringLiteral("#FFFFFF"))); pal.setColor(QPalette::ToolTipText, QColor(QStringLiteral("#1A1A1A"))); app.setPalette(pal); } app.setApplicationName(QStringLiteral("NIM")); app.setOrganizationName(QStringLiteral("NIM")); app.setWindowIcon(UiHelpers::appIcon()); LoginWindow login; QObject::connect(&login, &LoginWindow::loginSucceeded, [&](const QString &account, const QString &nickname) { auto *mainWin = new Client(account, nickname); mainWin->setAttribute(Qt::WA_DeleteOnClose); QObject::connect(mainWin, &Client::loggedOut, &login, [&login]() { login.prepareAfterLogout(); login.show(); login.raise(); login.activateWindow(); }); mainWin->show(); login.hide(); }); Updater::scheduleCleanupAfterStart(); login.show(); return app.exec(); }