From 4ecea7806d45ca40b370b13da6fe4781ef04367d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 1 May 2013 17:05:28 +0300 Subject: add option to override detected screen density. --- src/defaults.cpp | 1 + src/graphicsmanager.cpp | 9 +++++++-- src/gui/setup_other.cpp | 20 +++++++++++++++++++- src/gui/setup_other.h | 4 +--- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/defaults.cpp b/src/defaults.cpp index 0d1fa91d9..1995d1ee6 100644 --- a/src/defaults.cpp +++ b/src/defaults.cpp @@ -315,6 +315,7 @@ DefaultsData* getConfigDefaults() AddDEF("showAllLang", false); AddDEF("moveNames", false); AddDEF("uselonglivesprites", false); + AddDEF("screenDensity", 0); return configData; } diff --git a/src/graphicsmanager.cpp b/src/graphicsmanager.cpp index 8c2c9f9b2..f9df9570e 100644 --- a/src/graphicsmanager.cpp +++ b/src/graphicsmanager.cpp @@ -1030,8 +1030,13 @@ void GraphicsManager::detectPixelSize() #endif logger->log("screen size in pixels: %dx%d", mMaxWidth, mMaxHeight); logger->log("screen size in millimeters: %dx%d", mWidthMM, mHeightMM); - logger->log("screen density: \"%s\" = %d", - getDensityString().c_str(), mDensity); + logger->log("actual screen density: " + getDensityString()); + const int density = config.getIntValue("screenDensity"); + if (density > 0 && density <= densitySize) + { + mDensity = density - 1; + logger->log("selected screen density: " + getDensityString()); + } } std::string GraphicsManager::getDensityString() const diff --git a/src/gui/setup_other.cpp b/src/gui/setup_other.cpp index c4ce2a500..bc4bf8f24 100644 --- a/src/gui/setup_other.cpp +++ b/src/gui/setup_other.cpp @@ -58,10 +58,24 @@ static const char *const proxyTypeList[] = N_("SOCKS5 hostname") }; +static const int densityListSize = 7; + +static const char *const densityList[] = +{ + N_("default"), + N_("low"), + N_("medium"), + N_("tv"), + N_("high"), + N_("xhigh"), + N_("xxhigh") +}; + Setup_Other::Setup_Other(const Widget2 *const widget) : SetupTabScroll(widget), mProxyTypeList(new NamesModel), - mShortcutsList(new NamesModel) + mShortcutsList(new NamesModel), + mDensityList(new NamesModel) { setName(_("Misc")); @@ -275,6 +289,10 @@ Setup_Other::Setup_Other(const Widget2 *const widget) : new SetupItemCheckBox(_("Show background"), "", "showBackground", this, "showBackgroundEvent"); + mDensityList->fillFromArray(&densityList[0], densityListSize); + new SetupItemDropDown(_("Screen density override"), "", + "screenDensity", this, "screenDensityEvent", mDensityList, 100); + setDimension(gcn::Rectangle(0, 0, 550, 350)); } diff --git a/src/gui/setup_other.h b/src/gui/setup_other.h index 2f0fdaf04..cc20ad2d9 100644 --- a/src/gui/setup_other.h +++ b/src/gui/setup_other.h @@ -39,15 +39,13 @@ class Setup_Other final : public SetupTabScroll A_DELETE_COPY(Setup_Other) ~Setup_Other(); - void apply(); - void externalUpdated(); protected: NamesModel *mProxyTypeList; - NamesModel *mShortcutsList; + NamesModel *mDensityList; }; #endif -- cgit v1.2.3-70-g09d2