From 286de530777fa72c2b2b743f629dbbb7a7f4c8a5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 16 Jan 2013 21:28:47 +0300 Subject: Add theming support for top right buttons before connecting to game. --- src/client.cpp | 39 +++++++++++++++++++++++++-------------- src/client.h | 4 ++++ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index a29147341..e281ddced 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -279,7 +279,10 @@ Client::Client(const Options &options) : mInputFocused(true), mMouseFocused(true), mGuiAlpha(1.0f), - mNewMessageFlag(false) + mNewMessageFlag(false), + mSkin(nullptr), + mButtonPadding(1), + mButtonSpacing(3) { mInstance = this; } @@ -884,8 +887,8 @@ int Client::testsExec() const } #define ADDBUTTON(var, object) var = object; \ - x -= var->getWidth() + 6; \ - var->setPosition(x, 0); \ + x -= var->getWidth() + mButtonSpacing; \ + var->setPosition(x, mButtonPadding); \ top->add(var); @@ -900,6 +903,14 @@ int Client::gameExec() SDL_Event event; + if (Theme::instance()) + mSkin = Theme::instance()->load("windowmenu.xml", ""); + if (mSkin) + { + mButtonPadding = mSkin->getPadding(); + mButtonSpacing = mSkin->getOption("spacing", 3); + } + while (mState != STATE_EXIT) { PROFILER_START(); @@ -1099,7 +1110,7 @@ int Client::gameExec() mDesktop = new Desktop(nullptr); top->add(mDesktop); - int x = top->getWidth(); + int x = top->getWidth() - mButtonPadding; ADDBUTTON(mSetupButton, new Button(mDesktop, _("Setup"), "Setup", this)) #ifndef WIN32 @@ -2697,20 +2708,20 @@ void Client::resizeVideo(int width, int height, const bool always) if (mSetupButton) { - int x = width - mSetupButton->getWidth() - 3; - mSetupButton->setPosition(x, 3); + int x = width - mSetupButton->getWidth() - mButtonPadding; + mSetupButton->setPosition(x, mButtonPadding); #ifndef WIN32 - x -= mPerfomanceButton->getWidth() + 6; - mPerfomanceButton->setPosition(x, 3); + x -= mPerfomanceButton->getWidth() + mButtonSpacing; + mPerfomanceButton->setPosition(x, mButtonPadding); - x -= mVideoButton->getWidth() + 6; - mVideoButton->setPosition(x, 3); + x -= mVideoButton->getWidth() + mButtonSpacing; + mVideoButton->setPosition(x, mButtonPadding); - x -= mThemesButton->getWidth() + 6; - mThemesButton->setPosition(x, 3); + x -= mThemesButton->getWidth() + mButtonSpacing; + mThemesButton->setPosition(x, mButtonPadding); #ifdef ANDROID - x -= mCloseButton->getWidth() + 6; - mCloseButton->setPosition(x, 3); + x -= mCloseButton->getWidth() + mButtonSpacing; + mCloseButton->setPosition(x, mButtonPadding); #endif #endif } diff --git a/src/client.h b/src/client.h index df12d458e..bdf62ae0b 100644 --- a/src/client.h +++ b/src/client.h @@ -42,6 +42,7 @@ class Button; class Desktop; class Game; class LoginData; +class Skin; class Window; class QuitDialog; @@ -400,6 +401,9 @@ private: std::string mCaption; bool mNewMessageFlag; FPSmanager mFpsManager; + Skin *mSkin; + int mButtonPadding; + int mButtonSpacing; }; #endif // CLIENT_H -- cgit v1.2.3-70-g09d2