From 04574fc6ebdac2ff3693fbbd8ad3e3d3d817bcc1 Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Mon, 6 Jan 2014 22:27:59 +0100 Subject: [PATCH] CComponents: split some header files Should bring more overview and less susceptibility to conflicts (merge etc) License texts updated. --- src/gui/components/cc.h | 5 +- src/gui/components/cc_frm.h | 354 ------------------------- src/gui/components/cc_frm_ext_text.cpp | 11 +- src/gui/components/cc_frm_ext_text.h | 128 +++++++++ src/gui/components/cc_frm_header.cpp | 12 +- src/gui/components/cc_frm_header.h | 117 ++++++++ src/gui/components/cc_frm_icons.cpp | 10 +- src/gui/components/cc_frm_icons.h | 67 +++++ src/gui/components/cc_frm_window.cpp | 16 +- src/gui/components/cc_frm_window.h | 160 +++++++++++ 10 files changed, 496 insertions(+), 384 deletions(-) create mode 100644 src/gui/components/cc_frm_ext_text.h create mode 100644 src/gui/components/cc_frm_header.h create mode 100644 src/gui/components/cc_frm_icons.h create mode 100644 src/gui/components/cc_frm_window.h diff --git a/src/gui/components/cc.h b/src/gui/components/cc.h index 54e612954..3383752ec 100644 --- a/src/gui/components/cc.h +++ b/src/gui/components/cc.h @@ -46,9 +46,12 @@ Basic attributes and member functions for component sub classes #include "cc_frm_button.h" #include "cc_frm_chain.h" #include "cc_frm_clock.h" +#include "cc_frm_ext_text.h" +#include "cc_frm_header.h" +#include "cc_frm_icons.h" #include "cc_frm_signalbars.h" #include "cc_frm_slider.h" - +#include "cc_frm_window.h" #endif /*__N_COMPONENTS__*/ diff --git a/src/gui/components/cc_frm.h b/src/gui/components/cc_frm.h index f769e5c8a..8f9fbabef 100644 --- a/src/gui/components/cc_frm.h +++ b/src/gui/components/cc_frm.h @@ -27,10 +27,6 @@ #include "config.h" #include -#include -#include -#include -#include class CComponentsForm : public CComponentsItem @@ -71,354 +67,4 @@ class CComponentsForm : public CComponentsItem virtual void setAppendOffset(const int &h_offset, const int& v_offset){append_h_offset = h_offset; append_v_offset = v_offset;}; }; -class CComponentsIconForm : public CComponentsForm -{ - private: - std::vector v_icons; - int ccif_offset, ccif_icon_align; - void initMaxHeight(int *pheight); - - protected: - void initVarIconForm(); - - public: - CComponentsIconForm(); - CComponentsIconForm(const int x_pos, const int y_pos, const int w, const int h, const std::vector &v_icon_names, bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); -// ~CComponentsIconForm(); //inherited from CComponentsForm - - void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); - void initCCIcons(); - void addIcon(const std::string& icon_name); - void addIcon(std::vector icon_name); - void removeIcons(){v_icons.clear();}; - void insertIcon(const uint& icon_id, const std::string& icon_name); - void removeIcon(const uint& icon_id); - void removeIcon(const std::string& icon_name); - void removeAllIcons(); - void setIconOffset(const int offset){ccif_offset = offset;}; - - enum //alignements - { - CC_ICONS_FRM_ALIGN_RIGHT , - CC_ICONS_FRM_ALIGN_LEFT - }; - void setIconAlign(int alignment){ccif_icon_align = alignment;}; - - int getIconId(const std::string& icon_name); -}; - - - -class CComponentsHeader : public CComponentsForm -{ - private: - void initVarHeader(); - protected: - CComponentsPicture * cch_icon_obj; - CComponentsText * cch_text_obj; - CComponentsIconForm * cch_btn_obj; - std::string cch_text; - const char* cch_icon_name; - fb_pixel_t cch_col_text; - Font* cch_font; - int cch_items_y, cch_icon_x, cch_icon_w, cch_text_x, cch_buttons, cch_buttons_w, cch_buttons_h, cch_buttons_space, cch_offset; - std::vector v_cch_btn; - int cch_size_mode; - int cch_caption_align; - bool userHeight; - - void initIcon(); - void initCaption(); - void initButtons(); - void initDefaultButtons(); - void initButtonFormSize(); - - public: - enum - { - CC_BTN_HELP = 0x02, - CC_BTN_INFO = 0x04, - CC_BTN_MENU = 0x40, - CC_BTN_EXIT = 0x80 - - }; - - enum - { - CC_HEADER_ITEM_ICON = 0, - CC_HEADER_ITEM_TEXT = 1, - CC_HEADER_ITEM_BUTTONS = 2 - }; - - enum - { - CC_HEADER_SIZE_LARGE = 0, - CC_HEADER_SIZE_SMALL = 1 - }; - CComponentsHeader(); - CComponentsHeader(const int x_pos, const int y_pos, const int w, const int h = 0, const std::string& caption = "header", const char* icon_name = NULL, const int buttons = 0, bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); - CComponentsHeader(const int x_pos, const int y_pos, const int w, const int h = 0, neutrino_locale_t caption_locale = NONEXISTANT_LOCALE, const char* icon_name = NULL, const int buttons = 0,bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); - virtual ~CComponentsHeader(); - - - virtual void setCaption(const std::string& caption, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); - virtual void setCaption(neutrino_locale_t caption_locale, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); - virtual void setCaptionAlignment(const int& align_mode){cch_caption_align = align_mode;}; - virtual void setCaptionFont(Font* font_name); - virtual void setCaptionColor(fb_pixel_t text_color){cch_col_text = text_color;}; - virtual void setOffset(const int offset){cch_offset = offset;}; - virtual void setIcon(const char* icon_name); - virtual void addButtonIcon(const std::string& button_name); - virtual void removeButtonIcons(); - virtual void setDefaultButtons(const int buttons); - virtual void setButtonsSpace(const int buttons_space){cch_buttons_space = buttons_space;}; - virtual void initCCItems(); - virtual void setSizeMode(const int& size_mode){cch_size_mode = size_mode;}; - virtual CComponentsText* getTextObject(){return cch_text_obj;}; - virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); -}; - - -class CComponentsFooter : public CComponentsHeader -{ - protected: - void initVarFooter(); - public: - CComponentsFooter(); - CComponentsFooter( const int x_pos, const int y_pos, const int w, const int h = 0, - const int buttons = 0, - bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_INFOBAR_SHADOW_PLUS_1, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); -}; - -//! Sub class of CComponentsForm. Shows a window with prepared items. -/*! -CComponentsWindow provides prepared items like header, footer and a container for -items like text, labels, pictures ... -*/ -/* - x - y+-------------------------------------------------------+ - |icon caption buttons |header (ccw_head) - +-x-----------------------------------------------------+ - |cc_item0 | - |cc_item1 |body (ccw_body) - | add items here directly with | - | addWindowItem() or | - y with ccw_body->addCCItem() | - | Note: x/y related to body object | - | | - +-------------------------------------------------------+ - | add cc_items with ccw_footer->addCCItem() |footer(ccw_footer) - +-------------------------------------------------------+ - -*/ - -class CComponentsWindow : public CComponentsForm -{ - protected: - ///object: header object, to get access to header properties see also getHeaderObject() - CComponentsHeader * ccw_head; - ///object: body object, this is the container for all needed items, to add with addWindowItem() - CComponentsForm * ccw_body; - ///object: footer object, to get access to header properties see also getFooterObject( - CComponentsFooter * ccw_footer; - ///property: caption in header, see also getHeaderObject() - std::string ccw_caption; - ///property: alignment mode for header caption - int ccw_align_mode; - ///property: icon name in header, see also getHeaderObject() - const char* ccw_icon_name; - ///property: assigned default icon buttons in header, see also getHeaderObject() - int ccw_buttons; - ///property: value = true, let show footer, see showFooter() - bool ccw_show_footer; - ///property: value = true, let show header, see showHeader() - bool ccw_show_header; - - ///initialze header object - void initHeader(); - ///initialze body object - void initBody(); - ///initialze footer object - void initFooter(); - ///initialze all window objects at once - void initCCWItems(); - ///initialize all attributes - void initVarWindow(); - - public: - enum - { - CC_WINDOW_ITEM_HEADER = 0 - }; - ///simple constructor for CComponentsWindow - CComponentsWindow(); - - ///advanced constructor for CComponentsWindow, provides parameters for the most required properties, and caption as string - CComponentsWindow( const int x_pos, const int y_pos, const int w, const int h, - const std::string& caption, - const char* iconname = NULL, - bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, - fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, - fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); - - ///advanced constructor for CComponentsWindow, provides parameters for the most required properties, and caption from locales - CComponentsWindow( const int x_pos, const int y_pos, const int w, const int h, - neutrino_locale_t locale_caption, - const char* iconname = NULL, - bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, - fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, - fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); - - ///simple constructor for CComponentsWindow, provides parameters for caption as string and icon, position of window is general centered and bound - ///to current screen settings, this shows a window over full screen - CComponentsWindow(const std::string& caption, const char* iconname = NULL); - - ///simple constructor for CComponentsWindow, provides parameters for caption from locales and icon, position of window is general centered and bound - ///to current screen settings, this shows a window over full screen - CComponentsWindow(neutrino_locale_t locale_caption, const char* iconname = NULL); - - ~CComponentsWindow(); - - ///add item to body object, also usable is addCCItem() to add items to the windo object - void addWindowItem(CComponentsItem* cc_Item); - - ///allow/disallow paint a footer, default true, see also ccw_show_footer, showHeader() - void showFooter(bool show = true){ccw_show_footer = show; initCCWItems();}; - ///allow/disallow paint a header, default true, see also ccw_show_header, showFooter() - void showHeader(bool show = true){ccw_show_header = show; initCCWItems();}; - - ///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;}; - - ///set caption in header from locales, see also getHeaderObject() - void setWindowCaption(neutrino_locale_t locale_text, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); - ///set caption alignment - void setWindowCaptionAlignment(const int& align_mode){ccw_align_mode = align_mode;}; - - ///set icon name in header, see also getHeaderObject() - void setWindowIcon(const char* iconname){ccw_icon_name = iconname;}; - - ///set default header icon buttons, see also getHeaderObject() - void setWindowHeaderButtons(const int& buttons){ccw_buttons = buttons;}; - - ///returns a pointer to the internal header object, use this to get access to header properities - CComponentsHeader* getHeaderObject(){return ccw_head;}; - - ///returns a pointer to the internal body object, use this to get access to body properities - CComponentsForm* getBodyObject(){return ccw_body;}; - ///returns a pointer to the internal footer object, use this to get access to footer properities - CComponentsFooter* getFooterObject(){return ccw_footer;}; - - ///refresh position and dimension and reinitialize elemenatary properties - void Refresh(){initCCWItems();}; - - ///paint all window items, this overwriting paint() from CComponentsForm - virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); -}; - - -class CComponentsExtTextForm : public CComponentsForm -{ - private: - ///property: content of label, see also setLabelAndText() - std::string ccx_label_text; - ///property: content of text, see also setLabelAndText() - std::string ccx_text; - ///property: color of label text, see also setLabelAndTextColor() - fb_pixel_t ccx_label_color; - ///property: color of text, see also setLabelAndTextColor() - fb_pixel_t ccx_text_color; - ///property: mode of label text, see also setTextModes() - int ccx_label_align; - ///property: mode of text, see also setTextModes() - int ccx_text_align; - ///property: width of label, see also setLabelWidthPercent() - int ccx_label_width; - ///property: width of text, see also setLabelWidthPercent() - int ccx_text_width; - ///property: font type of both items (label and text), see also setLabelAndText() - Font* ccx_font; - ///property: percentage val of label width related to full width, causes fit of text automatically into the available remaining size of item, see also setLabelWidthPercent() - uint8_t ccx_percent_label_w; - - ///object: label object - CComponentsLabel *ccx_label_obj; - ///object: text object - CComponentsText *ccx_text_obj; - - ///initialize of properties for all objects - void initCCTextItems(); - ///initialize the label object - void initLabel(); - ///initialize the text object - void initText(); - - protected: - ///initialize basic variables - void initVarExtTextForm(const int& x_pos, const int& y_pos, const int& w, const int& h, - const std::string& label_text, const std::string& text, - bool has_shadow, - fb_pixel_t label_color, - fb_pixel_t text_color, - fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow); - - public: - ///advanced constructor for CComponentsExtTextForm, provides parameters for the most required properties, and caption as string - CComponentsExtTextForm( const int& x_pos = 1, const int& y_pos = 1, const int& w = 300, const int& h = 48, - const std::string& label_text = "", const std::string& text = "", - bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t label_color = COL_MENUCONTENTINACTIVE_TEXT, - fb_pixel_t text_color = COL_MENUCONTENT_TEXT, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); -// ~CComponentsExtTextForm(); //inherited from CComponentsForm - - ///assigns texts for label and text, parameter as string, parameter Font is optional for required font type, default font is dependently from defined item height - void setLabelAndText(const std::string& label_text, const std::string& text, Font* font_text = NULL); - ///assigns texts for label and text, parameter as neutrino_locale_t, parameter Font is optional for required font type, default font is dependently from defined item height - void setLabelAndText(const neutrino_locale_t& locale_label_text, const neutrino_locale_t& locale_text, Font* font_text = NULL); - ///assigns text Font type - void setLabelAndTextFont(Font* font); - - ///assigns texts for label and text, parameter as struct (locale_ext_txt_t), parameters provide the same properties like setLabelAndText() - void setLabelAndTexts(const locale_ext_txt_t& texts); - ///assigns texts for label and text, parameter as struct (string_ext_txt_t), parameters provide the same properties like setLabelAndText() - void setLabelAndTexts(const string_ext_txt_t& locale_texts); - - ///assigns colors for text for label text, parameter as fb_pixel_t - void setLabelAndTextColor(const fb_pixel_t label_color , const fb_pixel_t text_color); - - ///assigns width of label and text related to width, parameter as uint8_t in percent of width, fits text automatically into the available remaining size of item - void setLabelWidthPercent(const uint8_t& percent_val); - - ///returns a pointer to the internal label object, use this to get access to its most properties - CComponentsLabel*getLabelObject(){return ccx_label_obj;}; - ///returns a pointer to the internal text object, use this to get access to its most properties - CComponentsText*getTextObject(){return ccx_text_obj;}; - - ///sets the text modes (mainly text alignment) to the label and text object, see /gui/widget/textbox.h for possible modes - void setTextModes(const int& label_mode, const int& text_mode); - - ///paint this item/form - void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); -}; - -class CComponentsExtTextFormLocalized : public CComponentsExtTextForm -{ - public: - ///advanced constructor for CComponentsExtTextForm, provides parameters for the most required properties, and caption as locales - CComponentsExtTextFormLocalized(const int& x_pos = 1, const int& y_pos = 1, const int& w = 300, const int& h = 48, - const neutrino_locale_t& locale_label_text = NONEXISTANT_LOCALE, const neutrino_locale_t& locale_text = NONEXISTANT_LOCALE, - bool has_shadow = CC_SHADOW_OFF, - fb_pixel_t label_color = COL_MENUCONTENTINACTIVE_TEXT, - fb_pixel_t text_color = COL_MENUCONTENT_TEXT, - fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); -}; - #endif diff --git a/src/gui/components/cc_frm_ext_text.cpp b/src/gui/components/cc_frm_ext_text.cpp index 197dc5c49..05196bd78 100644 --- a/src/gui/components/cc_frm_ext_text.cpp +++ b/src/gui/components/cc_frm_ext_text.cpp @@ -3,7 +3,7 @@ Copyright (C) 2001 by Steffen Hehn 'McClean' Classes for generic GUI-related components. - Copyright (C) 2013, Thilo Graf 'dbt' + Copyright (C) 2013, 2014 Thilo Graf 'dbt' License: GPL @@ -17,10 +17,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - Boston, MA 02110-1301, USA. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -29,8 +27,7 @@ #include #include - -#include "cc_frm.h" +#include "cc_frm_ext_text.h" #define DEF_HEIGHT 27 #define DEF_LABEL_WIDTH_PERCENT 30 diff --git a/src/gui/components/cc_frm_ext_text.h b/src/gui/components/cc_frm_ext_text.h new file mode 100644 index 000000000..59a837b97 --- /dev/null +++ b/src/gui/components/cc_frm_ext_text.h @@ -0,0 +1,128 @@ +/* + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' + + Classes for generic GUI-related components. + Copyright (C) 2013, 2014, Thilo Graf 'dbt' + + License: GPL + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef __CC_FORM_EXT_TEXT_H__ +#define __CC_FORM_EXT_TEXT_H__ + +#include "cc_frm.h" +#include "cc_item_text.h" + + +class CComponentsExtTextForm : public CComponentsForm +{ + private: + ///property: content of label, see also setLabelAndText() + std::string ccx_label_text; + ///property: content of text, see also setLabelAndText() + std::string ccx_text; + ///property: color of label text, see also setLabelAndTextColor() + fb_pixel_t ccx_label_color; + ///property: color of text, see also setLabelAndTextColor() + fb_pixel_t ccx_text_color; + ///property: mode of label text, see also setTextModes() + int ccx_label_align; + ///property: mode of text, see also setTextModes() + int ccx_text_align; + ///property: width of label, see also setLabelWidthPercent() + int ccx_label_width; + ///property: width of text, see also setLabelWidthPercent() + int ccx_text_width; + ///property: font type of both items (label and text), see also setLabelAndText() + Font* ccx_font; + ///property: percentage val of label width related to full width, causes fit of text automatically into the available remaining size of item, see also setLabelWidthPercent() + uint8_t ccx_percent_label_w; + + ///object: label object + CComponentsLabel *ccx_label_obj; + ///object: text object + CComponentsText *ccx_text_obj; + + ///initialize of properties for all objects + void initCCTextItems(); + ///initialize the label object + void initLabel(); + ///initialize the text object + void initText(); + + protected: + ///initialize basic variables + void initVarExtTextForm(const int& x_pos, const int& y_pos, const int& w, const int& h, + const std::string& label_text, const std::string& text, + bool has_shadow, + fb_pixel_t label_color, + fb_pixel_t text_color, + fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow); + + public: + ///advanced constructor for CComponentsExtTextForm, provides parameters for the most required properties, and caption as string + CComponentsExtTextForm( const int& x_pos = 1, const int& y_pos = 1, const int& w = 300, const int& h = 48, + const std::string& label_text = "", const std::string& text = "", + bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t label_color = COL_MENUCONTENTINACTIVE_TEXT, + fb_pixel_t text_color = COL_MENUCONTENT_TEXT, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); +// ~CComponentsExtTextForm(); //inherited from CComponentsForm + + ///assigns texts for label and text, parameter as string, parameter Font is optional for required font type, default font is dependently from defined item height + void setLabelAndText(const std::string& label_text, const std::string& text, Font* font_text = NULL); + ///assigns texts for label and text, parameter as neutrino_locale_t, parameter Font is optional for required font type, default font is dependently from defined item height + void setLabelAndText(const neutrino_locale_t& locale_label_text, const neutrino_locale_t& locale_text, Font* font_text = NULL); + ///assigns text Font type + void setLabelAndTextFont(Font* font); + + ///assigns texts for label and text, parameter as struct (locale_ext_txt_t), parameters provide the same properties like setLabelAndText() + void setLabelAndTexts(const locale_ext_txt_t& texts); + ///assigns texts for label and text, parameter as struct (string_ext_txt_t), parameters provide the same properties like setLabelAndText() + void setLabelAndTexts(const string_ext_txt_t& locale_texts); + + ///assigns colors for text for label text, parameter as fb_pixel_t + void setLabelAndTextColor(const fb_pixel_t label_color , const fb_pixel_t text_color); + + ///assigns width of label and text related to width, parameter as uint8_t in percent of width, fits text automatically into the available remaining size of item + void setLabelWidthPercent(const uint8_t& percent_val); + + ///returns a pointer to the internal label object, use this to get access to its most properties + CComponentsLabel*getLabelObject(){return ccx_label_obj;}; + ///returns a pointer to the internal text object, use this to get access to its most properties + CComponentsText*getTextObject(){return ccx_text_obj;}; + + ///sets the text modes (mainly text alignment) to the label and text object, see /gui/widget/textbox.h for possible modes + void setTextModes(const int& label_mode, const int& text_mode); + + ///paint this item/form + void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); +}; + +class CComponentsExtTextFormLocalized : public CComponentsExtTextForm +{ + public: + ///advanced constructor for CComponentsExtTextForm, provides parameters for the most required properties, and caption as locales + CComponentsExtTextFormLocalized(const int& x_pos = 1, const int& y_pos = 1, const int& w = 300, const int& h = 48, + const neutrino_locale_t& locale_label_text = NONEXISTANT_LOCALE, const neutrino_locale_t& locale_text = NONEXISTANT_LOCALE, + bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t label_color = COL_MENUCONTENTINACTIVE_TEXT, + fb_pixel_t text_color = COL_MENUCONTENT_TEXT, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); +}; + +#endif diff --git a/src/gui/components/cc_frm_header.cpp b/src/gui/components/cc_frm_header.cpp index 0270fe618..d1f14e5fd 100644 --- a/src/gui/components/cc_frm_header.cpp +++ b/src/gui/components/cc_frm_header.cpp @@ -1,9 +1,9 @@ /* - Based up Neutrino-GUI - Tuxbox-Project + Based up Neutrino-GUI - Tuxbox-Project Copyright (C) 2001 by Steffen Hehn 'McClean' Classes for generic GUI-related components. - Copyright (C) 2012, 2013, Thilo Graf 'dbt' + Copyright (C) 2012, 2013, 2014 Thilo Graf 'dbt' Copyright (C) 2012, Michael Liebmann 'micha-bbg' License: GPL @@ -18,10 +18,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - Boston, MA 02110-1301, USA. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -30,7 +28,7 @@ #include #include -#include "cc_frm.h" +#include "cc_frm_header.h" using namespace std; diff --git a/src/gui/components/cc_frm_header.h b/src/gui/components/cc_frm_header.h new file mode 100644 index 000000000..d681b57b5 --- /dev/null +++ b/src/gui/components/cc_frm_header.h @@ -0,0 +1,117 @@ +/* + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' + + Classes for generic GUI-related components. + Copyright (C) 2012, 2013, 2014, Thilo Graf 'dbt' + + License: GPL + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef __CC_FORM_HEADER_H__ +#define __CC_FORM_HEADER_H__ + + +#include "cc_frm.h" +#include "cc_item_picture.h" +#include "cc_item_text.h" +#include "cc_frm_icons.h" + +class CComponentsHeader : public CComponentsForm +{ + private: + void initVarHeader(); + protected: + CComponentsPicture * cch_icon_obj; + CComponentsText * cch_text_obj; + CComponentsIconForm * cch_btn_obj; + std::string cch_text; + const char* cch_icon_name; + fb_pixel_t cch_col_text; + Font* cch_font; + int cch_items_y, cch_icon_x, cch_icon_w, cch_text_x, cch_buttons, cch_buttons_w, cch_buttons_h, cch_buttons_space, cch_offset; + std::vector v_cch_btn; + int cch_size_mode; + int cch_caption_align; + bool userHeight; + + void initIcon(); + void initCaption(); + void initButtons(); + void initDefaultButtons(); + void initButtonFormSize(); + + public: + enum + { + CC_BTN_HELP = 0x02, + CC_BTN_INFO = 0x04, + CC_BTN_MENU = 0x40, + CC_BTN_EXIT = 0x80 + + }; + + enum + { + CC_HEADER_ITEM_ICON = 0, + CC_HEADER_ITEM_TEXT = 1, + CC_HEADER_ITEM_BUTTONS = 2 + }; + + enum + { + CC_HEADER_SIZE_LARGE = 0, + CC_HEADER_SIZE_SMALL = 1 + }; + CComponentsHeader(); + CComponentsHeader(const int x_pos, const int y_pos, const int w, const int h = 0, const std::string& caption = "header", const char* icon_name = NULL, const int buttons = 0, bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); + CComponentsHeader(const int x_pos, const int y_pos, const int w, const int h = 0, neutrino_locale_t caption_locale = NONEXISTANT_LOCALE, const char* icon_name = NULL, const int buttons = 0,bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); + virtual ~CComponentsHeader(); + + + virtual void setCaption(const std::string& caption, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); + virtual void setCaption(neutrino_locale_t caption_locale, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); + virtual void setCaptionAlignment(const int& align_mode){cch_caption_align = align_mode;}; + virtual void setCaptionFont(Font* font_name); + virtual void setCaptionColor(fb_pixel_t text_color){cch_col_text = text_color;}; + virtual void setOffset(const int offset){cch_offset = offset;}; + virtual void setIcon(const char* icon_name); + virtual void addButtonIcon(const std::string& button_name); + virtual void removeButtonIcons(); + virtual void setDefaultButtons(const int buttons); + virtual void setButtonsSpace(const int buttons_space){cch_buttons_space = buttons_space;}; + virtual void initCCItems(); + virtual void setSizeMode(const int& size_mode){cch_size_mode = size_mode;}; + virtual CComponentsText* getTextObject(){return cch_text_obj;}; + virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); +}; + + +class CComponentsFooter : public CComponentsHeader +{ + protected: + void initVarFooter(); + public: + CComponentsFooter(); + CComponentsFooter( const int x_pos, const int y_pos, const int w, const int h = 0, + const int buttons = 0, + bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_INFOBAR_SHADOW_PLUS_1, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); +}; + +#endif diff --git a/src/gui/components/cc_frm_icons.cpp b/src/gui/components/cc_frm_icons.cpp index 4bb19468a..e83707320 100644 --- a/src/gui/components/cc_frm_icons.cpp +++ b/src/gui/components/cc_frm_icons.cpp @@ -3,7 +3,7 @@ Copyright (C) 2001 by Steffen Hehn 'McClean' Classes for generic GUI-related components. - Copyright (C) 2012, 2013, Thilo Graf 'dbt' + Copyright (C) 2012, 2013, 2014 Thilo Graf 'dbt' Copyright (C) 2012, Michael Liebmann 'micha-bbg' License: GPL @@ -18,10 +18,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - Boston, MA 02110-1301, USA. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -30,7 +28,7 @@ #include #include -#include "cc_frm.h" +#include "cc_frm_icons.h" using namespace std; diff --git a/src/gui/components/cc_frm_icons.h b/src/gui/components/cc_frm_icons.h new file mode 100644 index 000000000..c33755719 --- /dev/null +++ b/src/gui/components/cc_frm_icons.h @@ -0,0 +1,67 @@ +/* + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' + + Classes for generic GUI-related components. + Copyright (C) 2012, 2013, 2014, Thilo Graf 'dbt' + + License: GPL + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef __CC_FORM_ICONS_H__ +#define __CC_FORM_ICONS_H__ + +#include "cc_frm.h" +#include "cc_frm_icons.h" + +class CComponentsIconForm : public CComponentsForm +{ + private: + std::vector v_icons; + int ccif_offset, ccif_icon_align; + void initMaxHeight(int *pheight); + + protected: + void initVarIconForm(); + + public: + CComponentsIconForm(); + CComponentsIconForm(const int x_pos, const int y_pos, const int w, const int h, const std::vector &v_icon_names, bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, fb_pixel_t color_body = COL_MENUHEAD_PLUS_0, fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); +// ~CComponentsIconForm(); //inherited from CComponentsForm + + void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); + void initCCIcons(); + void addIcon(const std::string& icon_name); + void addIcon(std::vector icon_name); + void removeIcons(){v_icons.clear();}; + void insertIcon(const uint& icon_id, const std::string& icon_name); + void removeIcon(const uint& icon_id); + void removeIcon(const std::string& icon_name); + void removeAllIcons(); + void setIconOffset(const int offset){ccif_offset = offset;}; + + enum //alignements + { + CC_ICONS_FRM_ALIGN_RIGHT , + CC_ICONS_FRM_ALIGN_LEFT + }; + void setIconAlign(int alignment){ccif_icon_align = alignment;}; + + int getIconId(const std::string& icon_name); +}; + +#endif diff --git a/src/gui/components/cc_frm_window.cpp b/src/gui/components/cc_frm_window.cpp index fd24999cf..8bd6e4c74 100644 --- a/src/gui/components/cc_frm_window.cpp +++ b/src/gui/components/cc_frm_window.cpp @@ -1,9 +1,9 @@ /* - Based up Neutrino-GUI - Tuxbox-Project + Based up Neutrino-GUI - Tuxbox-Project Copyright (C) 2001 by Steffen Hehn 'McClean' Classes for generic GUI-related components. - Copyright (C) 2012, 2013, Thilo Graf 'dbt' + Copyright (C) 2012, 2013, 2014 Thilo Graf 'dbt' Copyright (C) 2012, Michael Liebmann 'micha-bbg' License: GPL @@ -18,10 +18,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public - License along with this program; if not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - Boston, MA 02110-1301, USA. + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ #ifdef HAVE_CONFIG_H @@ -30,7 +28,7 @@ #include #include -#include "cc_frm.h" +#include "cc_frm_window.h" #include using namespace std; @@ -47,7 +45,7 @@ CComponentsWindow::CComponentsWindow() CComponentsWindow::CComponentsWindow(const std::string& caption, const char* iconname) { initVarWindow(); - + ccw_caption = caption; ccw_icon_name = iconname; @@ -57,7 +55,7 @@ CComponentsWindow::CComponentsWindow(const std::string& caption, const char* ico CComponentsWindow::CComponentsWindow(neutrino_locale_t locale_caption, const char* iconname) { initVarWindow(); - + ccw_caption = g_Locale->getText(locale_caption); ccw_icon_name = iconname; diff --git a/src/gui/components/cc_frm_window.h b/src/gui/components/cc_frm_window.h new file mode 100644 index 000000000..80e7e49f3 --- /dev/null +++ b/src/gui/components/cc_frm_window.h @@ -0,0 +1,160 @@ +/* + Based up Neutrino-GUI - Tuxbox-Project + Copyright (C) 2001 by Steffen Hehn 'McClean' + + Classes for generic GUI-related components. + Copyright (C) 2012, 2013, 2014, Thilo Graf 'dbt' + + License: GPL + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef __CC_FORM_WINDOW_H__ +#define __CC_FORM_WINDOW_H__ + +#include "cc_frm.h" +#include "cc_frm_icons.h" +#include "cc_frm_header.h" + +//! Sub class of CComponentsForm. Shows a window with prepared items. +/*! +CComponentsWindow provides prepared items like header, footer and a container for +items like text, labels, pictures ... +*/ +/* + x + y+-------------------------------------------------------+ + |icon caption buttons |header (ccw_head) + +-x-----------------------------------------------------+ + |cc_item0 | + |cc_item1 |body (ccw_body) + | add items here directly with | + | addWindowItem() or | + y with ccw_body->addCCItem() | + | Note: x/y related to body object | + | | + +-------------------------------------------------------+ + | add cc_items with ccw_footer->addCCItem() |footer(ccw_footer) + +-------------------------------------------------------+ + +*/ + +class CComponentsWindow : public CComponentsForm +{ + protected: + ///object: header object, to get access to header properties see also getHeaderObject() + CComponentsHeader * ccw_head; + ///object: body object, this is the container for all needed items, to add with addWindowItem() + CComponentsForm * ccw_body; + ///object: footer object, to get access to header properties see also getFooterObject( + CComponentsFooter * ccw_footer; + ///property: caption in header, see also getHeaderObject() + std::string ccw_caption; + ///property: alignment mode for header caption + int ccw_align_mode; + ///property: icon name in header, see also getHeaderObject() + const char* ccw_icon_name; + ///property: assigned default icon buttons in header, see also getHeaderObject() + int ccw_buttons; + ///property: value = true, let show footer, see showFooter() + bool ccw_show_footer; + ///property: value = true, let show header, see showHeader() + bool ccw_show_header; + + ///initialze header object + void initHeader(); + ///initialze body object + void initBody(); + ///initialze footer object + void initFooter(); + ///initialze all window objects at once + void initCCWItems(); + ///initialize all attributes + void initVarWindow(); + + public: + enum + { + CC_WINDOW_ITEM_HEADER = 0 + }; + ///simple constructor for CComponentsWindow + CComponentsWindow(); + + ///advanced constructor for CComponentsWindow, provides parameters for the most required properties, and caption as string + CComponentsWindow( const int x_pos, const int y_pos, const int w, const int h, + const std::string& caption, + const char* iconname = NULL, + bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, + fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, + fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); + + ///advanced constructor for CComponentsWindow, provides parameters for the most required properties, and caption from locales + CComponentsWindow( const int x_pos, const int y_pos, const int w, const int h, + neutrino_locale_t locale_caption, + const char* iconname = NULL, + bool has_shadow = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_MENUCONTENT_PLUS_6, + fb_pixel_t color_body = COL_MENUCONTENT_PLUS_0, + fb_pixel_t color_shadow = COL_MENUCONTENTDARK_PLUS_0); + + ///simple constructor for CComponentsWindow, provides parameters for caption as string and icon, position of window is general centered and bound + ///to current screen settings, this shows a window over full screen + CComponentsWindow(const std::string& caption, const char* iconname = NULL); + + ///simple constructor for CComponentsWindow, provides parameters for caption from locales and icon, position of window is general centered and bound + ///to current screen settings, this shows a window over full screen + CComponentsWindow(neutrino_locale_t locale_caption, const char* iconname = NULL); + + ~CComponentsWindow(); + + ///add item to body object, also usable is addCCItem() to add items to the windo object + void addWindowItem(CComponentsItem* cc_Item); + + ///allow/disallow paint a footer, default true, see also ccw_show_footer, showHeader() + void showFooter(bool show = true){ccw_show_footer = show; initCCWItems();}; + ///allow/disallow paint a header, default true, see also ccw_show_header, showFooter() + void showHeader(bool show = true){ccw_show_header = show; initCCWItems();}; + + ///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;}; + + ///set caption in header from locales, see also getHeaderObject() + void setWindowCaption(neutrino_locale_t locale_text, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK); + ///set caption alignment + void setWindowCaptionAlignment(const int& align_mode){ccw_align_mode = align_mode;}; + + ///set icon name in header, see also getHeaderObject() + void setWindowIcon(const char* iconname){ccw_icon_name = iconname;}; + + ///set default header icon buttons, see also getHeaderObject() + void setWindowHeaderButtons(const int& buttons){ccw_buttons = buttons;}; + + ///returns a pointer to the internal header object, use this to get access to header properities + CComponentsHeader* getHeaderObject(){return ccw_head;}; + + ///returns a pointer to the internal body object, use this to get access to body properities + CComponentsForm* getBodyObject(){return ccw_body;}; + ///returns a pointer to the internal footer object, use this to get access to footer properities + CComponentsFooter* getFooterObject(){return ccw_footer;}; + + ///refresh position and dimension and reinitialize elemenatary properties + void Refresh(){initCCWItems();}; + + ///paint all window items, this overwriting paint() from CComponentsForm + virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); +}; + +#endif