plugins: type for listed plugins on blue key is selectable

* add mainmenu items for tools and lua-extensions
 (default not visible)
* add usermenu items for tools and lua-extensions
 (default off)


Origin commit data
------------------
Commit: f9ad30f183
Author: vanhofen <vanhofen@gmx.de>
Date: 2014-02-04 (Tue, 04 Feb 2014)

Origin message was:
------------------
- plugins: type for listed plugins on blue key is selectable

* add mainmenu items for tools and lua-extensions
 (default not visible)
* add usermenu items for tools and lua-extensions
 (default off)
This commit is contained in:
vanhofen
2014-02-04 09:08:21 +01:00
parent fc1b332cc7
commit 530d403ee0
13 changed files with 85 additions and 11 deletions

View File

@@ -195,7 +195,14 @@ const CMenuOptionChooser::keyval PERSONALIZE_PROTECT_MODE_OPTIONS[CPersonalizeGu
{ CPersonalizeGui::PERSONALIZE_PROTECT_MODE_PIN_PROTECTED , LOCALE_PERSONALIZE_PINPROTECT },// The menu/option is protected by a PIN
};
#define PERSONALIZE_UMENU_PLUGIN_TYPE_MAX 4
const CMenuOptionChooser::keyval PERSONALIZE_UMENU_PLUGIN_TYPE[PERSONALIZE_UMENU_PLUGIN_TYPE_MAX] =
{
{ CPlugins::P_TYPE_GAME , LOCALE_MAINMENU_GAMES },
{ CPlugins::P_TYPE_TOOL , LOCALE_MAINMENU_TOOLS },
{ CPlugins::P_TYPE_SCRIPT , LOCALE_MAINMENU_SCRIPTS },
{ CPlugins::P_TYPE_LUA , LOCALE_MAINMENU_LUA }
};
CPersonalizeGui::CPersonalizeGui() : CPINProtection(g_settings.personalize_pincode)
{
@@ -453,6 +460,8 @@ void CPersonalizeGui::ShowUserMenu(CMenuWidget* p_widget, vector<CUserMenuSetup*
ShowPreverredKeySetup(fkeyMenu);
#endif
p_widget->addItem(GenericMenuSeparatorLine);
p_widget->addItem(GenericMenuSeparator);
p_widget->addItem(new CMenuOptionChooser(LOCALE_PERSONALIZE_USERMENU_PLUGIN_TYPE, &g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE], PERSONALIZE_UMENU_PLUGIN_TYPE, PERSONALIZE_UMENU_PLUGIN_TYPE_MAX, true));
p_widget->addItem(new CMenuOptionChooser(LOCALE_PERSONALIZE_USERMENU_SHOW_CANCEL, &g_settings.personalize[SNeutrinoSettings::P_UMENU_SHOW_CANCEL], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true));
}

View File

