opkg_manager: add handling for wizard mode

Origin commit data
------------------
Branch: ni/coolstream
Commit: 1bca5d8717
Author: Thilo Graf <dbt@novatux.de>
Date: 2021-04-10 (Sat, 10 Apr 2021)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
2021-04-10 22:19:43 +02:00
committed by vanhofen
parent 2835f575fd
commit 466c8da888
2 changed files with 34 additions and 21 deletions

View File

@@ -124,16 +124,17 @@ static string pkg_types[OM_MAX] =
OPKG_CL " clean " OPKG_CL " clean "
}; };
COPKGManager::COPKGManager(): opkg_conf('\t') COPKGManager::COPKGManager(int wizard_mode): opkg_conf('\t')
{ {
init(); init(wizard_mode);
} }
void COPKGManager::init() void COPKGManager::init(int wizard_mode)
{ {
if (!hasOpkgSupport()) if (!hasOpkgSupport())
return; return;
is_wizard = wizard_mode;
OM_ERRORS(); OM_ERRORS();
width = 80; width = 80;
@@ -165,6 +166,8 @@ int COPKGManager::exec(CMenuTarget* parent, const string &actionKey)
{ {
int res = menu_return::RETURN_REPAINT; int res = menu_return::RETURN_REPAINT;
removeInfoBarTxt();
if (actionKey.empty()) { if (actionKey.empty()) {
if (parent) if (parent)
parent->hide(); parent->hide();
@@ -172,9 +175,6 @@ int COPKGManager::exec(CMenuTarget* parent, const string &actionKey)
saveConfig(); saveConfig();
CFileHelpers::removeDir(OPKG_TMP_DIR); CFileHelpers::removeDir(OPKG_TMP_DIR);
if (!num_updates)
removeInfoBarTxt();
return ret; return ret;
} }
int selected = menu->getSelected() - menu_offset; int selected = menu->getSelected() - menu_offset;
@@ -457,7 +457,9 @@ void COPKGManager::updateMenu()
if (expert_mode){ if (expert_mode){
menu->setFooter(COPKGManagerFooterButtonsExpert, COPKGManagerFooterButtonCountExpert); menu->setFooter(COPKGManagerFooterButtonsExpert, COPKGManagerFooterButtonCountExpert);
} }
else{ else if (is_wizard) {
menu->setSelected(2); //next-item
}else{
menu->setSelected(2); //back-item menu->setSelected(2); //back-item
menu->setFooter(COPKGManagerFooterButtons, COPKGManagerFooterButtonCount); menu->setFooter(COPKGManagerFooterButtons, COPKGManagerFooterButtonCount);
} }
@@ -617,25 +619,33 @@ int COPKGManager::showMenu()
menu = new CMenuWidget(g_Locale->getText(LOCALE_SERVICEMENU_UPDATE), NEUTRINO_ICON_UPDATE, width, MN_WIDGET_ID_SOFTWAREUPDATE); menu = new CMenuWidget(g_Locale->getText(LOCALE_SERVICEMENU_UPDATE), NEUTRINO_ICON_UPDATE, width, MN_WIDGET_ID_SOFTWAREUPDATE);
menu->addIntroItems(LOCALE_OPKG_TITLE, NONEXISTANT_LOCALE, CMenuWidget::BTN_TYPE_BACK, CMenuWidget::BRIEF_HINT_YES); menu->addIntroItems(LOCALE_OPKG_TITLE, NONEXISTANT_LOCALE, CMenuWidget::BTN_TYPE_BACK, CMenuWidget::BRIEF_HINT_YES);
menu->setWizardMode(is_wizard);
//upgrade all installed packages //upgrade all installed packages
upgrade_forwarder = new CMenuForwarder(LOCALE_OPKG_UPGRADE, true, NULL , this, pkg_types[OM_UPGRADE].c_str(), CRCInput::RC_red); std::string upd_info = to_string(num_updates) + " " + g_Locale->getText(LOCALE_OPKG_MESSAGEBOX_UPDATES_AVAILABLE);
upgrade_forwarder = new CMenuForwarder(LOCALE_OPKG_UPGRADE, true, upd_info.c_str() , this, pkg_types[OM_UPGRADE].c_str(), CRCInput::RC_red);
upgrade_forwarder->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_UPGRADE); upgrade_forwarder->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_UPGRADE);
menu->addItem(upgrade_forwarder); menu->addItem(upgrade_forwarder);
//select and install local package if (!is_wizard)
CMenuForwarder *fw; {
fw = new CMenuForwarder(LOCALE_OPKG_INSTALL_LOCAL_PACKAGE, true, NULL, this, "local_package", CRCInput::RC_green); CMenuForwarder *fw = NULL;
fw->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_INSTALL_LOCAL_PACKAGE);
menu->addItem(fw); //select and install local package
fw = new CMenuForwarder(LOCALE_OPKG_INSTALL_LOCAL_PACKAGE, true, NULL, this, "local_package", CRCInput::RC_green);
fw->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_INSTALL_LOCAL_PACKAGE);
menu->addItem(fw);
#if ENABLE_OPKG_GUI_FEED_SETUP #if ENABLE_OPKG_GUI_FEED_SETUP
//feed setup //feed setup
CMenuWidget feeds_menu(LOCALE_OPKG_TITLE, NEUTRINO_ICON_UPDATE, w_max (100, 10)); CMenuWidget feeds_menu(LOCALE_OPKG_TITLE, NEUTRINO_ICON_UPDATE, w_max (100, 10));
showMenuConfigFeed(&feeds_menu); showMenuConfigFeed(&feeds_menu);
fw = new CMenuForwarder(LOCALE_OPKG_FEED_ADDRESSES, true, NULL, &feeds_menu, NULL, CRCInput::RC_www); fw = new CMenuForwarder(LOCALE_OPKG_FEED_ADDRESSES, true, NULL, &feeds_menu, NULL, CRCInput::RC_www);
fw->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_FEED_ADDRESSES_EDIT); fw->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_OPKG_FEED_ADDRESSES_EDIT);
menu->addItem(fw); menu->addItem(fw);
#endif #endif
}
menu->addItem(GenericMenuSeparatorLine); menu->addItem(GenericMenuSeparatorLine);
menu_offset = menu->getItemsCount(); menu_offset = menu->getItemsCount();
@@ -645,6 +655,7 @@ int COPKGManager::showMenu()
menu->addKey(CRCInput::RC_blue, this, "rc_blue"); menu->addKey(CRCInput::RC_blue, this, "rc_blue");
menu->addKey(CRCInput::RC_yellow, this, "rc_yellow"); menu->addKey(CRCInput::RC_yellow, this, "rc_yellow");
// package list
pkg_vec.clear(); pkg_vec.clear();
for (map<string, struct pkg>::iterator it = pkg_map.begin(); it != pkg_map.end(); ++it) { for (map<string, struct pkg>::iterator it = pkg_map.begin(); it != pkg_map.end(); ++it) {
/* this should no longer trigger at all */ /* this should no longer trigger at all */

View File

@@ -44,12 +44,13 @@ class COPKGManager : public CMenuTarget
{ {
private: private:
int width; int width;
int is_wizard;
std::string tmp_str; std::string tmp_str;
CConfigFile opkg_conf; CConfigFile opkg_conf;
void saveConfig(); void saveConfig();
void loadConfig(); void loadConfig();
struct pkg; struct pkg;
void init(); void init(int wizard_mode);
bool silent; // Controls some screen messages, eg, avoids unintended or disturbing messages on update checks at background. bool silent; // Controls some screen messages, eg, avoids unintended or disturbing messages on update checks at background.
//config //config
std::string config_src[OPKG_MAX_FEEDS]; std::string config_src[OPKG_MAX_FEEDS];
@@ -171,9 +172,10 @@ class COPKGManager : public CMenuTarget
int num_updates; int num_updates;
public: public:
COPKGManager(); COPKGManager(int wizard_mode = SNeutrinoSettings::WIZARD_OFF);
~COPKGManager(); ~COPKGManager();
void setWizardMode(int mode) {is_wizard = mode;}
int exec(CMenuTarget* parent, const std::string & actionKey); int exec(CMenuTarget* parent, const std::string & actionKey);
static bool hasOpkgSupport(); static bool hasOpkgSupport();
bool checkUpdates(const std::string & package_name = std::string(), bool show_progress = false); bool checkUpdates(const std::string & package_name = std::string(), bool show_progress = false);