cc_frm_header.cpp/h: remove CTextBox types for title allignment

Title object has only width of current text content. This causes CTextBox
types have not a really visible effect. Now we have only three align types for title
and these are related to cc-text object position.

Involved classes adjusted too.


Origin commit data
------------------
Commit: 942a27e3ef
Author: Thilo Graf <dbt@novatux.de>
Date: 2017-05-11 (Thu, 11 May 2017)
This commit is contained in:
2017-05-11 12:03:28 +02:00
parent 9a0a266f27
commit 653c5af07c
10 changed files with 60 additions and 44 deletions

View File

@@ -2132,7 +2132,7 @@ void CChannelList::paintHead()
fb_pixel_t header_txt_col = (edit_state ? COL_RED : COL_MENUHEAD_TEXT); fb_pixel_t header_txt_col = (edit_state ? COL_RED : COL_MENUHEAD_TEXT);
header->setColorBody(COL_MENUHEAD_PLUS_0); header->setColorBody(COL_MENUHEAD_PLUS_0);
header->setCaption(header_txt, CTextBox::NO_AUTO_LINEBREAK, header_txt_col); header->setCaption(header_txt, DEFAULT_TITLE_ALIGN, header_txt_col);
if (timeset) { if (timeset) {
if(!edit_state){ if(!edit_state){

View File

@@ -130,7 +130,7 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
cch_logo.dy_max = -1; cch_logo.dy_max = -1;
cch_logo.Align = DEFAULT_LOGO_ALIGN; cch_logo.Align = DEFAULT_LOGO_ALIGN;
cch_col_text = COL_MENUHEAD_TEXT; cch_col_text = COL_MENUHEAD_TEXT;
cch_caption_align = CTextBox::NO_AUTO_LINEBREAK; cch_caption_align = DEFAULT_TITLE_ALIGN;
cch_items_y = CC_CENTERED; cch_items_y = CC_CENTERED;
cch_offset = OFFSET_INNER_MID; cch_offset = OFFSET_INNER_MID;
cch_icon_x = cch_offset; cch_icon_x = cch_offset;
@@ -163,7 +163,7 @@ CComponentsHeader::~CComponentsHeader()
v_cch_btn.clear(); v_cch_btn.clear();
} }
void CComponentsHeader::setCaption(const std::string& caption, const int& align_mode, const fb_pixel_t& text_color) void CComponentsHeader::setCaption(const std::string& caption, const cc_title_alignment_t& align_mode, const fb_pixel_t& text_color)
{ {
if (cch_cl_obj) if (cch_cl_obj)
cch_cl_obj->Stop(); cch_cl_obj->Stop();
@@ -172,7 +172,7 @@ void CComponentsHeader::setCaption(const std::string& caption, const int& align_
cch_col_text = text_color; cch_col_text = text_color;
} }
void CComponentsHeader::setCaption(neutrino_locale_t caption_locale, const int& align_mode, const fb_pixel_t& text_color) void CComponentsHeader::setCaption(neutrino_locale_t caption_locale, const cc_title_alignment_t& align_mode, const fb_pixel_t& text_color)
{ {
setCaption(string(g_Locale->getText(caption_locale)), align_mode, text_color); setCaption(string(g_Locale->getText(caption_locale)), align_mode, text_color);
} }
@@ -302,7 +302,7 @@ void CComponentsHeader::initLogo()
//right end //right end
int x_logo_right = width - cch_logo_obj->getWidth(); int x_logo_right = width - cch_logo_obj->getWidth();
if (cch_caption_align != CTextBox::RIGHT){ if (!(cch_caption_align & CC_TITLE_RIGHT)){
if (cch_btn_obj) if (cch_btn_obj)
x_logo_right -= cch_btn_obj->getWidth(); x_logo_right -= cch_btn_obj->getWidth();
if (cch_cl_obj) if (cch_cl_obj)
@@ -314,7 +314,7 @@ void CComponentsHeader::initLogo()
//left end //left end
int x_logo_left = cch_offset; int x_logo_left = cch_offset;
if (cch_caption_align != CTextBox::RIGHT) if (!(cch_caption_align & CC_TITLE_RIGHT))
x_logo_left = getCCItem(prev_id) ? getCCItem(prev_id)->getXPos() + getCCItem(prev_id)->getWidth() : 0; x_logo_left = getCCItem(prev_id) ? getCCItem(prev_id)->getXPos() + getCCItem(prev_id)->getWidth() : 0;
else else
if (cch_icon_obj) if (cch_icon_obj)
@@ -329,19 +329,19 @@ void CComponentsHeader::initLogo()
//set final logo position //set final logo position
int x_logo = 0; int x_logo = 0;
if (cch_logo.Align == CC_LOGO_RIGHT){ if (cch_logo.Align & CC_LOGO_RIGHT){
if (cch_caption_align == CTextBox::RIGHT){ if (cch_caption_align & CC_TITLE_RIGHT){
if (cch_text_obj) if (cch_text_obj)
x_logo = cch_text_obj->getXPos() - cch_logo_obj->getWidth(); x_logo = cch_text_obj->getXPos() - cch_logo_obj->getWidth();
}else }else
x_logo = x_logo_right; x_logo = x_logo_right;
} }
if (cch_logo.Align == CC_LOGO_LEFT) if (cch_logo.Align & CC_LOGO_LEFT)
x_logo = x_logo_left; x_logo = x_logo_left;
if (cch_logo.Align == CC_LOGO_CENTER){ if (cch_logo.Align & CC_LOGO_CENTER){
x_logo = width/2 - cch_logo_obj->getWidth()/2; x_logo = width/2 - cch_logo_obj->getWidth()/2;
//fallback if adjacent item and logo are overlapping //fallback if adjacent item and logo are overlapping
if (cch_caption_align != CTextBox::RIGHT){ if (!(cch_caption_align & CC_TITLE_RIGHT)){
if (getCCItem(prev_id)){ if (getCCItem(prev_id)){
int x_tmp = x_logo_left + logo_space/2 - cch_logo_obj->getWidth()/2; int x_tmp = x_logo_left + logo_space/2 - cch_logo_obj->getWidth()/2;
if (x_logo <= x_logo_left) if (x_logo <= x_logo_left)
@@ -605,10 +605,10 @@ void CComponentsHeader::initCaption()
cc_text_w = min(cc_text_w, cch_font->getRenderWidth(cch_text)+ OFFSET_INNER_MID); cc_text_w = min(cc_text_w, cch_font->getRenderWidth(cch_text)+ OFFSET_INNER_MID);
//set alignment of text item in dependency from text alignment //set alignment of text item in dependency from text alignment
if (cch_caption_align == CTextBox::CENTER) if (cch_caption_align & CC_TITLE_CENTER)
cch_text_x = width/2 - cc_text_w/2; cch_text_x = width/2 - cc_text_w/2;
if (cch_caption_align == CTextBox::RIGHT){ if (cch_caption_align & CC_TITLE_RIGHT){
cch_text_x += w_free; cch_text_x += w_free;
cch_text_x -= max(cc_text_w, cch_font->getRenderWidth(cch_text)+ OFFSET_INNER_MID); cch_text_x -= max(cc_text_w, cch_font->getRenderWidth(cch_text)+ OFFSET_INNER_MID);
} }

View File

@@ -32,25 +32,29 @@
#include "cc_frm_clock.h" #include "cc_frm_clock.h"
#include <driver/colorgradient.h> #include <driver/colorgradient.h>
#define DEFAULT_LOGO_ALIGN CComponentsHeader::CC_LOGO_CENTER #define DEFAULT_LOGO_ALIGN CCHeaderTypes::CC_LOGO_CENTER
#define DEFAULT_TITLE_ALIGN CCHeaderTypes::CC_TITLE_LEFT
//! Sub class of CComponentsForm. Shows a header with prepared items. class CCHeaderTypes
/*!
CComponentsHeader provides prepared items like icon, caption and context button icons, mostly for usage in menues or simple windows
*/
class CComponentsHeader : public CComponentsForm, public CCTextScreen
{ {
public: public:
///logo position options ///logo position options
typedef enum typedef enum
{ {
CC_LOGO_RIGHT , CC_LOGO_RIGHT = 0x01,
CC_LOGO_LEFT , CC_LOGO_LEFT = 0x02,
CC_LOGO_CENTER CC_LOGO_CENTER = 0x04
}cc_logo_alignment_t; }cc_logo_alignment_t;
private: ///title position options
typedef enum
{ /*for compatibilty use CTextBox enums values*/
CC_TITLE_LEFT = 0x400,
CC_TITLE_CENTER = 0x40 ,
CC_TITLE_RIGHT = 0x80
}cc_title_alignment_t;
protected:
///required logo data type ///required logo data type
typedef struct cch_logo_t typedef struct cch_logo_t
{ {
@@ -60,7 +64,17 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen
int32_t dy_max; int32_t dy_max;
cc_logo_alignment_t Align; cc_logo_alignment_t Align;
} cch_logo_struct_t; } cch_logo_struct_t;
};
//! Sub class of CComponentsForm. Shows a header with prepared items.
/*!
CComponentsHeader provides prepared items like icon, caption and context button icons, mostly for usage in menues or simple windows
*/
class CComponentsHeader : public CComponentsForm, public CCTextScreen, CCHeaderTypes
{
private:
///member: init genaral variables, parameters for mostly used properties ///member: init genaral variables, parameters for mostly used properties
void initVarHeader( const int& x_pos, const int& y_pos, const int& w, const int& h, void initVarHeader( const int& x_pos, const int& y_pos, const int& w, const int& h,
const std::string& caption, const std::string& caption,
@@ -116,8 +130,8 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen
std::vector<std::string> v_cch_btn; std::vector<std::string> v_cch_btn;
///property: size of header, possible values are CC_HEADER_SIZE_LARGE, CC_HEADER_SIZE_SMALL ///property: size of header, possible values are CC_HEADER_SIZE_LARGE, CC_HEADER_SIZE_SMALL
int cch_size_mode; int cch_size_mode;
///property: alignment of caption within header, see also setCaptionAlignment(), possible values are CTextBox::CENTER, default = CTextBox::NO_AUTO_LINEBREAK (left) ///property: alignment of caption within header, see also setCaptionAlignment()
int cch_caption_align; cc_title_alignment_t cch_caption_align;
///property: enable/disable of clock, see also enableClock() ///property: enable/disable of clock, see also enableClock()
bool cch_cl_enable; bool cch_cl_enable;
///property: clock format ///property: clock format
@@ -167,12 +181,12 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen
virtual ~CComponentsHeader(); virtual ~CComponentsHeader();
///set caption text, parameters: string, int align_mode (default left) ///set caption text, parameters: string, int align_mode (default left)
virtual void setCaption(const std::string& caption, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK, const fb_pixel_t& text_color = COL_MENUHEAD_TEXT); virtual void setCaption(const std::string& caption, const cc_title_alignment_t& align_mode = DEFAULT_TITLE_ALIGN, const fb_pixel_t& text_color = COL_MENUHEAD_TEXT);
///set caption text, parameters: loacle, int align_mode (default left) ///set caption text, parameters: loacle, int align_mode (default left)
virtual void setCaption(neutrino_locale_t caption_locale, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK, const fb_pixel_t& text_color = COL_MENUHEAD_TEXT); virtual void setCaption(neutrino_locale_t caption_locale, const cc_title_alignment_t& align_mode = DEFAULT_TITLE_ALIGN, const fb_pixel_t& text_color = COL_MENUHEAD_TEXT);
///set alignment of caption within header, possible paramters are CTextBox::CENTER, CTextBox::NO_AUTO_LINEBREAK ///set alignment of caption within header, possible paramters are CComponentsHeader::CC_TITLE_LEFT, CComponentsHeader::CC_TITLE_RIGHT, CComponentsHeader::CC_TITLE_CENTER
virtual void setCaptionAlignment(const int& align_mode){cch_caption_align = align_mode;} virtual void setCaptionAlignment(const cc_title_alignment_t& align_mode){cch_caption_align = align_mode;}
/**Set text font for title. /**Set text font for title.
* Internal default font is g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE] and * Internal default font is g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE] and

View File

@@ -150,7 +150,7 @@ void CComponentsWindow::initVarWindow( const int& x_pos, const int& y_pos, const
ccw_buttons = 0; //no header buttons ccw_buttons = 0; //no header buttons
ccw_show_footer = true; ccw_show_footer = true;
ccw_show_header = true; ccw_show_header = true;
ccw_align_mode = CTextBox::NO_AUTO_LINEBREAK; ccw_align_mode = DEFAULT_TITLE_ALIGN;
ccw_show_l_sideber = false; ccw_show_l_sideber = false;
ccw_show_r_sideber = false; ccw_show_r_sideber = false;
ccw_w_sidebar = 40; ccw_w_sidebar = 40;
@@ -187,7 +187,7 @@ void CComponentsWindow::initWindowPos()
y = frameBuffer->getScreenY(); y = frameBuffer->getScreenY();
} }
void CComponentsWindow::setWindowCaption(neutrino_locale_t locale_text, const int& align_mode) void CComponentsWindow::setWindowCaption(neutrino_locale_t locale_text, const cc_title_alignment_t& align_mode)
{ {
ccw_caption = g_Locale->getText(locale_text); ccw_caption = g_Locale->getText(locale_text);
ccw_align_mode = align_mode; ccw_align_mode = align_mode;

View File

@@ -52,7 +52,7 @@ items like text, labels, pictures ...
*/ */
class CComponentsWindow : public CComponentsForm class CComponentsWindow : public CComponentsForm, CCHeaderTypes
{ {
protected: protected:
///object: header object, to get access to header properties see also getHeaderObject() ///object: header object, to get access to header properties see also getHeaderObject()
@@ -68,7 +68,7 @@ class CComponentsWindow : public CComponentsForm
///property: caption in header, see also getHeaderObject() ///property: caption in header, see also getHeaderObject()
std::string ccw_caption; std::string ccw_caption;
///property: alignment mode for header caption ///property: alignment mode for header caption
int ccw_align_mode; cc_title_alignment_t ccw_align_mode;
///property: icon name in header, see also getHeaderObject() ///property: icon name in header, see also getHeaderObject()
std::string ccw_icon_name; std::string ccw_icon_name;
///property: assigned default icon buttons in header, see also getHeaderObject() ///property: assigned default icon buttons in header, see also getHeaderObject()
@@ -168,15 +168,17 @@ class CComponentsWindow : public CComponentsForm
void enableSidebar(const int& sidbar_type = CC_WINDOW_LEFT_SIDEBAR | CC_WINDOW_RIGHT_SIDEBAR); void enableSidebar(const int& sidbar_type = CC_WINDOW_LEFT_SIDEBAR | CC_WINDOW_RIGHT_SIDEBAR);
///set caption in header with string, see also getHeaderObject() ///set caption in header with string, see also getHeaderObject()
void setWindowCaption(const std::string& text, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK){ccw_caption = text; ccw_align_mode = align_mode;} void setWindowCaption(const std::string& text, const cc_title_alignment_t& align_mode = DEFAULT_TITLE_ALIGN){ccw_caption = text; ccw_align_mode = align_mode;}
///set header text color ///set header text color
void setWindowHeaderTextColor(const fb_pixel_t& color){ccw_col_head_text = color;} void setWindowHeaderTextColor(const fb_pixel_t& color){ccw_col_head_text = color;}
///set background to header ///set background to header
void setWindowHeaderColor(const fb_pixel_t& color){ccw_col_head = color;} void setWindowHeaderColor(const fb_pixel_t& color){ccw_col_head = color;}
///set caption in header from locales, see also getHeaderObject() ///set caption in header from locales, see also getHeaderObject()
void setWindowCaption(neutrino_locale_t locale_text, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); void setWindowCaption(neutrino_locale_t locale_text, const cc_title_alignment_t& align_mode = DEFAULT_TITLE_ALIGN);
///set caption alignment, see CTextBox for possible modes ///set caption alignment, see CTextBox for possible modes
void setWindowCaptionAlignment(const int& align_mode){ccw_align_mode = align_mode;}; void setWindowCaptionAlignment(const cc_title_alignment_t& align_mode){ccw_align_mode = align_mode;};
///set icon name in header, see also getHeaderObject() ///set icon name in header, see also getHeaderObject()
void setWindowIcon(const std::string& iconname){ccw_icon_name = iconname; initHeader();}; void setWindowIcon(const std::string& iconname){ccw_icon_name = iconname; initHeader();};

View File

@@ -888,7 +888,7 @@ void CEventList::paintHead(t_channel_id _channel_id, std::string _channelname, s
if (header->isPainted()) if (header->isPainted())
header->getChannelLogoObject()->hide(); header->getChannelLogoObject()->hide();
header->setChannelLogo(_channel_id,_channelname); header->setChannelLogo(_channel_id,_channelname);
header->setCaption(_channelname,CTextBox::CENTER); header->setCaption(_channelname, CCHeaderTypes::CC_TITLE_CENTER);
header->paint(CC_SAVE_SCREEN_NO); header->paint(CC_SAVE_SCREEN_NO);

View File

@@ -221,10 +221,10 @@ int CLuaInstCCWindow::CCWindowSetCaption(lua_State *L)
std::string name = ""; std::string name = "";
tableLookup(L, "name", name) || tableLookup(L, "title", name) || tableLookup(L, "caption", name); tableLookup(L, "name", name) || tableLookup(L, "title", name) || tableLookup(L, "caption", name);
lua_Integer alignment = (lua_Integer)CTextBox::NO_AUTO_LINEBREAK; lua_Integer alignment = (lua_Integer)DEFAULT_TITLE_ALIGN;
tableLookup(L, "alignment", alignment); tableLookup(L, "alignment", alignment);
D->w->setWindowCaption(name, alignment); D->w->setWindowCaption(name, (cc_title_alignment_t)alignment);
return 0; return 0;
} }

View File

@@ -29,7 +29,7 @@ class CLuaCCWindow
~CLuaCCWindow() { delete w; } ~CLuaCCWindow() { delete w; }
}; };
class CLuaInstCCWindow class CLuaInstCCWindow : CCHeaderTypes
{ {
public: public:
CLuaInstCCWindow() {}; CLuaInstCCWindow() {};

View File

@@ -507,7 +507,7 @@ void CScanTs::paintLine(int px, int py, int w, const char * const txt)
void CScanTs::paint(bool fortest) void CScanTs::paint(bool fortest)
{ {
CComponentsHeaderLocalized header(x, y, width, hheight, fortest ? LOCALE_SCANTS_TEST : LOCALE_SCANTS_HEAD); CComponentsHeaderLocalized header(x, y, width, hheight, fortest ? LOCALE_SCANTS_TEST : LOCALE_SCANTS_HEAD);
header.setCaptionAlignment(CTextBox::CENTER); header.setCaptionAlignment(CCHeaderTypes::CC_TITLE_CENTER);
header.paint(CC_SAVE_SCREEN_NO); header.paint(CC_SAVE_SCREEN_NO);
frameBuffer->paintBoxRel(x, y + hheight, width, height - hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM); frameBuffer->paintBoxRel(x, y + hheight, width, height - hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM);

View File

@@ -743,11 +743,11 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey)
else if (actionKey == "window"){ else if (actionKey == "window"){
if (window == NULL){ if (window == NULL){
window = new CComponentsWindow(); window = new CComponentsWindow();
window->setWindowCaption("|........HEADER........|", CTextBox::CENTER); window->setWindowCaption("|........HEADER........|", CCHeaderTypes::CC_TITLE_CENTER);
window->setDimensionsAll(50, 50, 500, 500); window->setDimensionsAll(50, 50, 500, 500);
window->setWindowIcon(NEUTRINO_ICON_INFO); window->setWindowIcon(NEUTRINO_ICON_INFO);
window->enableShadow(); window->enableShadow();
window->getFooterObject()->setCaption("|........FOOTER........|", CTextBox::CENTER); window->getFooterObject()->setCaption("|........FOOTER........|", CCHeaderTypes::CC_TITLE_CENTER);
CComponentsShapeCircle *c10 = new CComponentsShapeCircle(0, 0, 28); CComponentsShapeCircle *c10 = new CComponentsShapeCircle(0, 0, 28);
CComponentsShapeCircle *c11 = new CComponentsShapeCircle(0, CC_APPEND, 28); CComponentsShapeCircle *c11 = new CComponentsShapeCircle(0, CC_APPEND, 28);