mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-26 15:02:56 +02:00
CMenueWidget: use native header as sub header
This commit is contained in:
@@ -644,6 +644,7 @@ void CMenuWidget::Init(const std::string &NameString, const std::string &Icon, c
|
||||
//caption and icon
|
||||
nameString = NameString;
|
||||
iconfile = Icon;
|
||||
subhead_text = std::string();
|
||||
|
||||
//basic attributes
|
||||
iconOffset = 0;
|
||||
@@ -671,6 +672,7 @@ void CMenuWidget::Init(const std::string &NameString, const std::string &Icon, c
|
||||
details_line = NULL;
|
||||
info_box = NULL;
|
||||
header = NULL;
|
||||
sub_header = NULL;
|
||||
footer = NULL;
|
||||
frameBuffer = CFrameBuffer::getInstance();
|
||||
mglobal = CMenuGlobal::getInstance(); //create CMenuGlobal instance only here
|
||||
@@ -723,6 +725,11 @@ void CMenuWidget::ResetModules()
|
||||
delete header;
|
||||
header = NULL;
|
||||
}
|
||||
if (sub_header){
|
||||
sub_header->hide();
|
||||
delete sub_header;
|
||||
sub_header = NULL;
|
||||
}
|
||||
if (details_line){
|
||||
details_line->hide();
|
||||
delete details_line;
|
||||
@@ -1168,6 +1175,8 @@ void CMenuWidget::hide()
|
||||
} else {
|
||||
if (header)
|
||||
header->kill();
|
||||
if (sub_header)
|
||||
sub_header->kill();
|
||||
if (info_box)
|
||||
info_box->kill();
|
||||
if (details_line)
|
||||
@@ -1255,6 +1264,8 @@ void CMenuWidget::calcSize()
|
||||
|
||||
initHeader();
|
||||
hheight = header->getHeight();
|
||||
if (sub_header)
|
||||
hheight += sub_header->getHeight();
|
||||
|
||||
int heightCurrPage=0;
|
||||
page_start.clear();
|
||||
@@ -1378,6 +1389,8 @@ void CMenuWidget::paint()
|
||||
// paint head
|
||||
initHeader();
|
||||
header->paint(CC_SAVE_SCREEN_NO);
|
||||
if (sub_header)
|
||||
sub_header->paint(CC_SAVE_SCREEN_NO);
|
||||
|
||||
// paint body background
|
||||
PaintBoxRel(x, y+hheight, width + scrollbar_width, height-hheight, COL_MENUCONTENT_PLUS_0, RADIUS_LARGE,
|
||||
@@ -1406,6 +1419,28 @@ void CMenuWidget::initHeader()
|
||||
header->setCaptionColor(COL_MENUHEAD_TEXT);
|
||||
header->enableColBodyGradient(g_settings.theme.menu_Head_gradient, COL_MENUCONTENT_PLUS_0);
|
||||
header->enableGradientBgCleanUp(savescreen);
|
||||
|
||||
if (!subhead_text.empty())
|
||||
initSubHeader();
|
||||
else
|
||||
if (sub_header){
|
||||
delete sub_header;
|
||||
sub_header = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void CMenuWidget::initSubHeader()
|
||||
{
|
||||
if (!sub_header){
|
||||
sub_header = new CComponentsHeader(x, y + header->getHeight(), header->getWidth(), 0, CComponentsHeader::CC_HEADER_SIZE_SMALL, subhead_text);
|
||||
sub_header->enableShadow(CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT);
|
||||
sub_header->setOffset(OFFSET_INNER_MID);
|
||||
sub_header->setCorner(CORNER_NONE);
|
||||
}
|
||||
sub_header->setWidth(header->getWidth());
|
||||
sub_header->setCaption(subhead_text);
|
||||
sub_header->setColorAll(COL_FRAME_PLUS_0, g_settings.theme.menu_Head_gradient ? COL_MENUCONTENT_PLUS_0 : COL_MENUHEAD_PLUS_0, COL_SHADOW_PLUS_0);
|
||||
sub_header->setCaptionColor(COL_MENUHEAD_TEXT);
|
||||
}
|
||||
|
||||
void CMenuWidget::setMenuPos(const int& menu_width)
|
||||
@@ -1507,8 +1542,7 @@ void CMenuWidget::addIntroItems(const std::string& s_subhead_text, neutrino_loca
|
||||
{
|
||||
brief_hints = brief_hint;
|
||||
|
||||
if (!s_subhead_text.empty())
|
||||
addItem(new CMenuSeparator(CMenuSeparator::ALIGN_LEFT | CMenuSeparator::SUB_HEAD | CMenuSeparator::STRING, s_subhead_text));
|
||||
subhead_text = s_subhead_text;
|
||||
|
||||
addItem(GenericMenuSeparator);
|
||||
|
||||
@@ -2439,17 +2473,6 @@ int CMenuSeparator::paint(bool selected)
|
||||
{
|
||||
height = getHeight();
|
||||
CFrameBuffer * frameBuffer = CFrameBuffer::getInstance();
|
||||
|
||||
if ((type & SUB_HEAD))
|
||||
{
|
||||
item_color = COL_MENUHEAD_TEXT;
|
||||
item_bgcolor = g_settings.theme.menu_Head_gradient ? COL_MENUCONTENT_PLUS_0 : COL_MENUHEAD_PLUS_0;
|
||||
}
|
||||
else
|
||||
{
|
||||
item_color = COL_MENUCONTENTINACTIVE_TEXT;
|
||||
item_bgcolor = COL_MENUCONTENT_PLUS_0;
|
||||
}
|
||||
|
||||
frameBuffer->paintBoxRel(x, y, dx, height, item_bgcolor);
|
||||
if ((type & LINE))
|
||||
@@ -2469,7 +2492,7 @@ int CMenuSeparator::paint(bool selected)
|
||||
|
||||
/* if no alignment is specified, align centered */
|
||||
if (type & ALIGN_LEFT)
|
||||
name_start_x = x + (!(type & SUB_HEAD) ? name_start_x : 2*OFFSET_INNER_MID + iconwidth);
|
||||
name_start_x = x + (2*OFFSET_INNER_MID + iconwidth);
|
||||
else if (type & ALIGN_RIGHT)
|
||||
name_start_x = x + dx - stringwidth - 2*OFFSET_INNER_MID;
|
||||
else /* ALIGN_CENTER */
|
||||
|
@@ -230,7 +230,7 @@ class CMenuSeparator : public CMenuItem
|
||||
ALIGN_CENTER = 4,
|
||||
ALIGN_LEFT = 8,
|
||||
ALIGN_RIGHT = 16,
|
||||
SUB_HEAD = 32
|
||||
SUB_HEAD = 0 //32 deprecated and invalid, only here for compatibility //TODO: remove global
|
||||
};
|
||||
|
||||
|
||||
@@ -552,8 +552,9 @@ class CMenuWidget : public CMenuTarget, public CComponentsSignals
|
||||
CComponentsDetailsLine *details_line;
|
||||
CComponentsInfoBox *info_box;
|
||||
int hint_height;
|
||||
CComponentsHeader *header;
|
||||
CComponentsHeader *header, *sub_header;
|
||||
CComponentsFooter *footer;
|
||||
std::string subhead_text;
|
||||
unsigned int saveScreen_width ;
|
||||
unsigned int saveScreen_height;
|
||||
unsigned int saveScreen_y;
|
||||
@@ -609,6 +610,7 @@ class CMenuWidget : public CMenuTarget, public CComponentsSignals
|
||||
void restoreScreen();
|
||||
void setMenuPos(const int& menu_width);
|
||||
void initHeader();
|
||||
void initSubHeader();
|
||||
|
||||
public:
|
||||
CMenuWidget();
|
||||
|
Reference in New Issue
Block a user