diff -r 50fe80adbfcb -r 0b4ac686fc44 QTfrontend/main.cpp --- a/QTfrontend/main.cpp Tue Dec 18 20:48:37 2012 +0400 +++ b/QTfrontend/main.cpp Fri Jan 04 21:44:40 2013 +0400 @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include "hwform.h" #include "hwconsts.h" @@ -39,9 +41,11 @@ #ifdef _WIN32 #include +#elif defined __APPLE__ +#include "CocoaInitializer.h" #endif -#ifdef __APPLE__ -#include "CocoaInitializer.h" +#ifndef _WIN32 +#include #endif @@ -87,6 +91,12 @@ else season = SEASON_NONE; } +#ifndef _WIN32 +void terminateFrontend(int signal) +{ + QCoreApplication::exit(0); +} +#endif bool checkForDir(const QString & dir) { @@ -136,8 +146,25 @@ atexit(releaseCocoaPool); #endif +#ifndef _WIN32 + signal(SIGINT, &terminateFrontend); +#endif + HWApplication app(argc, argv); + QLabel *splash = NULL; +#if defined Q_WS_WIN + QPixmap pixmap(":res/splash.png"); + splash = new QLabel(0, Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint); + splash->setAttribute(Qt::WA_TranslucentBackground); + const QRect deskSize = QApplication::desktop()->screenGeometry(-1); + QPoint splashCenter = QPoint( (deskSize.width() - pixmap.width())/2, + (deskSize.height() - pixmap.height())/2 ); + splash->move(splashCenter); + splash->setPixmap(pixmap); + splash->show(); +#endif + FileEngineHandler engine(argv[0]); flib_init(); @@ -179,9 +206,14 @@ if(parsedArgs.contains("config-dir")) { QFileInfo f(parsedArgs["config-dir"]); - *cConfigDir = f.absoluteFilePath(); + cfgdir->setPath(f.absoluteFilePath()); custom_config = true; } + else + { + cfgdir->setPath(QDir::homePath()); + custom_config = false; + } app.setStyle(new QPlastiqueStyle()); @@ -193,14 +225,9 @@ qRegisterMetaType("HWTeam"); - bindir->cd("bin"); // workaround over NSIS installer + bindir->cd(QCoreApplication::applicationDirPath()); - if(cConfigDir->length() == 0) - cfgdir->setPath(cfgdir->homePath()); - else - cfgdir->setPath(*cConfigDir); - - if(cConfigDir->length() == 0) + if(custom_config == false) { #ifdef __APPLE__ checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"); @@ -241,14 +268,14 @@ datadir->cd(bindir->absolutePath()); datadir->cd(*cDataDir); - if(!datadir->cd("hedgewars/Data")) + if(!datadir->cd("Data")) { QMessageBox missingMsg(QApplication::activeWindow()); missingMsg.setIcon(QMessageBox::Critical); missingMsg.setWindowTitle(QMessageBox::tr("Main - Error")); missingMsg.setText(QMessageBox::tr("Failed to open data directory:\n%1\n\n" "Please check your installation!"). - arg(datadir->absolutePath()+"/hedgewars/Data")); + arg(datadir->absolutePath()+"/Data")); missingMsg.setWindowModality(Qt::WindowModal); missingMsg.exec(); return 1; @@ -307,6 +334,7 @@ break; default : fname = "qt.css"; + break; } // load external stylesheet if there is any @@ -321,6 +349,10 @@ app.form = new HWForm(NULL, style); app.form->show(); + + if(splash) + splash->close(); + int r = app.exec(); flib_quit();