diff --git a/src/gui/plugins.cpp b/src/gui/plugins.cpp index 309bc0ada..33a46693a 100644 --- a/src/gui/plugins.cpp +++ b/src/gui/plugins.cpp @@ -160,7 +160,8 @@ void CPlugins::loadPlugins() scanDir(PLUGINDIR_USB); scanDir(PLUGINDIR_VAR); scanDir(PLUGINDIR); - sort(plugin_list.begin(), plugin_list.end()); + + sort (plugin_list.begin(), plugin_list.end()); } CPlugins::~CPlugins() @@ -182,6 +183,8 @@ bool CPlugins::parseCfg(plugin *plugin_data) while (linecount < 20 && getline(inFile, line[linecount++])) {}; + plugin_data->index = 0; + plugin_data->key = 0; //CRCInput::RC_nokey plugin_data->fb = false; plugin_data->rc = false; plugin_data->lcd = false; @@ -200,7 +203,15 @@ bool CPlugins::parseCfg(plugin *plugin_data) getline(iss, cmd, '='); getline(iss, parm, '='); - if (cmd == "pluginversion") + if (cmd == "index") + { + plugin_data->index = atoi(parm.c_str()); + } + else if (cmd == "key") + { + plugin_data->key = atoi(parm.c_str()); + } + else if (cmd == "pluginversion") { plugin_data->version = atoi(parm.c_str()); } diff --git a/src/gui/plugins.h b/src/gui/plugins.h index 6f2d7a4d8..b9e95ad71 100644 --- a/src/gui/plugins.h +++ b/src/gui/plugins.h @@ -62,7 +62,9 @@ class CPlugins struct plugin { + int index; std::string filename; + int key; std::string cfgfile; std::string pluginfile; int version; @@ -70,7 +72,7 @@ class CPlugins std::string description; // UTF-8 encoded std::string depend; CPlugins::p_type_t type; - + bool fb; bool rc; bool lcd; @@ -81,7 +83,7 @@ class CPlugins bool hide; bool operator< (const plugin& a) const { - return this->filename < a.filename ; + return this->index < a.index ; } }; @@ -116,6 +118,8 @@ class CPlugins inline const std::string & getDescription (const int number) const { return plugin_list[number].description ; } inline int getType (const int number) const { return plugin_list[number].type ; } inline bool isHidden (const int number) const { return plugin_list[number].hide ; } + inline int getIndex (const int number) const { return plugin_list[number].index ; } + inline neutrino_msg_t getKey (const int number) const { return (neutrino_msg_t)plugin_list[number].key; } void startPlugin(int number,int param); void start_plugin_by_name(const std::string & filename,int param);// start plugins by "name=" in .cfg diff --git a/src/gui/user_menue.cpp b/src/gui/user_menue.cpp index 47fc80612..dfd600d8c 100644 --- a/src/gui/user_menue.cpp +++ b/src/gui/user_menue.cpp @@ -300,10 +300,12 @@ bool CUserMenu::showUserMenu(int button) sprintf(id, "%d", count); menu_items++; menu_prev = SNeutrinoSettings::ITEM_PLUGIN; - //keyhelper.get(&key,&icon,CRCInput::RC_blue); - keyhelper.get(&key,&icon); + neutrino_msg_t d_key = g_PluginList->getKey(count); + //printf("[neutrino usermenu] plugin %d, set key %d...\n", count, g_PluginList->getKey(count)); + StreamFeaturesChanger = new CStreamFeaturesChangeExec(); + keyhelper.get(&key,&icon, d_key); menu_item = new CMenuForwarderNonLocalized(g_PluginList->getName(count), true, NULL, StreamFeaturesChanger, id, key, icon); - //menu->addItem(menu_item, (cnt == 0)); + menu->addItem(menu_item, 0); cnt++; }