diff --git a/src/menusetting.h b/src/menusetting.h index 30ae88b..74fd989 100644 --- a/src/menusetting.h +++ b/src/menusetting.h @@ -47,7 +47,7 @@ public: virtual void draw(int y); virtual void handleTS(); - virtual void manageInput(bevent_t *event) = 0; + virtual bool manageInput(bevent_t *event) = 0; virtual void adjustInput(); virtual void drawSelected(int y); virtual bool edited() = 0; diff --git a/src/menusettingbool.cpp b/src/menusettingbool.cpp index 6fccab9..ba5f9a9 100644 --- a/src/menusettingbool.cpp +++ b/src/menusettingbool.cpp @@ -64,10 +64,13 @@ void MenuSettingBool::draw(int y) gmenu2x->s->write( gmenu2x->font, strvalue, 155, y, ASFont::HAlignLeft, ASFont::VAlignTop ); } -void MenuSettingBool::manageInput(bevent_t *event) +bool MenuSettingBool::manageInput(bevent_t *event) { - if (event->button == ACCEPT && event->state == PRESSED) - toggle(); + if (event->button == ACCEPT && event->state == PRESSED) { + toggle(); + return true; + } + return false; } void MenuSettingBool::toggle() diff --git a/src/menusettingbool.h b/src/menusettingbool.h index 967242e..cccea3b 100644 --- a/src/menusettingbool.h +++ b/src/menusettingbool.h @@ -45,7 +45,7 @@ public: virtual ~MenuSettingBool() {} virtual void draw(int y); - virtual void manageInput(bevent_t *event); + virtual bool manageInput(bevent_t *event); virtual bool edited(); void setValue(int value); diff --git a/src/menusettingint.cpp b/src/menusettingint.cpp index b439294..e0d3ab3 100644 --- a/src/menusettingint.cpp +++ b/src/menusettingint.cpp @@ -65,7 +65,7 @@ void MenuSettingInt::draw(int y) gmenu2x->s->write( gmenu2x->font, strvalue, 155, y, ASFont::HAlignLeft, ASFont::VAlignTop ); } -void MenuSettingInt::manageInput(bevent_t *event) +bool MenuSettingInt::manageInput(bevent_t *event) { switch (event->button) { case LEFT: @@ -81,8 +81,9 @@ void MenuSettingInt::manageInput(bevent_t *event) setValue(value() + 10); break; default: - break; + return false; } + return true; } void MenuSettingInt::inc() diff --git a/src/menusettingint.h b/src/menusettingint.h index f7fe48d..b9b468a 100644 --- a/src/menusettingint.h +++ b/src/menusettingint.h @@ -39,7 +39,7 @@ public: const std::string &description, int *value, int min, int max); virtual ~MenuSettingInt() {} - virtual void manageInput(bevent_t *event); + virtual bool manageInput(bevent_t *event); virtual void adjustInput(); virtual void draw(int); virtual bool edited(); diff --git a/src/menusettingmultistring.cpp b/src/menusettingmultistring.cpp index 394d0d7..b0bf3c0 100644 --- a/src/menusettingmultistring.cpp +++ b/src/menusettingmultistring.cpp @@ -49,7 +49,7 @@ MenuSettingMultiString::MenuSettingMultiString( buttonBox.add(btn); } -void MenuSettingMultiString::manageInput(bevent_t *event) +bool MenuSettingMultiString::manageInput(bevent_t *event) { switch(event->button) { case LEFT: @@ -59,8 +59,9 @@ void MenuSettingMultiString::manageInput(bevent_t *event) incSel(); break; default: - break; + return false; } + return true; } void MenuSettingMultiString::incSel() diff --git a/src/menusettingmultistring.h b/src/menusettingmultistring.h index 6b03c47..d7b37f6 100644 --- a/src/menusettingmultistring.h +++ b/src/menusettingmultistring.h @@ -45,7 +45,7 @@ public: const std::vector *choices); virtual ~MenuSettingMultiString() {}; - virtual void manageInput(bevent_t *event); + virtual bool manageInput(bevent_t *event); }; #endif diff --git a/src/menusettingrgba.cpp b/src/menusettingrgba.cpp index 3e8f36d..c38e862 100644 --- a/src/menusettingrgba.cpp +++ b/src/menusettingrgba.cpp @@ -82,29 +82,30 @@ void MenuSettingRGBA::handleTS() { MenuSetting::handleTS(); } -void MenuSettingRGBA::manageInput(bevent_t *event) { - switch(event->button) { - case MANUAL: - inc(); - break; - case CLEAR: - dec(); - break; +bool MenuSettingRGBA::manageInput(bevent_t *event) { + switch(event->button) { + case MANUAL: + inc(); + break; + case CLEAR: + dec(); + break; case ALTLEFT: update_value(-10); break; case ALTRIGHT: update_value(10); break; - case LEFT: - leftComponent(); - break; - case RIGHT: - rightComponent(); - break; - default: - break; - } + case LEFT: + leftComponent(); + break; + case RIGHT: + rightComponent(); + break; + default: + return false; + } + return true; } void MenuSettingRGBA::update_value(int value) diff --git a/src/menusettingrgba.h b/src/menusettingrgba.h index 11f8814..05db32c 100644 --- a/src/menusettingrgba.h +++ b/src/menusettingrgba.h @@ -48,7 +48,7 @@ public: virtual void draw(int y); virtual void handleTS(); - virtual void manageInput(bevent_t *event); + virtual bool manageInput(bevent_t *event); virtual void adjustInput(); virtual void drawSelected(int y); virtual bool edited(); diff --git a/src/menusettingstringbase.cpp b/src/menusettingstringbase.cpp index d378d84..d53a437 100644 --- a/src/menusettingstringbase.cpp +++ b/src/menusettingstringbase.cpp @@ -42,7 +42,7 @@ void MenuSettingStringBase::draw(int y) ASFont::HAlignLeft, ASFont::VAlignTop); } -void MenuSettingStringBase::manageInput(bevent_t *event) +bool MenuSettingStringBase::manageInput(bevent_t *event) { switch (event->button) { case CLEAR: @@ -52,8 +52,10 @@ void MenuSettingStringBase::manageInput(bevent_t *event) edit(); break; default: + return false; break; } + return true; } void MenuSettingStringBase::clear() diff --git a/src/menusettingstringbase.h b/src/menusettingstringbase.h index c92c785..068b17f 100644 --- a/src/menusettingstringbase.h +++ b/src/menusettingstringbase.h @@ -38,7 +38,7 @@ public: virtual ~MenuSettingStringBase(); virtual void draw(int y); - virtual void manageInput(bevent_t *event); + virtual bool manageInput(bevent_t *event); virtual bool edited(); void setValue(const std::string &value) { *_value = value; } diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 0909fe3..c886304 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -110,53 +110,28 @@ bool SettingsDialog::exec() { inputMgr.waitForEvent(&event); } while (event.state != PRESSED); - switch (event.button) { - case SETTINGS: - close = true; - break; - case UP: - if (sel==0) - sel = voices.size()-1; - else - sel -= 1; - gmenu2x->setInputSpeed(); - voices[sel]->adjustInput(); - break; - case DOWN: - sel += 1; - if (sel>=voices.size()) sel = 0; - gmenu2x->setInputSpeed(); - voices[sel]->adjustInput(); - break; - default: - voices[sel]->manageInput(&event); - break; - } - - /* - inputMgr.update(); - if ( inputMgr[ACTION_START] ) action = SD_ACTION_CLOSE; - if ( inputMgr[ACTION_UP ] ) action = SD_ACTION_UP; - if ( inputMgr[ACTION_DOWN ] ) action = SD_ACTION_DOWN; - - switch (action) { - case SD_ACTION_CLOSE: close = true; break; - case SD_ACTION_UP: { - if (sel==0) - sel = voices.size()-1; - else - sel -= 1; - gmenu2x->setInputSpeed(); - voices[sel]->adjustInput(); - } break; - case SD_ACTION_DOWN: { - sel += 1; - if (sel>=voices.size()) sel = 0; - gmenu2x->setInputSpeed(); - voices[sel]->adjustInput(); - } break; + if (voices[sel]->manageInput(&event) == false) { + switch (event.button) { + case SETTINGS: + close = true; + break; + case UP: + if (sel==0) + sel = voices.size()-1; + else + sel -= 1; + gmenu2x->setInputSpeed(); + voices[sel]->adjustInput(); + break; + case DOWN: + sel += 1; + if (sel>=voices.size()) sel = 0; + gmenu2x->setInputSpeed(); + voices[sel]->adjustInput(); + default: + break; + } } - */ } gmenu2x->setInputSpeed();