CComponentsItemBox: Add flag 'isCalculated' for control calculateElements()

This commit is contained in:
micha-bbg
2012-09-04 20:31:36 +02:00
committed by Thilo Graf
parent 32515da236
commit 33b4fc4cfa
2 changed files with 14 additions and 0 deletions

View File

@@ -342,6 +342,7 @@ class CComponentsItemBox : public CComponentsContainer
size_t prevElementLeft;
size_t prevElementRight;
std::vector<comp_element_data_t> v_element_data;
bool isCalculated;
void clearElements();
void initVarItemBox();
@@ -367,6 +368,7 @@ class CComponentsItemBox : public CComponentsContainer
virtual void addIcon(const std::string& s_icon_name, const int align=CC_ALIGN_LEFT, size_t *index=NULL);
virtual void addPicture(const std::string& s_picture_path, const int align=CC_ALIGN_LEFT, size_t *index=NULL);
virtual void addClock(const int align=CC_ALIGN_RIGHT, size_t *index=NULL);
virtual int getHeight();
};
class CComponentsTitleBar : public CComponentsItemBox

View File

@@ -852,9 +852,17 @@ void CComponentsItemBox::initVarItemBox()
prevElementLeft = 0;
prevElementRight = 0;
onlyOneTextElement = false;
isCalculated = false;
v_element_data.clear();
}
int CComponentsItemBox::getHeight()
{
if (!isCalculated)
calculateElements();
return height;
}
void CComponentsItemBox::clearElements()
{
for(size_t i = 0; i < v_element_data.size(); i++) {
@@ -874,6 +882,7 @@ void CComponentsItemBox::clearElements()
break;
}
}
isCalculated = false;
v_element_data.clear();
}
@@ -911,6 +920,7 @@ bool CComponentsItemBox::addLogoOrText(int align, const std::string& logo, const
v_element_data.push_back(data);
if (index != NULL)
*index = v_element_data.size()-1;
isCalculated = false;
return true;
}
@@ -974,6 +984,7 @@ bool CComponentsItemBox::addElement(int align, int type, const std::string& elem
v_element_data.push_back(data);
if (index != NULL)
*index = v_element_data.size()-1;
isCalculated = false;
return true;
}
@@ -1199,6 +1210,7 @@ void CComponentsItemBox::calculateElements()
}
calPositionOfElements();
isCalculated = true;
}
void CComponentsItemBox::paintItemBox(bool do_save_bg)