From aa07ae1741ec0ab192109475a675d37249892bfb Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 11 Dec 2007 19:35:02 +0000 Subject: [PATCH] Fixed utf8 issue with avatar cache and server logging. --- src/config/configfile.cpp | 2 -- src/gui/qt/qttools/nonqthelper/nonqthelper.cpp | 6 ++++++ src/gui/qt/qttools/nonqthelper/nonqthelper.h | 1 + src/gui/qt/qttools/nonqttoolswrapper.cpp | 1 + src/gui/qt/qttools/nonqttoolswrapper.h | 1 + src/gui/qt/qttools/qthelper/qthelper.cpp | 6 ++++++ src/gui/qt/qttools/qthelper/qthelper.h | 1 + src/gui/qt/qttools/qttoolswrapper.cpp | 1 + src/gui/qt/qttools/qttoolswrapper.h | 1 + src/gui/qttoolsinterface.h | 3 +++ src/pokerth_server.cpp | 5 ++++- src/session.cpp | 10 ++++++++-- src/session.h | 2 ++ 13 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index b4acdf81..efd2932f 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -38,8 +38,6 @@ using namespace std; -QtToolsInterface *CreateQtToolsWrapper(); - ConfigFile::ConfigFile(int argc, char **argv) : noWriteAccess(0) { diff --git a/src/gui/qt/qttools/nonqthelper/nonqthelper.cpp b/src/gui/qt/qttools/nonqthelper/nonqthelper.cpp index 6db5fbed..5845c2df 100644 --- a/src/gui/qt/qttools/nonqthelper/nonqthelper.cpp +++ b/src/gui/qt/qttools/nonqthelper/nonqthelper.cpp @@ -37,6 +37,12 @@ NonQtHelper::stringToUtf8(const std::string &myString) return ConvHelper::NativeToUtf8(myString); } +std::string +NonQtHelper::stringFromUtf8(const std::string &myString) +{ + return ConvHelper::Utf8ToNative(myString); +} + std::string NonQtHelper::getDefaultLanguage() { diff --git a/src/gui/qt/qttools/nonqthelper/nonqthelper.h b/src/gui/qt/qttools/nonqthelper/nonqthelper.h index fda4c68d..b49f4116 100644 --- a/src/gui/qt/qttools/nonqthelper/nonqthelper.h +++ b/src/gui/qt/qttools/nonqthelper/nonqthelper.h @@ -35,6 +35,7 @@ public: ~NonQtHelper(); std::string stringToUtf8(const std::string &); + std::string stringFromUtf8(const std::string &); std::string getDefaultLanguage(); std::string getDataPathStdString(const char *argv0); diff --git a/src/gui/qt/qttools/nonqttoolswrapper.cpp b/src/gui/qt/qttools/nonqttoolswrapper.cpp index 97803bd5..3679b2bb 100644 --- a/src/gui/qt/qttools/nonqttoolswrapper.cpp +++ b/src/gui/qt/qttools/nonqttoolswrapper.cpp @@ -45,6 +45,7 @@ NonQtToolsWrapper::~NonQtToolsWrapper() } std::string NonQtToolsWrapper::stringToUtf8(const std::string &myString) { return myQtHelper->stringToUtf8(myString); } +std::string NonQtToolsWrapper::stringFromUtf8(const std::string &myString) { return myQtHelper->stringFromUtf8(myString); } std::string NonQtToolsWrapper::getDefaultLanguage() { return myQtHelper->getDefaultLanguage(); } std::string NonQtToolsWrapper::getDataPathStdString(const char * argv0) { return myQtHelper->getDataPathStdString(argv0); } diff --git a/src/gui/qt/qttools/nonqttoolswrapper.h b/src/gui/qt/qttools/nonqttoolswrapper.h index 2dfea972..cd9d6068 100644 --- a/src/gui/qt/qttools/nonqttoolswrapper.h +++ b/src/gui/qt/qttools/nonqttoolswrapper.h @@ -33,6 +33,7 @@ public: ~NonQtToolsWrapper(); std::string stringToUtf8(const std::string &myString); + std::string stringFromUtf8(const std::string &myString); std::string getDefaultLanguage(); std::string getDataPathStdString(const char *argv0); diff --git a/src/gui/qt/qttools/qthelper/qthelper.cpp b/src/gui/qt/qttools/qthelper/qthelper.cpp index 027243e2..452dad76 100644 --- a/src/gui/qt/qttools/qthelper/qthelper.cpp +++ b/src/gui/qt/qttools/qthelper/qthelper.cpp @@ -31,6 +31,12 @@ std::string QtHelper::stringToUtf8(const std::string &myString) { return myUtf8String; } +std::string QtHelper::stringFromUtf8(const std::string &myString) { + QString tmpString = QString::fromUtf8(myString.c_str()); + + return tmpString.toStdString(); +} + std::string QtHelper::getDefaultLanguage() { return QLocale::system().name().toStdString(); } std::string QtHelper::getDataPathStdString(const char * /*argv0*/) diff --git a/src/gui/qt/qttools/qthelper/qthelper.h b/src/gui/qt/qttools/qthelper/qthelper.h index 42b03617..8a14483b 100644 --- a/src/gui/qt/qttools/qthelper/qthelper.h +++ b/src/gui/qt/qttools/qthelper/qthelper.h @@ -29,6 +29,7 @@ public: ~QtHelper(); std::string stringToUtf8(const std::string &); + std::string stringFromUtf8(const std::string &); std::string getDefaultLanguage(); std::string getDataPathStdString(const char *argv0); diff --git a/src/gui/qt/qttools/qttoolswrapper.cpp b/src/gui/qt/qttools/qttoolswrapper.cpp index 6f383b80..3dd5dd21 100644 --- a/src/gui/qt/qttools/qttoolswrapper.cpp +++ b/src/gui/qt/qttools/qttoolswrapper.cpp @@ -45,6 +45,7 @@ QtToolsWrapper::~QtToolsWrapper() } std::string QtToolsWrapper::stringToUtf8(const std::string &myString) { return myQtHelper->stringToUtf8(myString); } +std::string QtToolsWrapper::stringFromUtf8(const std::string &myString) { return myQtHelper->stringFromUtf8(myString); } std::string QtToolsWrapper::getDefaultLanguage() { return myQtHelper->getDefaultLanguage(); } std::string QtToolsWrapper::getDataPathStdString(const char * argv0) { return myQtHelper->getDataPathStdString(argv0); } diff --git a/src/gui/qt/qttools/qttoolswrapper.h b/src/gui/qt/qttools/qttoolswrapper.h index 180629b2..5fb5bce5 100644 --- a/src/gui/qt/qttools/qttoolswrapper.h +++ b/src/gui/qt/qttools/qttoolswrapper.h @@ -34,6 +34,7 @@ public: ~QtToolsWrapper(); std::string stringToUtf8(const std::string &myString); + std::string stringFromUtf8(const std::string &myString); std::string getDefaultLanguage(); std::string getDataPathStdString(const char *argv0); diff --git a/src/gui/qttoolsinterface.h b/src/gui/qttoolsinterface.h index 82adc4f1..1d3c3296 100644 --- a/src/gui/qttoolsinterface.h +++ b/src/gui/qttoolsinterface.h @@ -28,10 +28,13 @@ public: //qthelper.cpp virtual std::string stringToUtf8(const std::string &) =0; + virtual std::string stringFromUtf8(const std::string &) =0; virtual std::string getDefaultLanguage() =0; virtual std::string getDataPathStdString(const char *argv0) =0; }; +QtToolsInterface *CreateQtToolsWrapper(); + #endif diff --git a/src/pokerth_server.cpp b/src/pokerth_server.cpp index 3b4d0785..53b13904 100644 --- a/src/pokerth_server.cpp +++ b/src/pokerth_server.cpp @@ -21,11 +21,13 @@ #include "session.h" #include "configfile.h" +#include #include #include #include #include +#include #include #ifdef _MSC_VER @@ -71,9 +73,10 @@ main(int argc, char *argv[]) // _CrtSetBreakAlloc(4772); + auto_ptr myQtToolsInterface(CreateQtToolsWrapper()); //create defaultconfig ConfigFile *myConfig = new ConfigFile(argc, argv); - loghelper_init(myConfig->readConfigString("LogDir")); + loghelper_init(myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir"))); // TODO: Hack #ifndef _WIN32 diff --git a/src/session.cpp b/src/session.cpp index ad92b242..62c129af 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -21,6 +21,7 @@ #include "game.h" #include "guiinterface.h" #include "configfile.h" +#include #include #include #include @@ -41,6 +42,7 @@ Session::Session(GuiInterface *g, ConfigFile *c) : currentGameNum(0), myNetClient(NULL), myNetServer(NULL), myClientIrcThread(NULL), myGui(g), myConfig(c), myGameType(GAME_TYPE_NONE) { + myQtToolsInterface = CreateQtToolsWrapper(); } @@ -50,13 +52,17 @@ Session::~Session() terminateNetworkServer(); delete myConfig; myConfig = 0; + delete myQtToolsInterface; + myQtToolsInterface = 0; } bool Session::init() { myAvatarManager.reset(new AvatarManager); - bool retVal = myAvatarManager->Init(myConfig->readConfigString("AppDataDir"), myConfig->readConfigString("CacheDir")); - addOwnAvatar(myConfig->readConfigString("MyAvatar")); + bool retVal = myAvatarManager->Init( + myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("AppDataDir")), + myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("CacheDir"))); + addOwnAvatar(myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("MyAvatar"))); myAvatarManager->RemoveOldAvatarCacheEntries(); return retVal; } diff --git a/src/session.h b/src/session.h index e5804324..be0f0ec5 100755 --- a/src/session.h +++ b/src/session.h @@ -33,6 +33,7 @@ class ClientThread; class ServerManager; class IrcThread; class AvatarManager; +class QtToolsInterface; class Session{ public: @@ -106,6 +107,7 @@ private: GuiInterface *myGui; ConfigFile *myConfig; GameType myGameType; + QtToolsInterface *myQtToolsInterface; };