From a38c283e17cc24e636d11dbf0961b5c3ab20bdf5 Mon Sep 17 00:00:00 2001 From: Maarten ter Huurne Date: Sun, 23 Oct 2011 09:38:59 +0200 Subject: [PATCH] SettingsDialog: simplify code using InputManager::waitForPressedButton(). Replaced MenuSetting::manageInput() by handleButtonPress(), because we will only pass pressed buttons to it, not the entire input event. --- src/menusetting.h | 2 +- src/menusettingbool.cpp | 8 ++++---- src/menusettingbool.h | 2 +- src/menusettingint.cpp | 32 ++++++++++++++++---------------- src/menusettingint.h | 2 +- src/menusettingmultistring.cpp | 20 ++++++++++---------- src/menusettingmultistring.h | 4 ++-- src/menusettingrgba.cpp | 7 ++++--- src/menusettingrgba.h | 2 +- src/menusettingstringbase.cpp | 4 ++-- src/menusettingstringbase.h | 2 +- src/settingsdialog.cpp | 10 +++------- 12 files changed, 46 insertions(+), 49 deletions(-) diff --git a/src/menusetting.h b/src/menusetting.h index af46c1c..dbc2ba9 100644 --- a/src/menusetting.h +++ b/src/menusetting.h @@ -47,7 +47,7 @@ public: virtual void draw(int y); virtual void handleTS(); - virtual bool manageInput(InputManager::ButtonEvent *event) = 0; + virtual bool handleButtonPress(InputManager::Button button) = 0; virtual void adjustInput(); virtual void drawSelected(int y); virtual bool edited() = 0; diff --git a/src/menusettingbool.cpp b/src/menusettingbool.cpp index 4159d9c..aeaa3bc 100644 --- a/src/menusettingbool.cpp +++ b/src/menusettingbool.cpp @@ -64,14 +64,14 @@ void MenuSettingBool::draw(int y) gmenu2x->s->write( gmenu2x->font, strvalue, 155, y, ASFont::HAlignLeft, ASFont::VAlignTop ); } -bool MenuSettingBool::manageInput(InputManager::ButtonEvent *event) +bool MenuSettingBool::handleButtonPress(InputManager::Button button) { - if (event->button == InputManager::ACCEPT - && event->state == InputManager::PRESSED) { + if (button == InputManager::ACCEPT) { toggle(); return true; + } else { + return false; } - return false; } void MenuSettingBool::toggle() diff --git a/src/menusettingbool.h b/src/menusettingbool.h index b96ca96..9a53090 100644 --- a/src/menusettingbool.h +++ b/src/menusettingbool.h @@ -45,7 +45,7 @@ public: virtual ~MenuSettingBool() {} virtual void draw(int y); - virtual bool manageInput(InputManager::ButtonEvent *event); + virtual bool handleButtonPress(InputManager::Button button); virtual bool edited(); void setValue(int value); diff --git a/src/menusettingint.cpp b/src/menusettingint.cpp index fe5552f..05fc785 100644 --- a/src/menusettingint.cpp +++ b/src/menusettingint.cpp @@ -66,24 +66,24 @@ void MenuSettingInt::draw(int y) gmenu2x->s->write( gmenu2x->font, strvalue, 155, y, ASFont::HAlignLeft, ASFont::VAlignTop ); } -bool MenuSettingInt::manageInput(InputManager::ButtonEvent *event) +bool MenuSettingInt::handleButtonPress(InputManager::Button button) { - switch (event->button) { - case InputManager::LEFT: - dec(); - break; - case InputManager::RIGHT: - inc(); - break; - case InputManager::ALTLEFT: - setValue(value() - 10 * increment); - break; - case InputManager::ALTRIGHT: - setValue(value() + 10 * increment); - break; - default: + switch (button) { + case InputManager::LEFT: + dec(); + break; + case InputManager::RIGHT: + inc(); + break; + case InputManager::ALTLEFT: + setValue(value() - 10 * increment); + break; + case InputManager::ALTRIGHT: + setValue(value() + 10 * increment); + break; + default: return false; - } + } return true; } diff --git a/src/menusettingint.h b/src/menusettingint.h index 535e9c5..15949e6 100644 --- a/src/menusettingint.h +++ b/src/menusettingint.h @@ -41,7 +41,7 @@ public: int increment = 1); virtual ~MenuSettingInt() {} - virtual bool manageInput(InputManager::ButtonEvent *event); + virtual bool handleButtonPress(InputManager::Button button); virtual void adjustInput(); virtual void draw(int); virtual bool edited(); diff --git a/src/menusettingmultistring.cpp b/src/menusettingmultistring.cpp index 0c256dc..2154340 100644 --- a/src/menusettingmultistring.cpp +++ b/src/menusettingmultistring.cpp @@ -49,18 +49,18 @@ MenuSettingMultiString::MenuSettingMultiString( buttonBox.add(btn); } -bool MenuSettingMultiString::manageInput(InputManager::ButtonEvent *event) +bool MenuSettingMultiString::handleButtonPress(InputManager::Button button) { - switch(event->button) { - case InputManager::LEFT: - decSel(); - break; - case InputManager::RIGHT: - incSel(); - break; - default: + switch (button) { + case InputManager::LEFT: + decSel(); + break; + case InputManager::RIGHT: + incSel(); + break; + default: return false; - } + } return true; } diff --git a/src/menusettingmultistring.h b/src/menusettingmultistring.h index ab1839c..83f5f81 100644 --- a/src/menusettingmultistring.h +++ b/src/menusettingmultistring.h @@ -28,7 +28,7 @@ class MenuSettingMultiString : public MenuSettingStringBase { private: virtual void edit() { - /* never called because manageInput() is overridden */ + /* never called because handleButtonPress() is overridden */ } const std::vector *choices; @@ -45,7 +45,7 @@ public: const std::vector *choices); virtual ~MenuSettingMultiString() {}; - virtual bool manageInput(InputManager::ButtonEvent *event); + virtual bool handleButtonPress(InputManager::Button button); }; #endif diff --git a/src/menusettingrgba.cpp b/src/menusettingrgba.cpp index 609553a..6fe420c 100644 --- a/src/menusettingrgba.cpp +++ b/src/menusettingrgba.cpp @@ -68,9 +68,10 @@ void MenuSettingRGBA::handleTS() { MenuSetting::handleTS(); } -bool MenuSettingRGBA::manageInput(InputManager::ButtonEvent *event) { +bool MenuSettingRGBA::handleButtonPress(InputManager::Button button) + { if (edit) { - switch(event->button) { + switch (button) { case InputManager::LEFT: dec(); break; @@ -93,7 +94,7 @@ bool MenuSettingRGBA::manageInput(InputManager::ButtonEvent *event) { return false; } } else { - switch(event->button) { + switch (button) { case InputManager::LEFT: leftComponent(); break; diff --git a/src/menusettingrgba.h b/src/menusettingrgba.h index cdd1d8c..806610d 100644 --- a/src/menusettingrgba.h +++ b/src/menusettingrgba.h @@ -51,7 +51,7 @@ public: virtual void draw(int y); virtual void handleTS(); - virtual bool manageInput(InputManager::ButtonEvent *event); + virtual bool handleButtonPress(InputManager::Button button); virtual void adjustInput(); virtual void drawSelected(int y); virtual bool edited(); diff --git a/src/menusettingstringbase.cpp b/src/menusettingstringbase.cpp index a4a6fd3..d488114 100644 --- a/src/menusettingstringbase.cpp +++ b/src/menusettingstringbase.cpp @@ -42,9 +42,9 @@ void MenuSettingStringBase::draw(int y) ASFont::HAlignLeft, ASFont::VAlignTop); } -bool MenuSettingStringBase::manageInput(InputManager::ButtonEvent *event) +bool MenuSettingStringBase::handleButtonPress(InputManager::Button button) { - switch (event->button) { + switch (button) { case InputManager::CANCEL: clear(); break; diff --git a/src/menusettingstringbase.h b/src/menusettingstringbase.h index 102fbee..0becbf0 100644 --- a/src/menusettingstringbase.h +++ b/src/menusettingstringbase.h @@ -38,7 +38,7 @@ public: virtual ~MenuSettingStringBase(); virtual void draw(int y); - virtual bool manageInput(InputManager::ButtonEvent *event); + virtual bool handleButtonPress(InputManager::Button button); virtual bool edited(); void setValue(const std::string &value) { *_value = value; } diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 2cad831..0a997f4 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -105,13 +105,9 @@ bool SettingsDialog::exec() { gmenu2x->s->flip(); voices[sel]->handleTS(); - InputManager::ButtonEvent event; - do { - inputMgr.waitForEvent(&event); - } while (event.state != InputManager::PRESSED); - - if (voices[sel]->manageInput(&event) == false) { - switch (event.button) { + InputManager::Button button = inputMgr.waitForPressedButton(); + if (!voices[sel]->handleButtonPress(button)) { + switch (button) { case InputManager::SETTINGS: close = true; break;