mirror of
git://projects.qi-hardware.com/gmenu2x.git
synced 2024-11-22 19:03:44 +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)
|
, 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);
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user