@@ -134,6 +134,8 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/)
tmp->number = count;
tmp->name = g_PluginList->getName(count);
tmp->desc = g_PluginList->getDescription(count);
if (tmp->desc == "")
tmp->desc = "---";
pluginlist.push_back(tmp);
}
}
@@ -310,7 +312,7 @@ void CPluginList::paintHead()
if (pluginlisttype == CPlugins::P_TYPE_GAME)
header.setIcon(NEUTRINO_ICON_GAMES);
else if (pluginlisttype == CPlugins::P_TYPE_SCRIPT)
else
header.setIcon(NEUTRINO_ICON_SHELL);
header.paint(CC_SAVE_SCREEN_NO);
@@ -356,11 +358,10 @@ void CPluginList::paintItems()
CPluginList::result_ CPluginList::pluginSelected()
{
hide();
g_PluginList->startPlugin(pluginlist[selected]->number,0);
if (!g_PluginList->getScriptOutput().empty())
{
hide();
//ShowMsg(LOCALE_PLUGINS_RESULT, Latin1_to_UTF8(g_PluginList->getScriptOutput()), CMessageBox::mbrBack,CMessageBox::mbBack,NEUTRINO_ICON_SHELL);
ShowMsg(LOCALE_PLUGINS_RESULT, g_PluginList->getScriptOutput(), CMessageBox::mbrBack,CMessageBox::mbBack,NEUTRINO_ICON_SHELL);
}
paint();

View File

@@ -134,7 +134,7 @@ void CPlugins::scanDir(const char *dir)
else if (new_plugin.type == CPlugins::P_TYPE_LUA)
new_plugin.pluginfile.append(".lua");
#endif
else
else // CPlugins::P_TYPE_GAME or CPlugins::P_TYPE_TOOL
new_plugin.pluginfile.append(".so");
// We do not check if new_plugin.pluginfile exists since .cfg in
// PLUGINDIR_VAR can overwrite settings in read only dir

View File

@@ -52,7 +52,6 @@ class CPlugins
P_TYPE_GAME = 0x2,
P_TYPE_TOOL = 0x4,
P_TYPE_SCRIPT = 0x8
#if ENABLE_LUA
,
P_TYPE_LUA = 0x10

View File

@@ -123,7 +123,11 @@ bool CUserMenu::showUserMenu(int button)
CDBoxInfoWidget *boxinfo = NULL;
CNeutrinoApp * neutrino = NULL;
CPluginList * games = NULL;
CPluginList * tools = NULL;
CPluginList * scripts = NULL;
#if ENABLE_LUA
CPluginList * lua = NULL;
#endif
std::string txt = g_settings.usermenu_text[button];
neutrino_locale_t caption = user_menu[button].caption;
@@ -294,6 +298,14 @@ bool CUserMenu::showUserMenu(int button)
menu_item = new CMenuForwarder(LOCALE_MAINMENU_GAMES, g_PluginList->hasPlugin(CPlugins::P_TYPE_GAME), NULL, games, "-1", key, icon );
menu->addItem(menu_item, false);
break;
case SNeutrinoSettings::ITEM_TOOLS:
menu_items++;
menu_prev = SNeutrinoSettings::ITEM_TOOLS;
tools = new CPluginList(LOCALE_MAINMENU_TOOLS,CPlugins::P_TYPE_TOOL);
keyhelper.get(&key,&icon);
menu_item = new CMenuForwarder(LOCALE_MAINMENU_TOOLS, g_PluginList->hasPlugin(CPlugins::P_TYPE_TOOL), NULL, tools, "-1", key, icon );
menu->addItem(menu_item, false);
break;
case SNeutrinoSettings::ITEM_SCRIPTS:
menu_items++;
menu_prev = SNeutrinoSettings::ITEM_SCRIPTS;
@@ -302,17 +314,24 @@ bool CUserMenu::showUserMenu(int button)
menu_item = new CMenuForwarder(LOCALE_MAINMENU_SCRIPTS, g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT), NULL, scripts, "-1", key, icon );
menu->addItem(menu_item, false);
break;
#if ENABLE_LUA
case SNeutrinoSettings::ITEM_LUA:
menu_items++;
menu_prev = SNeutrinoSettings::ITEM_LUA;
lua = new CPluginList(LOCALE_MAINMENU_LUA,CPlugins::P_TYPE_LUA);
keyhelper.get(&key,&icon);
menu_item = new CMenuForwarder(LOCALE_MAINMENU_LUA, g_PluginList->hasPlugin(CPlugins::P_TYPE_LUA), NULL, lua, "-1", key, icon );
menu->addItem(menu_item, false);
break;
#endif
case SNeutrinoSettings::ITEM_PLUGIN:
{
char id[5];
int cnt = 0;
for (unsigned int count = 0; count < (unsigned int) g_PluginList->getNumberOfPlugins(); count++)
{
bool show = g_PluginList->getType(count) == CPlugins::P_TYPE_TOOL;
bool show = g_PluginList->getType(count) == g_settings.personalize[SNeutrinoSettings::P_UMENU_PLUGIN_TYPE];
#if ENABLE_LUA
show = show || g_PluginList->getType(count) == CPlugins::P_TYPE_LUA;
#endif
if (show && !g_PluginList->isHidden(count))
{
sprintf(id, "%d", count);

View File

@@ -89,7 +89,9 @@ const CMenuOptionChooser::keyval USERMENU_ITEM_OPTIONS[USERMENU_ITEM_OPTION_COUN
{ SNeutrinoSettings::ITEM_SCRIPTS, LOCALE_MAINMENU_SCRIPTS },
{ SNeutrinoSettings::ITEM_RECORD, LOCALE_TIMERLIST_TYPE_RECORD },
{ SNeutrinoSettings::ITEM_YOUTUBE, LOCALE_MOVIEPLAYER_YTPLAYBACK },
{ SNeutrinoSettings::ITEM_FILEPLAY, LOCALE_MOVIEPLAYER_FILEPLAYBACK }
{ SNeutrinoSettings::ITEM_FILEPLAY, LOCALE_MOVIEPLAYER_FILEPLAYBACK },
{ SNeutrinoSettings::ITEM_TOOLS, LOCALE_MAINMENU_TOOLS },
{ SNeutrinoSettings::ITEM_LUA, LOCALE_MAINMENU_LUA }
};
int CUserMenuSetup::exec(CMenuTarget* parent, const std::string &)

View File

@@ -195,11 +195,25 @@ void CNeutrinoApp::InitMenuMain()
mf->setHint(NEUTRINO_ICON_HINT_GAMES, LOCALE_MENU_HINT_GAMES);
personalize.addItem(MENU_MAIN, mf, &g_settings.personalize[SNeutrinoSettings::P_MAIN_GAMES]);
//tools
bool show_tools = g_PluginList->hasPlugin(CPlugins::P_TYPE_TOOL);
mf = new CMenuForwarder(LOCALE_MAINMENU_TOOLS, show_tools, NULL, new CPluginList(LOCALE_MAINMENU_TOOLS,CPlugins::P_TYPE_TOOL));
mf->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_TOOLS);
personalize.addItem(MENU_MAIN, mf, &g_settings.personalize[SNeutrinoSettings::P_MAIN_TOOLS]);
//scripts
bool show_scripts = g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT);
mf = new CMenuForwarder(LOCALE_MAINMENU_SCRIPTS, show_scripts, NULL, new CPluginList(LOCALE_MAINMENU_SCRIPTS,CPlugins::P_TYPE_SCRIPT));
mf->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_SCRIPTS);
personalize.addItem(MENU_MAIN, mf, &g_settings.personalize[SNeutrinoSettings::P_MAIN_SCRIPTS]);
#if ENABLE_LUA
//lua
bool show_lua = g_PluginList->hasPlugin(CPlugins::P_TYPE_LUA);
mf = new CMenuForwarder(LOCALE_MAINMENU_LUA, show_lua, NULL, new CPluginList(LOCALE_MAINMENU_LUA,CPlugins::P_TYPE_LUA));
mf->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_LUA);
personalize.addItem(MENU_MAIN, mf, &g_settings.personalize[SNeutrinoSettings::P_MAIN_LUA]);
#endif
}
//separator

