wenn die mal die falsche taste drückt. deshalb schränke ich das neutrino
menü bei bedarf ein bzw. erstelle es on the fly neu, wenn ich kanalsuche
oder ähnliches durchführe. hier mal der code. vielleicht kann der ja eingecheckt werden.
CMenuWidget
addItem ist geändert. einfügen eines menu items an einer bestimmten position
removeItem ist neu. löschen einers menu item objekts
removeIndex ist neu. löschen eins menu item objets an einer bestimmten position
menue.h
Code: Alles auswählen
virtual void addItem(CMenuItem* menuItem, const bool defaultselected=false, int position=-1);
virtual void removeItem(CMenuItem* menuItem);
virtual void removeIndex(int position);
Code: Alles auswählen
void CMenuWidget::addItem(CMenuItem* menuItem, const bool defaultselected, int position)
{
if (position < 0) {
if (defaultselected)
selected = items.size();
items.push_back(menuItem);
}
else {
int targetpos = -1;
std::vector<CMenuItem*>::iterator e;
if (defaultselected)
if (position < (int)items.size())
selected = position;
else
selected = items.size();
for ( e = items.begin(); e!= items.end(); ++e ) {
targetpos++;
if(targetpos == position) {
items.insert(e, menuItem);
break;
}
}
}
}
void CMenuWidget::removeItem(CMenuItem* menuItem)
{
int targetpos = -1;
std::vector<CMenuItem*>::iterator e;
for ( e = items.begin(); e!= items.end(); ++e ) {
targetpos++;
if(items[targetpos] == menuItem) {
items.erase(e);
break;
}
}
}
void CMenuWidget::removeIndex(int position)
{
int targetpos = -1;
std::vector<CMenuItem*>::iterator e;
for ( e = items.begin(); e!= items.end(); ++e ) {
targetpos++;
if(targetpos == position) {
items.erase(e);
break;
}
}
}