glcdsettup: rework and fix driver selection menu

Origin commit data
------------------
Commit: bba91389d2
Author: vanhofen <vanhofen@gmx.de>
Date: 2020-06-26 (Fri, 26 Jun 2020)

Origin message was:
------------------
- glcdsettup: rework and fix driver selection menu
This commit is contained in:
vanhofen
2020-06-26 02:01:23 +02:00
parent 44a16e6f14
commit 797672c39c
2 changed files with 22 additions and 14 deletions

View File

@@ -148,6 +148,8 @@ GLCD_Menu::GLCD_Menu()
{ {
width = 40; width = 40;
selected = -1; selected = -1;
select_driver = NULL;
} }
int GLCD_Menu::exec(CMenuTarget* parent, const std::string & actionKey) int GLCD_Menu::exec(CMenuTarget* parent, const std::string & actionKey)
@@ -164,15 +166,7 @@ int GLCD_Menu::exec(CMenuTarget* parent, const std::string & actionKey)
cglcd->Rescan(); cglcd->Rescan();
return res; return res;
} }
if (actionKey == "select_driver") else if (actionKey == "select_font")
{
if (parent)
parent->hide();
res = GLCD_Menu_Select_Driver();
cglcd->Exit();
return menu_return::RETURN_EXIT; // FIXME
}
if (actionKey == "select_font")
{ {
CFileBrowser fileBrowser; CFileBrowser fileBrowser;
CFileFilter fileFilter; CFileFilter fileFilter;
@@ -194,6 +188,10 @@ int GLCD_Menu::exec(CMenuTarget* parent, const std::string & actionKey)
cglcd->UpdateBrightness(); cglcd->UpdateBrightness();
return res; return res;
} }
else if (actionKey == "select_driver")
{
return GLCD_Menu_Select_Driver();
}
else if (actionKey == "theme_settings") else if (actionKey == "theme_settings")
{ {
return GLCD_Theme_Settings(); return GLCD_Theme_Settings();
@@ -312,8 +310,11 @@ int GLCD_Menu::GLCD_Menu_Settings()
m.addItem(new CMenuOptionChooser(LOCALE_GLCD_ENABLE, &g_settings.glcd_enable, m.addItem(new CMenuOptionChooser(LOCALE_GLCD_ENABLE, &g_settings.glcd_enable,
OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::RC_red)); OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this, CRCInput::RC_red));
m.addItem(new CMenuForwarder(LOCALE_GLCD_DISPLAY, (cGLCD::getInstance()->GetConfigSize() > 1),
cGLCD::getInstance()->GetConfigName(g_settings.glcd_selected_config).c_str(), this, "select_driver")); select_driver = new CMenuForwarder(LOCALE_GLCD_DISPLAY, (cGLCD::getInstance()->GetConfigSize() > 1),
cGLCD::getInstance()->GetConfigName(g_settings.glcd_selected_config).c_str(), this, "select_driver");
m.addItem(select_driver);
m.addItem(GenericMenuSeparatorLine); m.addItem(GenericMenuSeparatorLine);
int shortcut = 1; int shortcut = 1;
@@ -574,15 +575,21 @@ int GLCD_Menu::GLCD_Menu_Select_Driver()
CMenuForwarder* mf; CMenuForwarder* mf;
for (int i = 0; i < cGLCD::getInstance()->GetConfigSize(); i++) for (int i = 0; i < cGLCD::getInstance()->GetConfigSize(); i++)
{ {
mf = new CMenuForwarder(cGLCD::getInstance()->GetConfigName(i), true, NULL, selector,to_string(i).c_str()); mf = new CMenuForwarder(cGLCD::getInstance()->GetConfigName(i), true, NULL, selector, to_string(i).c_str());
mf->setInfoIconRight(i == g_settings.glcd_selected_config ? NEUTRINO_ICON_MARKER_DIALOG_OK : NULL);
m->addItem(mf); m->addItem(mf);
} }
m->enableSaveScreen(); m->enableSaveScreen();
res = m->exec(NULL, ""); res = m->exec(NULL, "");
delete selector; delete selector;
m->hide();
if (!m->gotAction() || g_settings.glcd_selected_config == select)
return res;
} }
g_settings.glcd_selected_config = select; g_settings.glcd_selected_config = select;
return res; select_driver->setOption(cGLCD::getInstance()->GetConfigName(g_settings.glcd_selected_config).c_str());
cGLCD::getInstance()->Respawn();
return menu_return::RETURN_REPAINT;
} }

View File

@@ -39,6 +39,7 @@ class GLCD_Menu : public CMenuTarget, public CChangeObserver
int selected; int selected;
SNeutrinoGlcdTheme oldTheme; SNeutrinoGlcdTheme oldTheme;
int GLCD_Menu_Select_Driver(); int GLCD_Menu_Select_Driver();
CMenuForwarder *select_driver;
public: public:
GLCD_Menu(); GLCD_Menu();
void hide(); void hide();