| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #include "LoginWindow.h"
- #include "Client.h"
- #include "AppTheme.h"
- #include "AppConfig.h"
- #include "UserSettings.h"
- #include "UiHelpers.h"
- #include "Updater.h"
- #include <QtWidgets/QApplication>
- #include <QColor>
- #include <QFont>
- #include <QPalette>
- #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
- #include <QGuiApplication>
- #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();
- }
|