From ca519aa0749d43ea7a5256e2f6a9a0538c7b6c60 Mon Sep 17 00:00:00 2001 From: martii Date: Sun, 9 Jun 2013 06:49:48 +0200 Subject: [PATCH] widget/menue: implement CMenuOptionNumberChooser::getWidth() --- src/gui/widget/menue.cpp | 20 ++++++++++++++++++++ src/gui/widget/menue.h | 1 + 2 files changed, 21 insertions(+) diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index a92bdc4b5..79a802183 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -1248,6 +1248,26 @@ int CMenuOptionNumberChooser::paint(bool selected) return y+height; } +int CMenuOptionNumberChooser::getWidth(void) +{ + const char * l_optionName = (optionString != NULL) ? optionString : g_Locale->getText(optionName); + int width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(l_optionName, true); + + char tmp[20], *t; + + snprintf(tmp, sizeof(tmp), "%d", lower_bound); + for(t = tmp; *t; t++) if (isdigit((int)*t)) *t = *widest_number; + int w1 = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(tmp, true); + + snprintf(tmp, sizeof(tmp), "%d", upper_bound); + for(t = tmp; *t; t++) if (isdigit((int)*t)) *t = *widest_number; + int w2 = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(tmp, true); + + width += (w1 > w2) ? w1 : w2; + + return width + 10; /* min 10 pixels between option name and value. enough? */ +} + CMenuOptionChooser::CMenuOptionChooser(const neutrino_locale_t OptionName, int * const OptionValue, const struct keyval * const Options, const unsigned Number_Of_Options, const bool Active, CChangeObserver * const Observ, const neutrino_msg_t DirectKey, const std::string & IconName, bool Pulldown) { height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 0c9b4deb5..0efaf3108 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -299,6 +299,7 @@ private: int exec(CMenuTarget* parent); int isMenueOptionChooser(void) const{return 1;} + int getWidth(void); }; class CMenuOptionChooser : public CAbstractMenuOptionChooser