diff --git a/src/browsedialog.cpp b/src/browsedialog.cpp index dd1a15d..cc0e712 100644 --- a/src/browsedialog.cpp +++ b/src/browsedialog.cpp @@ -7,6 +7,8 @@ #include "utilities.h" using std::string; +using std::unique_ptr; +using std::move; BrowseDialog::BrowseDialog( GMenu2X *gmenu2x, Touchscreen &ts_, @@ -18,24 +20,26 @@ BrowseDialog::BrowseDialog( , ts_pressed(false) , buttonBox(gmenu2x) { - IconButton *btn; + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png"))); + unique_ptr btnUp(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Up one folder"])); + btnUp->setAction(BIND(&BrowseDialog::directoryUp)); + buttonBox.add(move(btnUp)); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png")); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Up one folder"]); - btn->setAction(BIND(&BrowseDialog::directoryUp)); - buttonBox.add(btn); + unique_ptr btnSelect(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"])); + btnSelect->setAction(BIND(&BrowseDialog::directoryEnter)); + buttonBox.add(move(btnSelect)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"]); - btn->setAction(BIND(&BrowseDialog::directoryEnter)); - buttonBox.add(btn); + unique_ptr btnConfirm(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/start.png", gmenu2x->tr["Confirm"])); + btnConfirm->setAction(BIND(&BrowseDialog::confirm)); + buttonBox.add(move(btnConfirm)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/start.png", gmenu2x->tr["Confirm"]); - btn->setAction(BIND(&BrowseDialog::confirm)); - buttonBox.add(btn); - - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/select.png", gmenu2x->tr["Exit"]); - btn->setAction(BIND(&BrowseDialog::quit)); - buttonBox.add(btn); + unique_ptr btnExit(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/select.png", gmenu2x->tr["Exit"])); + btnExit->setAction(BIND(&BrowseDialog::quit)); + buttonBox.add(move(btnExit)); iconGoUp = gmenu2x->sc.skinRes("imgs/go-up.png"); iconFolder = gmenu2x->sc.skinRes("imgs/folder.png"); diff --git a/src/buttonbox.cpp b/src/buttonbox.cpp index e102aba..06e5b7d 100644 --- a/src/buttonbox.cpp +++ b/src/buttonbox.cpp @@ -3,18 +3,16 @@ #include "gmenu2x.h" #include "iconbutton.h" +using std::unique_ptr; +using std::move; + ButtonBox::ButtonBox(GMenu2X *gmenu2x) : gmenu2x(gmenu2x) { } -ButtonBox::~ButtonBox() +void ButtonBox::add(unique_ptr button) { - clear(); -} - -void ButtonBox::add(IconButton *button) -{ - buttons.push_back(button); + buttons.push_back(move(button)); } void ButtonBox::clear() @@ -25,7 +23,7 @@ void ButtonBox::clear() void ButtonBox::paint(Surface& s, unsigned int x) { const int y = gmenu2x->resY - 1; - for (auto button : buttons) { + for (auto& button : buttons) { auto rect = button->getRect(); button->setPosition(x, y - rect.h); button->paint(s); @@ -35,7 +33,7 @@ void ButtonBox::paint(Surface& s, unsigned int x) void ButtonBox::handleTS() { - for (auto button : buttons) { + for (auto& button : buttons) { button->handleTS(); } } diff --git a/src/buttonbox.h b/src/buttonbox.h index 47929e8..9ffa10f 100644 --- a/src/buttonbox.h +++ b/src/buttonbox.h @@ -1,26 +1,27 @@ #ifndef __BUTTONBOX_H__ #define __BUTTONBOX_H__ +#include "iconbutton.h" + +#include #include class GMenu2X; -class IconButton; class Surface; class ButtonBox { public: ButtonBox(GMenu2X *gmenu2x); - ~ButtonBox(); - void add(IconButton *button); + void add(std::unique_ptr button); void clear(); void paint(Surface& s, unsigned int x); void handleTS(); private: - std::vector buttons; + std::vector > buttons; GMenu2X *gmenu2x; }; diff --git a/src/inputdialog.cpp b/src/inputdialog.cpp index c48feb5..286b2a4 100644 --- a/src/inputdialog.cpp +++ b/src/inputdialog.cpp @@ -98,25 +98,25 @@ InputDialog::InputDialog(GMenu2X *gmenu2x, InputManager &inputMgr_, setKeyboard(0); buttonbox = new ButtonBox(gmenu2x); - IconButton *btnBackspace = new IconButton(gmenu2x, ts, - "skin:imgs/buttons/l.png", gmenu2x->tr["Backspace"]); + unique_ptr btnBackspace(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/l.png", gmenu2x->tr["Backspace"])); btnBackspace->setAction(BIND(&InputDialog::backspace)); - buttonbox->add(btnBackspace); + buttonbox->add(move(btnBackspace)); - IconButton *btnSpace = new IconButton(gmenu2x, ts, - "skin:imgs/buttons/r.png", gmenu2x->tr["Space"]); + unique_ptr btnSpace( + new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png", gmenu2x->tr["Space"])); btnSpace->setAction(BIND(&InputDialog::space)); - buttonbox->add(btnSpace); + buttonbox->add(move(btnSpace)); - IconButton *btnConfirm = new IconButton(gmenu2x, ts, - "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"]); + unique_ptr btnConfirm(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"])); btnConfirm->setAction(BIND(&InputDialog::confirm)); - buttonbox->add(btnConfirm); + buttonbox->add(move(btnConfirm)); - IconButton *btnChangeKeys = new IconButton(gmenu2x, ts, - "skin:imgs/buttons/cancel.png", gmenu2x->tr["Change keys"]); + unique_ptr btnChangeKeys(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Change keys"])); btnChangeKeys->setAction(BIND(&InputDialog::changeKeys)); - buttonbox->add(btnChangeKeys); + buttonbox->add(move(btnChangeKeys)); } void InputDialog::setKeyboard(int kb) { diff --git a/src/menusettingbool.cpp b/src/menusettingbool.cpp index fad8690..a0cf795 100644 --- a/src/menusettingbool.cpp +++ b/src/menusettingbool.cpp @@ -29,6 +29,8 @@ #include using std::string; +using std::unique_ptr; +using std::move; MenuSettingBool::MenuSettingBool( GMenu2X *gmenu2x, Touchscreen &ts, @@ -58,11 +60,10 @@ MenuSettingBool::MenuSettingBool( void MenuSettingBool::initButton() { - IconButton *btn = new IconButton(gmenu2x, ts, - "skin:imgs/buttons/accept.png", - gmenu2x->tr["Switch"]); + unique_ptr btn(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Switch"])); btn->setAction(BIND(&MenuSettingBool::toggle)); - buttonBox.add(btn); + buttonBox.add(move(btn)); } void MenuSettingBool::draw(int valueX, int y, int h) diff --git a/src/menusettingdir.cpp b/src/menusettingdir.cpp index 4aa5168..2a09c7f 100644 --- a/src/menusettingdir.cpp +++ b/src/menusettingdir.cpp @@ -26,6 +26,8 @@ #include "iconbutton.h" using std::string; +using std::unique_ptr; +using std::move; MenuSettingDir::MenuSettingDir( GMenu2X *gmenu2x, Touchscreen &ts_, @@ -33,17 +35,15 @@ MenuSettingDir::MenuSettingDir( : MenuSettingStringBase(gmenu2x, name, description, value) , ts(ts_) { - IconButton *btn; + unique_ptr btnCancel(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Clear"])); + btnCancel->setAction(BIND(&MenuSettingDir::clear)); + buttonBox.add(move(btnCancel)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", - gmenu2x->tr["Clear"]); - btn->setAction(BIND(&MenuSettingDir::clear)); - buttonBox.add(btn); - - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", - gmenu2x->tr["Select"]); - btn->setAction(BIND(&MenuSettingDir::edit)); - buttonBox.add(btn); + unique_ptr btnAccept(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"])); + btnAccept->setAction(BIND(&MenuSettingDir::edit)); + buttonBox.add(move(btnAccept)); } void MenuSettingDir::edit() diff --git a/src/menusettingfile.cpp b/src/menusettingfile.cpp index 1582e8b..6874330 100644 --- a/src/menusettingfile.cpp +++ b/src/menusettingfile.cpp @@ -26,6 +26,8 @@ #include "iconbutton.h" using std::string; +using std::unique_ptr; +using std::move; MenuSettingFile::MenuSettingFile( GMenu2X *gmenu2x, Touchscreen &ts_, @@ -35,15 +37,15 @@ MenuSettingFile::MenuSettingFile( , ts(ts_) , filter(filter_) { - IconButton *btn; + unique_ptr btnClear(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Clear"])); + btnClear->setAction(BIND(&MenuSettingFile::clear)); + buttonBox.add(move(btnClear)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Clear"]); - btn->setAction(BIND(&MenuSettingFile::clear)); - buttonBox.add(btn); - - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"]); - btn->setAction(BIND(&MenuSettingFile::edit)); - buttonBox.add(btn); + unique_ptr btnSelect(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"])); + btnSelect->setAction(BIND(&MenuSettingFile::edit)); + buttonBox.add(move(btnSelect)); } void MenuSettingFile::edit() diff --git a/src/menusettingint.cpp b/src/menusettingint.cpp index 41f8a26..72a52ed 100644 --- a/src/menusettingint.cpp +++ b/src/menusettingint.cpp @@ -30,6 +30,8 @@ using std::string; using std::stringstream; +using std::unique_ptr; +using std::move; MenuSettingInt::MenuSettingInt( GMenu2X *gmenu2x, Touchscreen &ts, @@ -37,8 +39,6 @@ MenuSettingInt::MenuSettingInt( int *value, int min, int max, int increment) : MenuSetting(gmenu2x,name,description) { - IconButton *btn; - _value = value; originalValue = *value; this->min = min; @@ -50,21 +50,25 @@ MenuSettingInt::MenuSettingInt( function_t actionInc = BIND(&MenuSettingInt::inc); function_t actionDec = BIND(&MenuSettingInt::dec); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/l.png"); - btn->setAction(actionDec); - buttonBox.add(btn); + unique_ptr btnL1(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/l.png")); + btnL1->setAction(actionDec); + buttonBox.add(move(btnL1)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png", gmenu2x->tr["Decrease"]); - btn->setAction(actionDec); - buttonBox.add(btn); + unique_ptr btnL2(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/left.png", gmenu2x->tr["Decrease"])); + btnL2->setAction(actionDec); + buttonBox.add(move(btnL2)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png"); - btn->setAction(actionInc); - buttonBox.add(btn); + unique_ptr btnR1(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/r.png")); + btnR1->setAction(actionInc); + buttonBox.add(move(btnR1)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Increase"]); - btn->setAction(actionInc); - buttonBox.add(btn); + unique_ptr btnR2(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Increase"])); + btnR2->setAction(actionInc); + buttonBox.add(move(btnR2)); } void MenuSettingInt::draw(int valueX, int y, int h) diff --git a/src/menusettingmultistring.cpp b/src/menusettingmultistring.cpp index e468545..a115edb 100644 --- a/src/menusettingmultistring.cpp +++ b/src/menusettingmultistring.cpp @@ -28,6 +28,8 @@ using std::find; using std::string; using std::vector; +using std::unique_ptr; +using std::move; MenuSettingMultiString::MenuSettingMultiString( GMenu2X *gmenu2x, Touchscreen &ts, @@ -38,15 +40,15 @@ MenuSettingMultiString::MenuSettingMultiString( { setSel(find(choices->begin(), choices->end(), *value) - choices->begin()); - IconButton *btn; + unique_ptr btnDec(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/left.png")); + btnDec->setAction(BIND(&MenuSettingMultiString::decSel)); + buttonBox.add(move(btnDec)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png"); - btn->setAction(BIND(&MenuSettingMultiString::decSel)); - buttonBox.add(btn); - - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Change value"]); - btn->setAction(BIND(&MenuSettingMultiString::incSel)); - buttonBox.add(btn); + unique_ptr btnInc(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Change value"])); + btnInc->setAction(BIND(&MenuSettingMultiString::incSel)); + buttonBox.add(move(btnInc)); } bool MenuSettingMultiString::handleButtonPress(InputManager::Button button) diff --git a/src/menusettingrgba.cpp b/src/menusettingrgba.cpp index df8fb55..f3038c2 100644 --- a/src/menusettingrgba.cpp +++ b/src/menusettingrgba.cpp @@ -29,6 +29,8 @@ using std::string; using std::stringstream; +using std::unique_ptr; +using std::move; constexpr unsigned int COMPONENT_WIDTH = 28; @@ -228,14 +230,14 @@ void MenuSettingRGBA::updateButtonBox() { buttonBox.clear(); if (edit) { - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/l.png")); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png", gmenu2x->tr["Decrease"])); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png")); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Increase"])); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"])); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/l.png"))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png", gmenu2x->tr["Decrease"]))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png"))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Increase"]))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"]))); } else { - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png")); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Change color component"])); - buttonBox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Edit"])); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png"))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/right.png", gmenu2x->tr["Change color component"]))); + buttonBox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Edit"]))); } } diff --git a/src/menusettingstring.cpp b/src/menusettingstring.cpp index 522601b..ee4ea4b 100644 --- a/src/menusettingstring.cpp +++ b/src/menusettingstring.cpp @@ -26,6 +26,8 @@ #include "inputdialog.h" using std::string; +using std::unique_ptr; +using std::move; MenuSettingString::MenuSettingString( GMenu2X *gmenu2x, Touchscreen &ts_, @@ -36,15 +38,15 @@ MenuSettingString::MenuSettingString( , diagTitle(diagTitle_) , diagIcon(diagIcon_) { - IconButton *btn; + unique_ptr btnClear(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Clear"])); + btnClear->setAction(BIND(&MenuSettingString::clear)); + buttonBox.add(move(btnClear)); - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Clear"]); - btn->setAction(BIND(&MenuSettingString::clear)); - buttonBox.add(btn); - - btn = new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Edit"]); - btn->setAction(BIND(&MenuSettingString::edit)); - buttonBox.add(btn); + unique_ptr btnEdit(new IconButton( + gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Edit"])); + btnEdit->setAction(BIND(&MenuSettingString::edit)); + buttonBox.add(move(btnEdit)); } void MenuSettingString::edit() diff --git a/src/wallpaperdialog.cpp b/src/wallpaperdialog.cpp index 6ffa4b9..0009cfe 100644 --- a/src/wallpaperdialog.cpp +++ b/src/wallpaperdialog.cpp @@ -63,8 +63,8 @@ bool WallpaperDialog::exec() uint i, selected = 0, firstElement = 0, iY; ButtonBox buttonbox(gmenu2x); - buttonbox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"])); - buttonbox.add(new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Exit"])); + buttonbox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"]))); + buttonbox.add(unique_ptr(new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Exit"]))); unsigned int top, height; tie(top, height) = gmenu2x->getContentArea();