/***************************************************************************** * PokerTH - The open source texas holdem engine * * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Affero General Public License for more details. * * * * You should have received a copy of the GNU Affero General Public License * * along with this program. If not, see . * * * * * * Additional permission under GNU AGPL version 3 section 7 * * * * If you modify this program, or any covered work, by linking or * * combining it with the OpenSSL project's OpenSSL library (or a * * modified version of that library), containing parts covered by the * * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * * permission to convey the resulting work. * * Corresponding Source for a non-source form of such a combination * * shall include the source code for the parts of OpenSSL used as well * * as that of the covered work. * *****************************************************************************/ #include #include #include #include #include #include #include #ifdef __APPLE__ #include #endif #include #include "session.h" #include "startwindowimpl.h" #include "configfile.h" #include "log.h" #include "startsplash.h" #include "game_defs.h" #include #include #ifdef _MSC_VER #ifdef _DEBUG #define _CRTDBG_MAP_ALLOC #include #define ENABLE_LEAK_CHECK() \ { \ int tmpFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \ tmpFlag |= _CRTDBG_LEAK_CHECK_DF; \ _CrtSetDbgFlag(tmpFlag); \ } #endif #endif #ifndef ENABLE_LEAK_CHECK #define ENABLE_LEAK_CHECK() #endif using namespace std; class startWindowImpl; class Game; int main( int argc, char **argv ) { //ENABLE_LEAK_CHECK(); //_CrtSetBreakAlloc(49937); socket_startup(); curl_global_init(CURL_GLOBAL_NOTHING); /////// can be removed for non-qt-guis //////////// QtSingleApplication a( argc, argv ); if (a.sendMessage("Wake up!")) { return 0; } #ifdef __APPLE__ // The following needs to be done directly after the application is created. QDir dir(QApplication::applicationDirPath()); dir.cdUp(); dir.cd("plugins"); QApplication::setLibraryPaths(QStringList(dir.absolutePath())); #endif //create defaultconfig ConfigFile *myConfig = new ConfigFile(argv[0], false); Log *myLog = new Log(myConfig); // set PlastiqueStyle even for mac-version to prevent artefacts on styled widgets a.setStyle(new QPlastiqueStyle); QString myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); //set QApplication default font QFontDatabase::addApplicationFont (myAppDataPath +"fonts/n019003l.pfb"); QFontDatabase::addApplicationFont (myAppDataPath +"fonts/VeraBd.ttf"); QFontDatabase::addApplicationFont (myAppDataPath +"fonts/c059013l.pfb"); QFontDatabase::addApplicationFont (myAppDataPath +"fonts/DejaVuSans-Bold.ttf"); #ifdef _WIN32 QString font1String("QApplication, QWidget, QDialog { font-size: 12px; }"); #elif __APPLE__ // QString font1String("font-family: \"Lucida Grande\";"); QString font1String("QApplication, QWidget, QDialog { font-size: 11px; }"); #elif ANDROID QString font1String("QApplication, QWidget, QDialog { font-family: \"Nimbus Sans L\"; font-size: 26px; }"); QPalette p = a.palette(); p.setColor(QPalette::Button, QColor::fromRgb(80,80,80)); p.setColor(QPalette::Base, QColor::fromRgb(80,80,80)); p.setColor(QPalette::Window, QColor::fromRgb(50,50,50)); p.setColor(QPalette::ButtonText, QColor::fromRgb(255,255,255)); p.setColor(QPalette::Disabled, QPalette::ButtonText, QColor::fromRgb(100,100,100)); p.setColor(QPalette::WindowText, QColor::fromRgb(255,255,255)); p.setColor(QPalette::Disabled, QPalette::WindowText, QColor::fromRgb(100,100,100)); p.setColor(QPalette::Text, QColor::fromRgb(255,255,255)); p.setColor(QPalette::Disabled, QPalette::Text, QColor::fromRgb(100,100,100)); p.setColor(QPalette::Link, QColor::fromRgb(192,192,255)); p.setColor(QPalette::LinkVisited, QColor::fromRgb(192,192,255)); a.setPalette(p); #else QString font1String("QApplication, QWidget, QDialog { font-family: \"Nimbus Sans L\"; font-size: 12px; }"); #endif a.setStyleSheet(font1String + " QDialogButtonBox, QMessageBox { dialogbuttonbox-buttons-have-icons: 1; dialog-ok-icon: url(:/gfx/dialog_ok_apply.png); dialog-cancel-icon: url(:/gfx/dialog_close.png); dialog-close-icon: url(:/gfx/dialog_close.png); dialog-yes-icon: url(:/gfx/dialog_ok_apply.png); dialog-no-icon: url(:/gfx/dialog_close.png) }"); #ifdef ANDROID QDesktopWidget dw; QPixmap pixmap(myAppDataPath + "gfx/gui/misc/welcomepokerth_mobile.png"); pixmap = pixmap.scaled(dw.screenGeometry().width(), dw.screenGeometry().height(), Qt::KeepAspectRatio, Qt::SmoothTransformation); #else QPixmap pixmap(myAppDataPath + "gfx/gui/misc/welcomepokerth_desktop.png"); #endif StartSplash splash(pixmap); if(!myConfig->readConfigInt("DisableSplashScreenOnStartup")) { splash.show(); splash.showMessage(QString("Version %1").arg(POKERTH_BETA_RELEASE_STRING), 0x0042, QColor(255,255,255)); } //Set translations QTranslator qtTranslator; qtTranslator.load(QString(myAppDataPath +"translations/qt_") + QString::fromStdString(myConfig->readConfigString("Language"))); a.installTranslator(&qtTranslator); QTranslator translator; translator.load(QString(myAppDataPath +"translations/pokerth_") + QString::fromStdString(myConfig->readConfigString("Language"))); a.installTranslator(&translator); qRegisterMetaType("unsigned"); qRegisterMetaType >("boost::shared_ptr"); qRegisterMetaType("ServerStats"); qRegisterMetaType("DenyGameInvitationReason"); /////////////////////////////////////////////////// startWindowImpl mainWin(myConfig,myLog); a.setActivationWindow(&mainWin, true); int retVal = a.exec(); curl_global_cleanup(); socket_cleanup(); return retVal; }