1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-06-30 21:17:18 +03:00

Removed GMenu2X pointer from ButtonBox

It was only used to fetch resY, so I replaced that by taking the
y-coordinate as an argument. That is also more consistent with the
x-coordinate which was already an argument.

The x-coordinate was changed to a signed int, since that is the norm
for paint coordinates. It can be useful for drawing widgets that are
partially off screen, for example during a (dis)appear animation.

In InputDialog, the ButtonBox field was changed from a pointer to
a plain data member. There was no need to dynamically allocate it.
This commit is contained in:
Maarten ter Huurne 2014-08-16 05:47:48 +02:00
parent e5a432cb6b
commit 428a316bc1
7 changed files with 13 additions and 24 deletions

View File

@ -18,7 +18,6 @@ BrowseDialog::BrowseDialog(
, title(title) , title(title)
, subtitle(subtitle) , subtitle(subtitle)
, ts_pressed(false) , ts_pressed(false)
, buttonBox(gmenu2x)
{ {
buttonBox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png"))); buttonBox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png")));
unique_ptr<IconButton> btnUp(new IconButton( unique_ptr<IconButton> btnUp(new IconButton(
@ -233,7 +232,7 @@ void BrowseDialog::paint()
drawTitleIcon(bg, "icons/explorer.png", true); drawTitleIcon(bg, "icons/explorer.png", true);
writeTitle(bg, title); writeTitle(bg, title);
writeSubTitle(bg, subtitle); writeSubTitle(bg, subtitle);
buttonBox.paint(bg, 5); buttonBox.paint(bg, 5, gmenu2x->resY - 1);
bg.convertToDisplayFormat(); bg.convertToDisplayFormat();
bg.blit(s, 0, 0); bg.blit(s, 0, 0);

View File

@ -6,10 +6,6 @@
using std::unique_ptr; using std::unique_ptr;
using std::move; using std::move;
ButtonBox::ButtonBox(GMenu2X *gmenu2x) : gmenu2x(gmenu2x)
{
}
void ButtonBox::add(unique_ptr<IconButton> button) void ButtonBox::add(unique_ptr<IconButton> button)
{ {
buttons.push_back(move(button)); buttons.push_back(move(button));
@ -20,9 +16,8 @@ void ButtonBox::clear()
buttons.clear(); buttons.clear();
} }
void ButtonBox::paint(Surface& s, unsigned int x) void ButtonBox::paint(Surface& s, int x, int y)
{ {
const int y = gmenu2x->resY - 1;
for (auto& button : buttons) { for (auto& button : buttons) {
auto rect = button->getRect(); auto rect = button->getRect();
button->setPosition(x, y - rect.h); button->setPosition(x, y - rect.h);

View File

@ -12,17 +12,14 @@ class Surface;
class ButtonBox class ButtonBox
{ {
public: public:
ButtonBox(GMenu2X *gmenu2x);
void add(std::unique_ptr<IconButton> button); void add(std::unique_ptr<IconButton> button);
void clear(); void clear();
void paint(Surface& s, unsigned int x); void paint(Surface& s, int x, int y);
void handleTS(); void handleTS();
private: private:
std::vector<std::unique_ptr<IconButton>> buttons; std::vector<std::unique_ptr<IconButton>> buttons;
GMenu2X *gmenu2x;
}; };
#endif #endif

View File

@ -97,26 +97,25 @@ InputDialog::InputDialog(GMenu2X *gmenu2x, InputManager &inputMgr_,
setKeyboard(0); setKeyboard(0);
buttonbox = new ButtonBox(gmenu2x);
unique_ptr<IconButton> btnBackspace(new IconButton( unique_ptr<IconButton> btnBackspace(new IconButton(
gmenu2x, ts, "skin:imgs/buttons/l.png", gmenu2x->tr["Backspace"])); gmenu2x, ts, "skin:imgs/buttons/l.png", gmenu2x->tr["Backspace"]));
btnBackspace->setAction(BIND(&InputDialog::backspace)); btnBackspace->setAction(BIND(&InputDialog::backspace));
buttonbox->add(move(btnBackspace)); buttonbox.add(move(btnBackspace));
unique_ptr<IconButton> btnSpace( unique_ptr<IconButton> btnSpace(
new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png", gmenu2x->tr["Space"])); new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png", gmenu2x->tr["Space"]));
btnSpace->setAction(BIND(&InputDialog::space)); btnSpace->setAction(BIND(&InputDialog::space));
buttonbox->add(move(btnSpace)); buttonbox.add(move(btnSpace));
unique_ptr<IconButton> btnConfirm(new IconButton( unique_ptr<IconButton> btnConfirm(new IconButton(
gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"])); gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"]));
btnConfirm->setAction(BIND(&InputDialog::confirm)); btnConfirm->setAction(BIND(&InputDialog::confirm));
buttonbox->add(move(btnConfirm)); buttonbox.add(move(btnConfirm));
unique_ptr<IconButton> btnChangeKeys(new IconButton( unique_ptr<IconButton> btnChangeKeys(new IconButton(
gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Change keys"])); gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Change keys"]));
btnChangeKeys->setAction(BIND(&InputDialog::changeKeys)); btnChangeKeys->setAction(BIND(&InputDialog::changeKeys));
buttonbox->add(move(btnChangeKeys)); buttonbox.add(move(btnChangeKeys));
} }
void InputDialog::setKeyboard(int kb) { void InputDialog::setKeyboard(int kb) {
@ -153,7 +152,7 @@ bool InputDialog::exec() {
drawTitleIcon(bg, icon, false); drawTitleIcon(bg, icon, false);
writeTitle(bg, title); writeTitle(bg, title);
writeSubTitle(bg, text); writeSubTitle(bg, text);
buttonbox->paint(bg, 5); buttonbox.paint(bg, 5, gmenu2x->resY - 1);
bg.convertToDisplayFormat(); bg.convertToDisplayFormat();
close = false; close = false;

View File

@ -22,12 +22,12 @@
#define INPUTDIALOG_H #define INPUTDIALOG_H
#include "dialog.h" #include "dialog.h"
#include "buttonbox.h"
#include <SDL.h> #include <SDL.h>
#include <string> #include <string>
#include <vector> #include <vector>
class ButtonBox;
class InputManager; class InputManager;
class Touchscreen; class Touchscreen;
@ -59,7 +59,7 @@ private:
std::vector<std::string> *kb; std::vector<std::string> *kb;
int kbLength, kbWidth, kbHeight, kbLeft; int kbLength, kbWidth, kbHeight, kbLeft;
SDL_Rect kbRect; SDL_Rect kbRect;
ButtonBox *buttonbox; ButtonBox buttonbox;
std::string input; std::string input;
}; };

View File

@ -29,7 +29,6 @@ using std::string;
MenuSetting::MenuSetting(GMenu2X *gmenu2x, const string &name, MenuSetting::MenuSetting(GMenu2X *gmenu2x, const string &name,
const string &description) const string &description)
: gmenu2x(gmenu2x) : gmenu2x(gmenu2x)
, buttonBox(gmenu2x)
, name(name) , name(name)
, description(description) , description(description)
{ {
@ -58,5 +57,5 @@ void MenuSetting::drawSelected(int valueX, int y, int h)
s.box(0, y, valueX - 5, h, s.box(0, y, valueX - 5, h,
gmenu2x->skinConfColors[COLOR_SELECTION_BG]); gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
buttonBox.paint(s, 5); buttonBox.paint(s, 5, gmenu2x->resY - 1);
} }

View File

@ -62,7 +62,7 @@ bool WallpaperDialog::exec()
uint i, selected = 0, firstElement = 0, iY; uint i, selected = 0, firstElement = 0, iY;
ButtonBox buttonbox(gmenu2x); ButtonBox buttonbox;
buttonbox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"]))); buttonbox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Select"])));
buttonbox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Exit"]))); buttonbox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Exit"])));
@ -90,7 +90,7 @@ bool WallpaperDialog::exec()
writeTitle(s, gmenu2x->tr["Wallpaper selection"]); writeTitle(s, gmenu2x->tr["Wallpaper selection"]);
writeSubTitle(s, gmenu2x->tr["Select a wallpaper from the list"]); writeSubTitle(s, gmenu2x->tr["Select a wallpaper from the list"]);
buttonbox.paint(s, 5); buttonbox.paint(s, 5, gmenu2x->resY - 1);
//Selection //Selection
iY = selected - firstElement; iY = selected - firstElement;