void CWebTVSetup::Show() { item_offset = 0; m = new CMenuWidget(LOCALE_WEBTV_HEAD, NEUTRINO_ICON_MOVIEPLAYER, width); m->addKey(CRCInput::RC_red, this, "d"); m->addKey(CRCInput::RC_green, this, "a"); m->setSelected(selected); m->addIntroItems(LOCALE_EPGPLUS_OPTIONS, LOCALE_WEBTV_XML); item_offset = m->getItemsCount(); for (std::list<std::string>::iterator it = g_settings.webtv_xml.begin(); it != g_settings.webtv_xml.end(); ++it) m->addItem(new CMenuForwarder(*it, true, NULL, this, "c")); m->setFooter(CWebTVSetupFooterButtons, CWebTVSetupFooterButtonCount); m->exec(NULL, ""); m->hide(); if (changed) { g_settings.webtv_xml.clear(); for (int i = item_offset; i < m->getItemsCount(); i++) { CMenuItem *item = m->getItem(i); CMenuForwarder *f = static_cast<CMenuForwarder*>(item); g_settings.webtv_xml.push_back(f->getName()); } g_Zapit->reinitChannels(); changed = false; } selected = m->getSelected(); delete m; }
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; }