static int runMenu(QString which_menu) { QString themedir = GetMythUI()->GetThemeDir(); MythThemedMenu *diag = new MythThemedMenu( themedir, which_menu, GetMythMainWindow()->GetMainStack(), "music menu"); diag->setCallback(MusicCallback, NULL); diag->setKillable(); if (diag->foundTheme()) { if (LCD *lcd = LCD::Get()) { lcd->switchToTime(); } GetMythMainWindow()->GetMainStack()->AddScreen(diag); return 0; } else { VERBOSE(VB_IMPORTANT, QString("Couldn't find menu %1 or theme %2") .arg(which_menu).arg(themedir)); delete diag; return -1; } }
int mythplugin_config() { QString menuname = "weather_settings.xml"; QString themedir = GetMythUI()->GetThemeDir(); MythThemedMenu *menu = new MythThemedMenu( themedir, menuname, GetMythMainWindow()->GetMainStack(), "weather menu"); menu->setCallback(WeatherCallback, nullptr); menu->setKillable(); if (menu->foundTheme()) { if (LCD *lcd = LCD::Get()) { lcd->setFunctionLEDs(FUNC_NEWS, false); lcd->switchToTime(); } GetMythMainWindow()->GetMainStack()->AddScreen(menu); return 0; } else { LOG(VB_GENERAL, LOG_ERR, QString("Couldn't find menu %1 or theme %2") .arg(menuname).arg(themedir)); delete menu; return -1; } }
static int runMenu(QString which_menu) { QString themedir = GetMythUI()->GetThemeDir(); MythThemedMenu *menu = new MythThemedMenu( themedir, which_menu, GetMythMainWindow()->GetMainStack(), "game menu"); GameData data; menu->setCallback(GameCallback, &data); menu->setKillable(); if (menu->foundTheme()) { if (LCD *lcd = LCD::Get()) lcd->switchToTime(); GetMythMainWindow()->GetMainStack()->AddScreen(menu); return 0; } else { LOG(VB_GENERAL, LOG_ERR, QString("Couldn't find menu %1 or theme %2") .arg(which_menu).arg(themedir)); delete menu; return -1; } }
static int runMenu(QString which_menu) { QString themedir = GetMythUI()->GetThemeDir(); // find the 'mainmenu' MythThemedMenu so we can use the callback from it MythThemedMenu *mainMenu = NULL; QObject *parentObject = GetMythMainWindow()->GetMainStack()->GetTopScreen(); while (parentObject) { MythThemedMenu *menu = dynamic_cast<MythThemedMenu *>(parentObject); if (menu && menu->objectName() == "mainmenu") { mainMenu = menu; break; } parentObject = parentObject->parent(); } MythThemedMenu *diag = new MythThemedMenu( themedir, which_menu, GetMythMainWindow()->GetMainStack(), "music menu"); // save the callback from the main menu if (mainMenu) mainMenu->getCallback(&m_callback, &m_callbackdata); diag->setCallback(MusicCallback, NULL); diag->setKillable(); if (diag->foundTheme()) { if (LCD *lcd = LCD::Get()) { lcd->switchToTime(); } GetMythMainWindow()->GetMainStack()->AddScreen(diag); return 0; } else { LOG(VB_GENERAL, LOG_ERR, QString("Couldn't find menu %1 or theme %2") .arg(which_menu).arg(themedir)); delete diag; return -1; } }
void runMenu(QString which_menu) { QString themedir = GetMythUI()->GetThemeDir(); MythThemedMenu *diag = new MythThemedMenu(themedir, which_menu, GetMythMainWindow()->GetMainStack(), "wmr928 menu"); diag->setCallback(MenuCallback, NULL); diag->setKillable(); if (diag->foundTheme()) { GetMythMainWindow()->GetMainStack()->AddScreen(diag); } else { cerr << "Couldn't find theme " << qPrintable(themedir) << endl; } }
static int runMenu(QString which_menu) { QString themedir = GetMythUI()->GetThemeDir(); MythThemedMenu *diag = new MythThemedMenu( themedir, which_menu, GetMythMainWindow()->GetMainStack(), "archive menu"); diag->setCallback(ArchiveCallback, NULL); diag->setKillable(); if (diag->foundTheme()) { GetMythMainWindow()->GetMainStack()->AddScreen(diag); return 0; } else { LOG(VB_GENERAL, LOG_ERR, QString("Couldn't find menu %1 or theme %2") .arg(which_menu).arg(themedir)); delete diag; return -1; } }
/** \brief Handle a MythTV action for the Menus. * * \param action single action to be handled * \return true if the action is not to EXEC another program */ bool MythThemedMenu::handleAction(const QString &action, const QString &password) { MythUIMenuCallbacks *cbs = GetMythUI()->GetMenuCBs(); if (((password == "SetupPinCode") && GetMythDB()->GetNumSetting("SetupPinCodeRequired", 0)) || (!password.isEmpty() && password != "SetupPinCode")) { if (!checkPinCode(password)) return true; } if (action.left(5) == "EXEC ") { QString rest = action.right(action.length() - 5); if (cbs && cbs->exec_program) cbs->exec_program(rest); return false; } else if (action.left(7) == "EXECTV ") { QString rest = action.right(action.length() - 7).trimmed(); if (cbs && cbs->exec_program_tv) cbs->exec_program_tv(rest); } else if (action.left(5) == "MENU ") { QString menu = action.right(action.length() - 5); MythScreenStack *stack = GetScreenStack(); MythThemedMenu *newmenu = new MythThemedMenu("", menu, stack, menu, false, m_state); if (newmenu->foundTheme()) stack->AddScreen(newmenu); else delete newmenu; } else if (action.left(6) == "UPMENU") { m_wantpop = true; } else if (action.left(12) == "CONFIGPLUGIN") { QString rest = action.right(action.length() - 13); if (cbs && cbs->configplugin) cbs->configplugin(rest); } else if (action.left(6) == "PLUGIN") { QString rest = action.right(action.length() - 7); if (cbs && cbs->plugin) cbs->plugin(rest); } else if (action.left(8) == "SHUTDOWN") { if (m_allocedstate) { m_wantpop = true; } } else if (action.left(5) == "EJECT") { if (cbs && cbs->eject) cbs->eject(); } else if (action.left(5) == "JUMP ") { QString rest = action.right(action.length() - 5); GetMythMainWindow()->JumpTo(rest, false); } else if (action.left(6) == "MEDIA ") { // the format is MEDIA HANDLER URL // TODO: allow spaces in the url QStringList list = action.simplified().split(' '); if (list.size() >= 3) GetMythMainWindow()->HandleMedia(list[1], list[2]); } else { m_selection = action; if (m_state->m_callback) m_state->m_callback(m_state->m_callbackdata, m_selection); else LOG(VB_GENERAL, LOG_ERR, "Unknown menu action: " + action); } return true; }