bool DesignerApp::initApplication(QString cmdLine) { QLocale::setDefault(QLocale(QLocale::English)); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QPixmap pixmap(":/designer/splash.png"); QSplashScreen *splash = new QSplashScreen(pixmap); splash->show(); splash->showMessage(tr("Loading...")); processEvents(); writeConfigValue("", "apppath", QtSingleApplication::applicationFilePath()); dbIgame = QSqlDatabase::addDatabase("QMYSQL","igame"); dbIgame.setDatabaseName("MoDeL"); dbIgame.setHostName("localhost"); dbIgame.setUserName("root"); dbIgame.setPassword("lovewin"); dbIgame.open(); DesignerViewMgr::initializeIfNotYet(); DesignerDocMgr::initializeIfNotYet(); DesignerModelMgr::initializeIfNotYet(); DesignerExtensionMgr::initializeIfNotYet(); DesignerMainWnd* mainWnd = DesignerMainWnd::globalCreateNewMainWnd(); setActivationWindow(mainWnd); QObject::connect(this, SIGNAL(messageReceived(const QString&)), mainWnd, SLOT(instanceMessageReceived(const QString&))); splash->setWindowFlags(Qt::WindowStaysOnTopHint); splash->setParent(mainWnd); splash->show(); QTimer::singleShot(1500, splash, SLOT(close())); if(cmdLine!="/new") mainWnd->instanceMessageReceived(cmdLine); while(splash->isVisible()) { processEvents(); } return true; }
int main(int argc, char* argv[]) { QApplication app(argc, argv); app.setApplicationName("digitalnotewallet"); app.setApplicationVersion(Settings::instance().getVersion()); app.setQuitOnLastWindowClosed(false); #ifndef Q_OS_MAC QApplication::setStyle(QStyleFactory::create("Fusion")); #endif CommandLineParser cmdLineParser(nullptr); Settings::instance().setCommandLineParser(&cmdLineParser); bool cmdLineParseResult = cmdLineParser.process(app.arguments()); Settings::instance().load(); #ifdef Q_OS_WIN if(!cmdLineParseResult) { QMessageBox::critical(nullptr, QObject::tr("Error"), cmdLineParser.getErrorText()); return app.exec(); } else if (cmdLineParser.hasHelpOption()) { QMessageBox::information(nullptr, QObject::tr("Help"), cmdLineParser.getHelpText()); return app.exec(); } #endif LoggerAdapter::instance().init(); QString dataDirPath = Settings::instance().getDataDir().absolutePath(); if (!QDir().exists(dataDirPath)) { QDir().mkpath(dataDirPath); } QLockFile lockFile(Settings::instance().getDataDir().absoluteFilePath(QApplication::applicationName() + ".lock")); if (!lockFile.tryLock()) { QMessageBox::warning(nullptr, QObject::tr("Fail"), QString("%1 wallet already running").arg(CurrencyAdapter::instance().getCurrencyDisplayName())); return 0; } QLocale::setDefault(QLocale::c()); SignalHandler::instance().init(); QObject::connect(&SignalHandler::instance(), &SignalHandler::quitSignal, &app, &QApplication::quit); QSplashScreen* splash = new QSplashScreen(QPixmap(":images/splash"), Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint); if (!splash->isVisible()) { splash->show(); } splash->showMessage(QObject::tr("Loading blockchain..."), Qt::AlignLeft | Qt::AlignBottom, Qt::black); app.processEvents(); qRegisterMetaType<CryptoNote::TransactionId>("CryptoNote::TransactionId"); qRegisterMetaType<quintptr>("quintptr"); if (!NodeAdapter::instance().init()) { return 0; } splash->finish(&MainWindow::instance()); MainWindow::instance().show(); WalletAdapter::instance().open(""); QObject::connect(QApplication::instance(), &QApplication::aboutToQuit, []() { MainWindow::instance().quit(); if (WalletAdapter::instance().isOpen()) { WalletAdapter::instance().close(); } NodeAdapter::instance().deinit(); }); return app.exec(); }