From ffeb2d6459ae1c0a2668f5c2cf4cc8ad85a5466a Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Sun, 8 Jan 2017 14:39:38 +0100 Subject: [PATCH] CComponentsFrmClock/CInfoClock: simplify font init --- src/gui/components/cc_frm_clock.cpp | 28 ++++++++++++++-------------- src/gui/components/cc_frm_clock.h | 10 +++++++--- src/gui/infoclock.cpp | 9 ++------- 3 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/gui/components/cc_frm_clock.cpp b/src/gui/components/cc_frm_clock.cpp index 5adcd7b45..0ca83c8ec 100644 --- a/src/gui/components/cc_frm_clock.cpp +++ b/src/gui/components/cc_frm_clock.cpp @@ -75,11 +75,8 @@ CComponentsFrmClock::CComponentsFrmClock( const int& x_pos, //init default font cl_font = font; cl_font_style = font_style; - if (cl_font == NULL){ - int dx = 0; - int dy = 30; - setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); - } + if (cl_font == NULL) + initClockFont(0, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight()); //init general clock dimensions height = cl_font->getHeight(); @@ -114,6 +111,11 @@ CComponentsFrmClock::~CComponentsFrmClock() delete cl_timer; } +void CComponentsFrmClock::initClockFont(int dx, int dy) +{ + setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); +} + void CComponentsFrmClock::initTimeString() { @@ -380,15 +382,13 @@ void CComponentsFrmClock::paint(bool do_save_bg) void CComponentsFrmClock::setClockFont(Font *font, const int& style) { - if (cl_font != font) - cl_font = font; - - if (style != -1) - cl_font_style = style; - -// setHeight(cl_font->getHeight()); -// setWidth(cl_font->getRenderWidth(cl_format_str)); - initCCLockItems(); + if (cl_font != font || (cl_font != font)){ + if (cl_font != font) + cl_font = font; + if (style != -1) + cl_font_style = style; + //initCCLockItems(); + } } Font* CComponentsFrmClock::getClockFont() diff --git a/src/gui/components/cc_frm_clock.h b/src/gui/components/cc_frm_clock.h index c46dc0bad..ddc5abbbb 100644 --- a/src/gui/components/cc_frm_clock.h +++ b/src/gui/components/cc_frm_clock.h @@ -88,9 +88,8 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen bool stopClock(); ///switch between primary and secondary format void toggleFormat(); - - ///return pointer of font object - Font* getClockFont(); + ///init internal font + void initClockFont(int dx, int dy); public: @@ -121,6 +120,9 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen */ void setClockFont(Font * font, const int& style = -1); + ///return pointer of font object + Font* getClockFont(); + ///set text color virtual void setTextColor(fb_pixel_t color_text){ cl_col_text = color_text;} @@ -132,6 +134,8 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen ///use string expession: "%H:%M" = 12:22, "%H:%M:%S" = 12:22:12 ///set current time format string, 1st parameter set the default format, 2nd parameter sets an alternatively format for use as blink effect virtual void setClockFormat(const char* prformat_str, const char* secformat_str = NULL); + ///get current time format string, + std::string getClockFormat(){return cl_format;} ///start and paint ticking clock virtual bool Start(); diff --git a/src/gui/infoclock.cpp b/src/gui/infoclock.cpp index 0971e2401..c0e8ebc58 100644 --- a/src/gui/infoclock.cpp +++ b/src/gui/infoclock.cpp @@ -73,17 +73,12 @@ void CInfoClock::initCCLockItems() setClockFormat("%H:%M", "%H %M"); //set height, NOTE: height is strictly bound to settings - if (g_settings.infoClockFontSize != height){ - height = g_settings.infoClockFontSize; - int dx = 0; - int dy = height; - setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); - } + height = g_settings.infoClockFontSize; + initClockFont(0, height); // set corner radius depending on clock height corner_rad = (g_settings.rounded_corners) ? std::max(height/10, CORNER_RADIUS_SMALL) : 0; - CComponentsFrmClock::initCCLockItems(); CVolumeHelper::getInstance()->refresh(cl_font); CVolumeHelper::getInstance()->getInfoClockDimensions(&x, &y, &width, &height); }