1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-07-02 18:47:19 +03:00

MessageBox: Use arrays instead of vectors for buttons.

There is no need for the overhead of std::vector if we know the number
of elements at compile time.
This shaves off about 2 kB of the stripped binary size.
This commit is contained in:
Maarten ter Huurne 2011-10-23 11:24:20 +02:00
parent 28f6cd2122
commit 3252c777c3
2 changed files with 17 additions and 22 deletions

View File

@ -30,13 +30,10 @@ MessageBox::MessageBox(GMenu2X *gmenu2x, const string &text, const string &icon)
this->text = text; this->text = text;
this->icon = icon; this->icon = icon;
buttons.resize(19); for (uint i = 0; i < BUTTON_TYPE_SIZE; i++) {
buttonLabels.resize(19); buttons[i] = "";
buttonPositions.resize(19); buttonLabels[i] = "";
for (uint x=0; x<buttons.size(); x++) { buttonPositions[i].h = gmenu2x->font->getHeight();
buttons[x] = "";
buttonLabels[x] = "";
buttonPositions[x].h = gmenu2x->font->getHeight();
} }
//Default enabled button //Default enabled button
@ -57,8 +54,8 @@ MessageBox::MessageBox(GMenu2X *gmenu2x, const string &text, const string &icon)
buttonLabels[InputManager::VOLDOWN] = "vol-"; buttonLabels[InputManager::VOLDOWN] = "vol-";
} }
void MessageBox::setButton(int action, const string &btn) { void MessageBox::setButton(InputManager::Button button, const string &label) {
buttons[action] = btn; buttons[button] = label;
} }
int MessageBox::exec() { int MessageBox::exec() {
@ -83,7 +80,7 @@ int MessageBox::exec() {
bg.write( gmenu2x->font, text, box.x+(gmenu2x->sc[icon] != NULL ? 47 : 10), box.y+gmenu2x->font->getHeight()+3, ASFont::HAlignLeft, ASFont::VAlignMiddle ); bg.write( gmenu2x->font, text, box.x+(gmenu2x->sc[icon] != NULL ? 47 : 10), box.y+gmenu2x->font->getHeight()+3, ASFont::HAlignLeft, ASFont::VAlignMiddle );
int btnX = gmenu2x->halfX+box.w/2-6; int btnX = gmenu2x->halfX+box.w/2-6;
for (uint i=0; i<buttons.size(); i++) { for (uint i = 0; i < BUTTON_TYPE_SIZE; i++) {
if (buttons[i] != "") { if (buttons[i] != "") {
buttonPositions[i].y = box.y+box.h-4; buttonPositions[i].y = box.y+box.h-4;
buttonPositions[i].w = btnX; buttonPositions[i].w = btnX;
@ -104,13 +101,12 @@ int MessageBox::exec() {
#ifdef PLATFORM_GP2X #ifdef PLATFORM_GP2X
//touchscreen //touchscreen
if (gmenu2x->f200) { if (gmenu2x->f200 && gmenu2x->ts.poll()) {
if (gmenu2x->ts.poll()) { for (uint i = 0; i < BUTTON_TYPE_SIZE; i++) {
for (uint i=0; i<buttons.size(); i++) if (buttons[i] != "" && gmenu2x->ts.inRect(buttonPositions[i])) {
if (buttons[i]!="" && gmenu2x->ts.inRect(buttonPositions[i])) { result = i;
result = i; break;
i = buttons.size(); }
}
} }
} }
#endif #endif

View File

@ -30,19 +30,18 @@
#include "gmenu2x.h" #include "gmenu2x.h"
using std::string; using std::string;
using std::vector;
class MessageBox { class MessageBox {
private: private:
string text, icon; string text, icon;
GMenu2X *gmenu2x; GMenu2X *gmenu2x;
vector<string> buttons; string buttons[BUTTON_TYPE_SIZE];
vector<string> buttonLabels; string buttonLabels[BUTTON_TYPE_SIZE];
vector<SDL_Rect> buttonPositions; SDL_Rect buttonPositions[BUTTON_TYPE_SIZE];
public: public:
MessageBox(GMenu2X *gmenu2x, const string &text, const string &icon=""); MessageBox(GMenu2X *gmenu2x, const string &text, const string &icon="");
void setButton(int action, const string &btn); void setButton(InputManager::Button button, const string &label);
int exec(); int exec();
}; };