diff --git a/pokerth.pro b/pokerth.pro index c1f4c983..617b891d 100755 --- a/pokerth.pro +++ b/pokerth.pro @@ -15,6 +15,8 @@ DEPENDPATH += . \ src/engine/local_engine \ src/gui/qt \ src/net/common \ + src/gui/qt/qttools \ + src/gui/qt/qttools/appdirpath \ src/gui/qt/mainwindow \ src/gui/qt/mainwindow/startsplash \ src/gui/qt/aboutpokerth \ @@ -40,6 +42,8 @@ INCLUDEPATH += . \ src/gui/qt/defaultconfig \ src/gui/qt/connecttoserverdialog \ src/core \ + src/gui/qt/qttools \ + src/gui/qt/qttools/appdirpath \ src/gui/qt/mainwindow \ src/gui/qt/mainwindow/startsplash \ src/gui/qt/aboutpokerth \ @@ -64,6 +68,7 @@ HEADERS += src/game.h \ src/engine/riverinterface.h \ src/engine/turninterface.h \ src/gui/guiinterface.h \ + src/gui/qttoolsinterface.h \ src/net/clientcallback.h \ src/net/clientcontext.h \ src/net/clientexception.h \ @@ -89,6 +94,8 @@ HEADERS += src/game.h \ src/engine/local_engine/localriver.h \ src/engine/local_engine/localturn.h \ src/engine/local_engine/tools.h \ + src/gui/qt/qttools/qttoolswrapper.h \ + src/gui/qt/qttools/appdirpath/appdirpath.h \ src/gui/qt/mainwindow/mainwindowimpl.h \ src/gui/qt/mainwindow/mycardspixmaplabel.h \ src/gui/qt/mainwindow/startsplash/startsplash.h \ @@ -101,8 +108,7 @@ HEADERS += src/game.h \ src/gui/qt/newlocalgamedialog/newgamedialogimpl.h \ src/gui/qt/settingsdialog/settingsdialogimpl.h \ src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h \ - src/gui/qt/waitforservertostartgamedialog/waitforservertostartgamedialogimpl.h \ - src/gui/qt/defaultconfig/defaultconfig.h + src/gui/qt/waitforservertostartgamedialog/waitforservertostartgamedialogimpl.h FORMS += src/gui/qt/mainwindow.ui \ src/gui/qt/aboutpokerth.ui \ src/gui/qt/connecttoserverdialog.ui \ @@ -125,6 +131,7 @@ SOURCES += src/game.cpp \ src/engine/riverinterface.cpp \ src/engine/turninterface.cpp \ src/gui/guiinterface.cpp \ + src/gui/qttoolsinterface.cpp \ src/core/common/thread.cpp \ src/core/tinyxml/tinystr.cpp \ src/core/tinyxml/tinyxml.cpp \ @@ -162,6 +169,8 @@ SOURCES += src/game.cpp \ src/net/common/netexception.cpp \ src/net/common/receiverhelper.cpp \ src/gui/qt/guiwrapper.cpp \ + src/gui/qt/qttools/qttoolswrapper.cpp \ + src/gui/qt/qttools/appdirpath/appdirpath.cpp \ src/gui/qt/mainwindow/mainwindowimpl.cpp \ src/gui/qt/mainwindow/mycardspixmaplabel.cpp \ src/gui/qt/mainwindow/startsplash/startsplash.cpp \ @@ -173,8 +182,7 @@ SOURCES += src/game.cpp \ src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp \ src/gui/qt/settingsdialog/settingsdialogimpl.cpp \ src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp \ - src/gui/qt/waitforservertostartgamedialog/waitforservertostartgamedialogimpl.cpp \ - src/gui/qt/defaultconfig/defaultconfig.cpp + src/gui/qt/waitforservertostartgamedialog/waitforservertostartgamedialogimpl.cpp RESOURCES += src/gui/qt/resources.qrc TEMPLATE = vcapp diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index 29570710..eb298161 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -35,12 +35,219 @@ using namespace std; ConfigFile::ConfigFile(std::string path) : myPath(path) { + + // !!!! Revisionsnummer der Configdefaults !!!!! + configRev = 17; + + +#ifdef _WIN32 + //Programmordner erstellen + myPath += "\\pokerth\\"; + mkdir(myPath.c_str()); + //Log-File Ordner auch erstellen + logDir = myPath; + logDir += "log-files\\"; + mkdir(logDir.c_str()); + //data Ordner auch erstellen + dataDir = myPath; + dataDir += "data\\"; + mkdir(dataDir.c_str()); + +#else + //Programmordner erstellen + myPath += "/.pokerth/"; + mkdir(myPath.c_str(), MODUS) ; + //Log-File Ordner auch erstellen + logDir = myPath; + logDir += "log-files/"; + mkdir(logDir.c_str(), MODUS); + //data Ordner auch erstellen + dataDir = myPath; + dataDir += "data/"; + mkdir(dataDir.c_str(), MODUS); + +#endif + + myPath += "config.xml"; + + //Prüfen ob Configfile existiert --> sonst anlegen + + TiXmlDocument doc(myPath); + if(!doc.LoadFile()){ createDefaultConfig(); } + else { + + //Prüfen ob die Revision stimmt ansonsten löschen und neue anlegen + int temp = 0; + TiXmlHandle docHandle( &doc ); + TiXmlElement* conf = docHandle.FirstChild( "PokerTH" ).FirstChild( "Configuration" ).FirstChild( "ConfigRevision" ).ToElement(); + if ( conf ) { conf->QueryIntAttribute("value", &temp ); } + + if (temp < configRev) { /*löschen()*/ createDefaultConfig() ;} + } } ConfigFile::~ConfigFile() { } +void ConfigFile::createDefaultConfig() { + + //Anlegen! + TiXmlDocument doc; + TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "UTF-8", ""); + doc.LinkEndChild( decl ); + + TiXmlElement * root = new TiXmlElement( "PokerTH" ); + doc.LinkEndChild( root ); +// + TiXmlElement * config; + config = new TiXmlElement( "Configuration" ); + root->LinkEndChild( config ); + + + TiXmlElement * confElement0 = new TiXmlElement( "ConfigRevision" ); + config->LinkEndChild( confElement0 ); + confElement0->SetAttribute("value", configRev); + TiXmlElement * confElement11 = new TiXmlElement( "ShowLeftToolBox" ); + config->LinkEndChild( confElement11 ); + confElement11->SetAttribute("value", 1); + TiXmlElement * confElement22 = new TiXmlElement( "ShowRightToolBox" ); + config->LinkEndChild( confElement22 ); + confElement22->SetAttribute("value", 1); + TiXmlElement * confElement43 = new TiXmlElement( "ShowStatusbarMessages" ); + config->LinkEndChild( confElement43 ); + confElement43->SetAttribute("value", 1); + TiXmlElement * confElement13 = new TiXmlElement( "ShowIntro" ); + config->LinkEndChild( confElement13 ); + confElement13->SetAttribute("value", 1); + TiXmlElement * confElement15 = new TiXmlElement( "ShowFadeOutCardsAnimation" ); + config->LinkEndChild( confElement15 ); + confElement15->SetAttribute("value", 1); + TiXmlElement * confElement19 = new TiXmlElement( "ShowFlipCardsAnimation" ); + config->LinkEndChild( confElement19 ); + confElement19->SetAttribute("value", 1); + TiXmlElement * confElement16 = new TiXmlElement( "FlipsideTux" ); + config->LinkEndChild( confElement16 ); + confElement16->SetAttribute("value", 1); + TiXmlElement * confElement17 = new TiXmlElement( "FlipsideOwn" ); + config->LinkEndChild( confElement17 ); + confElement17->SetAttribute("value", 0); + TiXmlElement * confElement18 = new TiXmlElement( "FlipsideOwnFile" ); + config->LinkEndChild( confElement18 ); + confElement18->SetAttribute("value", ""); + + TiXmlElement * confElement1 = new TiXmlElement( "NumberOfPlayers" ); + config->LinkEndChild( confElement1 ); + confElement1->SetAttribute("value", 7); + TiXmlElement * confElement2 = new TiXmlElement( "StartCash" ); + config->LinkEndChild( confElement2 ); + confElement2->SetAttribute("value", 3000); + TiXmlElement * confElement3 = new TiXmlElement( "SmallBlind" ); + config->LinkEndChild( confElement3 ); + confElement3->SetAttribute("value", 10); + TiXmlElement * confElement12 = new TiXmlElement( "HandsBeforeRaiseSmallBlind" ); + config->LinkEndChild( confElement12 ); + confElement12->SetAttribute("value", 8); + TiXmlElement * confElement4 = new TiXmlElement( "GameSpeed" ); + config->LinkEndChild( confElement4 ); + confElement4->SetAttribute("value", 4); + TiXmlElement * confElement32 = new TiXmlElement( "EngineVersion" ); + config->LinkEndChild( confElement32 ); + confElement32->SetAttribute("value", 0); + TiXmlElement * confElement14 = new TiXmlElement( "PauseBetweenHands" ); + config->LinkEndChild( confElement14 ); + confElement14->SetAttribute("value", 0); + TiXmlElement * confElement5 = new TiXmlElement( "ShowGameSettingsDialogOnNewGame" ); + config->LinkEndChild( confElement5 ); + confElement5->SetAttribute("value", 1); + + TiXmlElement * confElement23 = new TiXmlElement( "NetNumberOfPlayers" ); + config->LinkEndChild( confElement23 ); + confElement23->SetAttribute("value", 7); + TiXmlElement * confElement24 = new TiXmlElement( "NetStartCash" ); + config->LinkEndChild( confElement24 ); + confElement24->SetAttribute("value", 2000); + TiXmlElement * confElement25 = new TiXmlElement( "NetSmallBlind" ); + config->LinkEndChild( confElement25 ); + confElement25->SetAttribute("value", 10); + TiXmlElement * confElement26 = new TiXmlElement( "NetHandsBeforeRaiseSmallBlind" ); + config->LinkEndChild( confElement26 ); + confElement26->SetAttribute("value", 9); + TiXmlElement * confElement27 = new TiXmlElement( "NetGameSpeed" ); + config->LinkEndChild( confElement27 ); + confElement27->SetAttribute("value", 4); + TiXmlElement * confElement33 = new TiXmlElement( "NetEngineVersion" ); + config->LinkEndChild( confElement33 ); + confElement33->SetAttribute("value", 1); + TiXmlElement * confElement28 = new TiXmlElement( "ServerPassword" ); + config->LinkEndChild( confElement28 ); + confElement28->SetAttribute("value", ""); + TiXmlElement * confElement29 = new TiXmlElement( "ServerUseIpv6" ); + config->LinkEndChild( confElement29 ); + confElement29->SetAttribute("value", 0); + TiXmlElement * confElement30 = new TiXmlElement( "ServerPort" ); + config->LinkEndChild( confElement30 ); + confElement30->SetAttribute("value", 7234); + + TiXmlElement * confElement6 = new TiXmlElement( "MyName" ); + config->LinkEndChild( confElement6 ); + confElement6->SetAttribute("value", "Human Player"); + TiXmlElement * confElement34 = new TiXmlElement( "MyAvatar" ); + config->LinkEndChild( confElement34 ); + confElement34->SetAttribute("value", ""); + TiXmlElement * confElement7 = new TiXmlElement( "Opponent1Name" ); + config->LinkEndChild( confElement7 ); + confElement7->SetAttribute("value", "Player 1"); + TiXmlElement * confElement35 = new TiXmlElement( "Opponent1Avatar" ); + config->LinkEndChild( confElement35 ); + confElement35->SetAttribute("value", ""); + TiXmlElement * confElement8 = new TiXmlElement( "Opponent2Name" ); + config->LinkEndChild( confElement8 ); + confElement8->SetAttribute("value", "Player 2"); + TiXmlElement * confElement36 = new TiXmlElement( "Opponent2Avatar" ); + config->LinkEndChild( confElement36 ); + confElement36->SetAttribute("value", ""); + TiXmlElement * confElement9 = new TiXmlElement( "Opponent3Name" ); + config->LinkEndChild( confElement9 ); + confElement9->SetAttribute("value", "Player 3"); + TiXmlElement * confElement37 = new TiXmlElement( "Opponent3Avatar" ); + config->LinkEndChild( confElement37 ); + confElement37->SetAttribute("value", ""); + TiXmlElement * confElement10 = new TiXmlElement( "Opponent4Name" ); + config->LinkEndChild( confElement10 ); + confElement10->SetAttribute("value", "Player 4"); + TiXmlElement * confElement38 = new TiXmlElement( "Opponent4Avatar" ); + config->LinkEndChild( confElement38 ); + confElement38->SetAttribute("value", ""); + TiXmlElement * confElement39 = new TiXmlElement( "Opponent5Name" ); + config->LinkEndChild( confElement39 ); + confElement39->SetAttribute("value", "Player 5"); + TiXmlElement * confElement40 = new TiXmlElement( "Opponent5Avatar" ); + config->LinkEndChild( confElement40 ); + confElement40->SetAttribute("value", ""); + TiXmlElement * confElement41 = new TiXmlElement( "Opponent6Name" ); + config->LinkEndChild( confElement41 ); + confElement41->SetAttribute("value", "Player 6"); + TiXmlElement * confElement42 = new TiXmlElement( "Opponent6Avatar" ); + config->LinkEndChild( confElement42 ); + confElement42->SetAttribute("value", ""); + + TiXmlElement * confElement20 = new TiXmlElement( "LogDir" ); + config->LinkEndChild( confElement20 ); + confElement20->SetAttribute("value", logDir); + TiXmlElement * confElement21 = new TiXmlElement( "LogStoreDuration" ); + config->LinkEndChild( confElement21 ); + confElement21->SetAttribute("value", 2); + + TiXmlElement * confElement31 = new TiXmlElement( "DataDir" ); + config->LinkEndChild( confElement31 ); + confElement31->SetAttribute("value", dataDir); + + doc.SaveFile( myPath ); + +} + + string ConfigFile::readConfigString(string varName) { string tempString(""); diff --git a/src/config/configfile.h b/src/config/configfile.h index b4d90a3a..352be948 100644 --- a/src/config/configfile.h +++ b/src/config/configfile.h @@ -29,6 +29,8 @@ public: ~ConfigFile(); + void createDefaultConfig(); + std::string readConfigString(std::string varName); void writeConfigString(std::string varName, std::string varCont); @@ -38,6 +40,9 @@ public: private: std::string myPath; + std::string logDir; + std::string dataDir; + int configRev; }; #endif diff --git a/src/gui/qt/mainwindow/mainwindowimpl.cpp b/src/gui/qt/mainwindow/mainwindowimpl.cpp index 206083d2..f50028fd 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.cpp +++ b/src/gui/qt/mainwindow/mainwindowimpl.cpp @@ -39,7 +39,8 @@ #include "log.h" #include "configfile.h" -#include "defaultconfig.h" +#include "appdirpath.h" + #include @@ -60,13 +61,8 @@ mainWindowImpl::mainWindowImpl(Session* s, QMainWindow *parent) } //////////////////////////// - //Create Defaultconfig if there is no one - DefaultConfig myDefaultConfig; - - //set SessionConfigPath - mySession->setConfigPath(myDefaultConfig.getMyPath()); - - myConfig = new ConfigFile(mySession->getConfigPath()); + AppDirPath myAppDirPath; + myConfig = new ConfigFile(myAppDirPath.getMyPath()); // Resourcen abladen QFile preflopValuesFile(":data/resources/data/preflopValues"); diff --git a/src/gui/qttoolsinterface.cpp b/src/gui/qttoolsinterface.cpp new file mode 100644 index 00000000..337c4bc2 --- /dev/null +++ b/src/gui/qttoolsinterface.cpp @@ -0,0 +1,26 @@ +/*************************************************************************** + * Copyright (C) 2006 by FThauer FHammer * + * f.thauer@web.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include "qttoolsinterface.h" + +QtToolsInterface::~QtToolsInterface() +{ +} + + diff --git a/src/gui/qttoolsinterface.h b/src/gui/qttoolsinterface.h new file mode 100644 index 00000000..574457e1 --- /dev/null +++ b/src/gui/qttoolsinterface.h @@ -0,0 +1,35 @@ +/*************************************************************************** + * Copyright (C) 2006 by FThauer FHammer * + * f.thauer@web.de * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef QTTOOLSINTERFACE_H +#define QTTOOLSINTERFACE_H + +#include + +class QtToolsInterface { +public: + virtual ~QtToolsInterface(); + + //appdirpath.cpp + virtual std::string getMyAppDirPath() const =0; + + +}; + +#endif diff --git a/src/pokerth.cpp b/src/pokerth.cpp index d4f3039c..c17a5078 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -52,6 +52,7 @@ using namespace std; class GuiWrapper; +class QtToolsWrapper; int main( int argc, char **argv ) { @@ -67,9 +68,11 @@ int main( int argc, char **argv ) Q_INIT_RESOURCE(resources); /////////////////////////////////////////////////// + Session *theFirst = new Session(); + GuiInterface *myGuiInterface = new GuiWrapper(theFirst); - + theFirst->setGuiInterface(myGuiInterface); // myGuiInterface->setSession(&theFirst); diff --git a/src/session.cpp b/src/session.cpp index 979ae66b..020b0d41 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -20,6 +20,7 @@ #include "session.h" #include "game.h" #include "guiinterface.h" +#include "qttoolswrapper.h" #include "configfile.h" #include #include @@ -32,7 +33,11 @@ using namespace std; Session::Session() : actualGameID(0), myNetClient(0), myNetServer(0), actualGame(0), myGui(0) { - myConfig = new ConfigFile(getConfigPath()); + QtToolsInterface *myQtToolsInterface = new QtToolsWrapper(); + myConfig = new ConfigFile(myQtToolsInterface->getMyAppDirPath()); + + setConfigPath(myQtToolsInterface->getMyAppDirPath()); + }