View File

@@ -767,6 +767,7 @@ typedef enum
LOCALE_MAINMENU_CLEARSECTIONSD,
LOCALE_MAINMENU_GAMES,
LOCALE_MAINMENU_HEAD,
LOCALE_MAINMENU_LUA,
LOCALE_MAINMENU_MEDIA,
LOCALE_MAINMENU_MOVIEPLAYER,
LOCALE_MAINMENU_PAUSESECTIONSD,
@@ -783,6 +784,7 @@ typedef enum
LOCALE_MAINMENU_SHUTDOWN_MENU,
LOCALE_MAINMENU_SLEEPTIMER,
LOCALE_MAINMENU_STANDBY,
LOCALE_MAINMENU_TOOLS,
LOCALE_MAINMENU_TVMODE,
LOCALE_MAINMENU_TVRADIO_SWITCH,
LOCALE_MAINSETTINGS_AUDIO,
@@ -980,6 +982,7 @@ typedef enum
LOCALE_MENU_HINT_LEDS_STANDBY,
LOCALE_MENU_HINT_LEDS_TV,
LOCALE_MENU_HINT_LOAD,
LOCALE_MENU_HINT_LUA,
LOCALE_MENU_HINT_MAKE_HDLIST,
LOCALE_MENU_HINT_MAKE_NEWLIST,
LOCALE_MENU_HINT_MAKE_REMOVEDLIST,
@@ -1192,6 +1195,7 @@ typedef enum
LOCALE_MENU_HINT_TIMEOUTS,
LOCALE_MENU_HINT_TIMERS,
LOCALE_MENU_HINT_TIMEZONE,
LOCALE_MENU_HINT_TOOLS,
LOCALE_MENU_HINT_TVMODE,
LOCALE_MENU_HINT_TVRADIO_SWITCH,
LOCALE_MENU_HINT_VFD,
@@ -1634,6 +1638,7 @@ typedef enum
LOCALE_PERSONALIZE_PINPROTECT,
LOCALE_PERSONALIZE_PINSTATUS,
LOCALE_PERSONALIZE_PLUGINS,
LOCALE_PERSONALIZE_USERMENU_PLUGIN_TYPE,
LOCALE_PERSONALIZE_USERMENU_PREFERRED_BUTTONS,
LOCALE_PERSONALIZE_USERMENU_SHOW_CANCEL,
LOCALE_PERSONALIZE_VISIBLE,

