From 5bbe8e770eaedd24f91bee0301780aa12acf9f9f Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Sun, 9 Sep 2012 12:49:05 +0200 Subject: [PATCH] CComponentsItemBox: move paint of icons and pictures into it's own member --- src/gui/components/cc.h | 3 +- src/gui/components/components.cpp | 51 +++++++++++++++++++------------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/gui/components/cc.h b/src/gui/components/cc.h index 182c44772..9b341c2f3 100644 --- a/src/gui/components/cc.h +++ b/src/gui/components/cc.h @@ -341,6 +341,7 @@ class CComponentsItemBox : public CComponentsContainer void paintItemBox(bool do_save_bg = CC_SAVE_SCREEN_YES); void calculateElements(); bool addElement(int align, int type, const std::string& element="", size_t *index=NULL); + void paintImage(size_t index, bool newElement); public: CComponentsItemBox(); @@ -400,7 +401,7 @@ class CComponentsForm : public CComponentsContainer public: CComponentsForm(); ~CComponentsForm(); - + void paint(bool do_save_bg = CC_SAVE_SCREEN_YES); void hide(bool no_restore = false); void setCaption(const std::string& text); diff --git a/src/gui/components/components.cpp b/src/gui/components/components.cpp index 964f48f71..fa18adb69 100644 --- a/src/gui/components/components.cpp +++ b/src/gui/components/components.cpp @@ -980,33 +980,44 @@ void CComponentsItemBox::refreshElement(size_t index, const std::string& element calculateElements(); } -void CComponentsItemBox::paintElement(size_t index, bool newElement) +//paint image into item box +void CComponentsItemBox::paintImage(size_t index, bool newElement) { CComponentsPicture* pic = NULL; + pic = static_cast(v_element_data[index].handler1); + + int pw = 0, ph = 0; + + if ((newElement) || (pic == NULL)) { + if (pic != NULL) { + pic->hide(); + delete pic; + pic = NULL; + } + if ((v_element_data[index].type) == CC_ITEMBOX_PICTURE) + pic = new CComponentsPicture( v_element_data[index].x, v_element_data[index].y, v_element_data[index].width, + v_element_data[index].height, v_element_data[index].element); + else + pic = new CComponentsPicture( v_element_data[index].x, v_element_data[index].y, v_element_data[index].element); + v_element_data[index].handler1 = (void*)pic; + } + + pic->getPictureSize(&pw, &ph); + pic->setHeight(ph); + pic->setWidth(pw); + pic->setColorBody(col_body); + pic->paint(); +} + +void CComponentsItemBox::paintElement(size_t index, bool newElement) +{ CBox* box = NULL; CTextBox* textbox = NULL; - int pw = 0, ph = 0; + switch (v_element_data[index].type) { case CC_ITEMBOX_ICON: case CC_ITEMBOX_PICTURE: - pic = static_cast(v_element_data[index].handler1); - if ((newElement) || (pic == NULL)) { - if (pic != NULL) { - pic->hide(); - delete pic; - } - if ((v_element_data[index].type) == CC_ITEMBOX_PICTURE) - pic = new CComponentsPicture( v_element_data[index].x, v_element_data[index].y, v_element_data[index].width, - v_element_data[index].height, v_element_data[index].element); - else - pic = new CComponentsPicture( v_element_data[index].x, v_element_data[index].y, v_element_data[index].element); - v_element_data[index].handler1 = (void*)pic; - } - pic->getPictureSize(&pw, &ph); - pic->setHeight(ph); - pic->setWidth(pw); - pic->setColorBody(col_body); - pic->paint(); + paintImage(index,newElement); break; case CC_ITEMBOX_TEXT: box = static_cast(v_element_data[index].handler1);