mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-27 15:32:59 +02:00
gui/widget/menue.cpp: add activate observer to notify when item become active
This commit is contained in:
@@ -87,6 +87,7 @@ CMenuItem::CMenuItem(bool Active, neutrino_msg_t DirectKey, const char * const I
|
|||||||
directKeyOK = true;
|
directKeyOK = true;
|
||||||
selected_iconName = NULL;
|
selected_iconName = NULL;
|
||||||
height = 0;
|
height = 0;
|
||||||
|
actObserv = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMenuItem::init(const int X, const int Y, const int DX, const int OFFX)
|
void CMenuItem::init(const int X, const int Y, const int DX, const int OFFX)
|
||||||
@@ -453,6 +454,12 @@ int CMenuItem::getHeight(void)
|
|||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMenuItem::activateNotify()
|
||||||
|
{
|
||||||
|
if (actObserv)
|
||||||
|
actObserv->activateNotify(name);
|
||||||
|
}
|
||||||
|
|
||||||
//small helper class to manage values e.g.: handling needed but deallocated widget objects
|
//small helper class to manage values e.g.: handling needed but deallocated widget objects
|
||||||
CMenuGlobal::CMenuGlobal()
|
CMenuGlobal::CMenuGlobal()
|
||||||
{
|
{
|
||||||
@@ -822,6 +829,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &)
|
|||||||
if (pos < page_start[current_page + 1] && pos >= page_start[current_page]) {
|
if (pos < page_start[current_page + 1] && pos >= page_start[current_page]) {
|
||||||
/* in current page */
|
/* in current page */
|
||||||
items[selected]->paint(false);
|
items[selected]->paint(false);
|
||||||
|
item->activateNotify();
|
||||||
item->paint(true);
|
item->paint(true);
|
||||||
paintHint(pos);
|
paintHint(pos);
|
||||||
selected = pos;
|
selected = pos;
|
||||||
@@ -1215,19 +1223,15 @@ void CMenuWidget::paintItems()
|
|||||||
(count < page_start[current_page + 1]))
|
(count < page_start[current_page + 1]))
|
||||||
{
|
{
|
||||||
item->init(x, ypos, width, iconOffset);
|
item->init(x, ypos, width, iconOffset);
|
||||||
if( (item->isSelectable()) && (selected==-1) )
|
|
||||||
{
|
if (item->isSelectable() && selected == -1)
|
||||||
paintHint(count);
|
|
||||||
ypos = item->paint(true);
|
|
||||||
selected = count;
|
selected = count;
|
||||||
|
|
||||||
|
if (selected == count) {
|
||||||
|
item->activateNotify();
|
||||||
|
paintHint(count);
|
||||||
}
|
}
|
||||||
else
|
ypos = item->paint(selected == count);
|
||||||
{
|
|
||||||
bool sel = selected==((signed int) count) ;
|
|
||||||
if(sel)
|
|
||||||
paintHint(count);
|
|
||||||
ypos = item->paint(sel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -82,6 +82,13 @@ class CChangeObserver
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CActivateObserver
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ~CActivateObserver(){}
|
||||||
|
virtual void activateNotify(const neutrino_locale_t /*OptionName*/) {}
|
||||||
|
};
|
||||||
|
|
||||||
class CMenuTarget
|
class CMenuTarget
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@@ -113,6 +120,7 @@ class CMenuItem
|
|||||||
std::string nameString;
|
std::string nameString;
|
||||||
neutrino_locale_t desc;
|
neutrino_locale_t desc;
|
||||||
std::string descString;
|
std::string descString;
|
||||||
|
CActivateObserver * actObserv;
|
||||||
public:
|
public:
|
||||||
int height;
|
int height;
|
||||||
bool active;
|
bool active;
|
||||||
@@ -180,6 +188,8 @@ class CMenuItem
|
|||||||
virtual void setDescription(const std::string& text);
|
virtual void setDescription(const std::string& text);
|
||||||
virtual void setDescription(const neutrino_locale_t text);
|
virtual void setDescription(const neutrino_locale_t text);
|
||||||
virtual int getDescriptionHeight(void);
|
virtual int getDescriptionHeight(void);
|
||||||
|
void setActivateObserver(CActivateObserver * Observ) { actObserv = Observ; }
|
||||||
|
void activateNotify(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
class CMenuSeparator : public CMenuItem
|
class CMenuSeparator : public CMenuItem
|
||||||
|
Reference in New Issue
Block a user