mirror of
git://projects.qi-hardware.com/gmenu2x.git
synced 2024-11-25 19:05:21 +02: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:
parent
e5a432cb6b
commit
428a316bc1
@ -18,7 +18,6 @@ BrowseDialog::BrowseDialog(
|
||||
, title(title)
|
||||
, subtitle(subtitle)
|
||||
, ts_pressed(false)
|
||||
, buttonBox(gmenu2x)
|
||||
{
|
||||
buttonBox.add(unique_ptr<IconButton>(new IconButton(gmenu2x, ts, "skin:imgs/buttons/left.png")));
|
||||
unique_ptr<IconButton> btnUp(new IconButton(
|
||||
@ -233,7 +232,7 @@ void BrowseDialog::paint()
|
||||
drawTitleIcon(bg, "icons/explorer.png", true);
|
||||
writeTitle(bg, title);
|
||||
writeSubTitle(bg, subtitle);
|
||||
buttonBox.paint(bg, 5);
|
||||
buttonBox.paint(bg, 5, gmenu2x->resY - 1);
|
||||
|
||||
bg.convertToDisplayFormat();
|
||||
bg.blit(s, 0, 0);
|
||||
|
@ -6,10 +6,6 @@
|
||||
using std::unique_ptr;
|
||||
using std::move;
|
||||
|
||||
ButtonBox::ButtonBox(GMenu2X *gmenu2x) : gmenu2x(gmenu2x)
|
||||
{
|
||||
}
|
||||
|
||||
void ButtonBox::add(unique_ptr<IconButton> button)
|
||||
{
|
||||
buttons.push_back(move(button));
|
||||
@ -20,9 +16,8 @@ void ButtonBox::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) {
|
||||
auto rect = button->getRect();
|
||||
button->setPosition(x, y - rect.h);
|
||||
|
@ -12,17 +12,14 @@ class Surface;
|
||||
class ButtonBox
|
||||
{
|
||||
public:
|
||||
ButtonBox(GMenu2X *gmenu2x);
|
||||
|
||||
void add(std::unique_ptr<IconButton> button);
|
||||
void clear();
|
||||
|
||||
void paint(Surface& s, unsigned int x);
|
||||
void paint(Surface& s, int x, int y);
|
||||
void handleTS();
|
||||
|
||||
private:
|
||||
std::vector<std::unique_ptr<IconButton>> buttons;
|
||||
GMenu2X *gmenu2x;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -97,26 +97,25 @@ InputDialog::InputDialog(GMenu2X *gmenu2x, InputManager &inputMgr_,
|
||||
|
||||
setKeyboard(0);
|
||||
|
||||
buttonbox = new ButtonBox(gmenu2x);
|
||||
unique_ptr<IconButton> btnBackspace(new IconButton(
|
||||
gmenu2x, ts, "skin:imgs/buttons/l.png", gmenu2x->tr["Backspace"]));
|
||||
btnBackspace->setAction(BIND(&InputDialog::backspace));
|
||||
buttonbox->add(move(btnBackspace));
|
||||
buttonbox.add(move(btnBackspace));
|
||||
|
||||
unique_ptr<IconButton> btnSpace(
|
||||
new IconButton(gmenu2x, ts, "skin:imgs/buttons/r.png", gmenu2x->tr["Space"]));
|
||||
btnSpace->setAction(BIND(&InputDialog::space));
|
||||
buttonbox->add(move(btnSpace));
|
||||
buttonbox.add(move(btnSpace));
|
||||
|
||||
unique_ptr<IconButton> btnConfirm(new IconButton(
|
||||
gmenu2x, ts, "skin:imgs/buttons/accept.png", gmenu2x->tr["Confirm"]));
|
||||
btnConfirm->setAction(BIND(&InputDialog::confirm));
|
||||
buttonbox->add(move(btnConfirm));
|
||||
buttonbox.add(move(btnConfirm));
|
||||
|
||||
unique_ptr<IconButton> btnChangeKeys(new IconButton(
|
||||
gmenu2x, ts, "skin:imgs/buttons/cancel.png", gmenu2x->tr["Change keys"]));
|
||||
btnChangeKeys->setAction(BIND(&InputDialog::changeKeys));
|
||||
buttonbox->add(move(btnChangeKeys));
|
||||
buttonbox.add(move(btnChangeKeys));
|
||||
}
|
||||
|
||||
void InputDialog::setKeyboard(int kb) {
|
||||
@ -153,7 +152,7 @@ bool InputDialog::exec() {
|
||||
drawTitleIcon(bg, icon, false);
|
||||
writeTitle(bg, title);
|
||||
writeSubTitle(bg, text);
|
||||
buttonbox->paint(bg, 5);
|
||||
buttonbox.paint(bg, 5, gmenu2x->resY - 1);
|
||||
bg.convertToDisplayFormat();
|
||||
|
||||
close = false;
|
||||
|
@ -22,12 +22,12 @@
|
||||
#define INPUTDIALOG_H
|
||||
|
||||
#include "dialog.h"
|
||||
#include "buttonbox.h"
|
||||
|
||||
#include <SDL.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class ButtonBox;
|
||||
class InputManager;
|
||||
class Touchscreen;
|
||||
|
||||
@ -59,7 +59,7 @@ private:
|
||||
std::vector<std::string> *kb;
|
||||
int kbLength, kbWidth, kbHeight, kbLeft;
|
||||
SDL_Rect kbRect;
|
||||
ButtonBox *buttonbox;
|
||||
ButtonBox buttonbox;
|
||||
std::string input;
|
||||
};
|
||||
|
||||
|
@ -29,7 +29,6 @@ using std::string;
|
||||
MenuSetting::MenuSetting(GMenu2X *gmenu2x, const string &name,
|
||||
const string &description)
|
||||
: gmenu2x(gmenu2x)
|
||||
, buttonBox(gmenu2x)
|
||||
, name(name)
|
||||
, description(description)
|
||||
{
|
||||
@ -58,5 +57,5 @@ void MenuSetting::drawSelected(int valueX, int y, int h)
|
||||
s.box(0, y, valueX - 5, h,
|
||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||
|
||||
buttonBox.paint(s, 5);
|
||||
buttonBox.paint(s, 5, gmenu2x->resY - 1);
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ bool WallpaperDialog::exec()
|
||||
|
||||
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/cancel.png", gmenu2x->tr["Exit"])));
|
||||
|
||||
@ -90,7 +90,7 @@ bool WallpaperDialog::exec()
|
||||
writeTitle(s, gmenu2x->tr["Wallpaper selection"]);
|
||||
writeSubTitle(s, gmenu2x->tr["Select a wallpaper from the list"]);
|
||||
|
||||
buttonbox.paint(s, 5);
|
||||
buttonbox.paint(s, 5, gmenu2x->resY - 1);
|
||||
|
||||
//Selection
|
||||
iY = selected - firstElement;
|
||||
|
Loading…
Reference in New Issue
Block a user