int CWebTVSetup::exec(CMenuTarget* parent, const std::string & actionKey) { int res = menu_return::RETURN_REPAINT; if(actionKey == "d" /* delete */) { selected = m->getSelected(); if (selected >= item_offset) { m->removeItem(selected); m->hide(); selected = m->getSelected(); changed = true; } return res; } if(actionKey == "c" /* change */) { CFileBrowser fileBrowser; CFileFilter fileFilter; fileFilter.addFilter("xml"); fileBrowser.Filter = &fileFilter; selected = m->getSelected(); CMenuItem* item = m->getItem(selected); CMenuForwarder *f = static_cast<CMenuForwarder*>(item); std::string dirname(f->getName()); if (fileBrowser.exec(dirname.substr(0, dirname.rfind('/')).c_str())) { f->setName(fileBrowser.getSelectedFile()->Name); changed = true; } return res; } if(actionKey == "a" /* add */) { CFileBrowser fileBrowser; CFileFilter fileFilter; fileFilter.addFilter("xml"); fileBrowser.Filter = &fileFilter; if (fileBrowser.exec("/") == true) { std::string s = fileBrowser.getSelectedFile()->Name; m->addItem(new CMenuForwarder(s, true, NULL, this, "c")); changed = true; } return res; } if(parent) parent->hide(); Show(); return res; }