View File

@@ -767,6 +767,7 @@ const char * locale_real_names[] =
"mainmenu.clearsectionsd",
"mainmenu.games",
"mainmenu.head",
"mainmenu.lua",
"mainmenu.media",
"mainmenu.movieplayer",
"mainmenu.pausesectionsd",
@@ -783,6 +784,7 @@ const char * locale_real_names[] =
"mainmenu.shutdown_menu",
"mainmenu.sleeptimer",
"mainmenu.standby",
"mainmenu.tools",
"mainmenu.tvmode",
"mainmenu.tvradio_switch",
"mainsettings.audio",
@@ -980,6 +982,7 @@ const char * locale_real_names[] =
"menu.hint_leds_standby",
"menu.hint_leds_tv",
"menu.hint_load",
"menu.hint_lua",
"menu.hint_make_hdlist",
"menu.hint_make_newlist",
"menu.hint_make_removedlist",
@@ -1192,6 +1195,7 @@ const char * locale_real_names[] =
"menu.hint_timeouts",
"menu.hint_timers",
"menu.hint_timezone",
"menu.hint_tools",
"menu.hint_tvmode",
"menu.hint_tvradio_switch",
"menu.hint_vfd",
@@ -1634,6 +1638,7 @@ const char * locale_real_names[] =
"personalize.pinprotect",
"personalize.pinstatus",
"personalize.plugins",
"personalize.usermenu_plugin_type",
"personalize.usermenu_preferred_buttons",
"personalize.usermenu_show_cancel",
"personalize.visible",

View File

@@ -47,7 +47,9 @@ const struct personalize_settings_t personalize_settings[SNeutrinoSettings::P_SE
{"personalize_media" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
{"personalize_games" , CPersonalizeGui::PERSONALIZE_MODE_NOTVISIBLE},
{"personalize_tools" , CPersonalizeGui::PERSONALIZE_MODE_NOTVISIBLE},
{"personalize_scripts" , CPersonalizeGui::PERSONALIZE_MODE_NOTVISIBLE},
{"personalize_lua" , CPersonalizeGui::PERSONALIZE_MODE_NOTVISIBLE},
{"personalize_settings" , CPersonalizeGui::PERSONALIZE_PROTECT_MODE_NOT_PROTECTED},
{"personalize_service" , CPersonalizeGui::PERSONALIZE_PROTECT_MODE_NOT_PROTECTED},
{"personalize_sleeptimer" , CPersonalizeGui::PERSONALIZE_MODE_VISIBLE},
@@ -101,6 +103,8 @@ const struct personalize_settings_t personalize_settings[SNeutrinoSettings::P_SE
{"personalize_feat_key_vtxt" , CPersonalizeGui::PERSONALIZE_FEAT_KEY_BLUE},
{"personalize_feat_key_rclock" , CPersonalizeGui::PERSONALIZE_FEAT_KEY_AUTO},
//plugin type
{"personalize_usermenu_plugin_type" , CPlugins::P_TYPE_TOOL },
//user menu
{"personalize_usermenu_show_cancel" , true},
};

View File

@@ -177,7 +177,9 @@ struct SNeutrinoSettings
P_MAIN_MEDIA,
P_MAIN_GAMES,
P_MAIN_TOOLS,
P_MAIN_SCRIPTS,
P_MAIN_LUA,
P_MAIN_SETTINGS,
P_MAIN_SERVICE,
P_MAIN_SLEEPTIMER,
@@ -231,6 +233,8 @@ struct SNeutrinoSettings
P_FEAT_KEY_VTXT,
P_FEAT_KEY_RC_LOCK,
//plugins type
P_UMENU_PLUGIN_TYPE,
//user menu
P_UMENU_SHOW_CANCEL,
@@ -658,6 +662,8 @@ struct SNeutrinoSettings
ITEM_SCRIPTS = 21,
ITEM_YOUTUBE = 22,
ITEM_FILEPLAY = 23,
ITEM_TOOLS = 24,
ITEM_LUA = 25,
ITEM_MAX // MUST be always the last in the list
} USER_ITEM;
std::string usermenu_text[BUTTON_MAX];