mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-25 12:56:59 +01:00
Add network configuration (including message!) and auto-delete
dialogues by default
This commit is contained in:
parent
822f76b11b
commit
70b0064575
@ -10,10 +10,8 @@ void DialogueListener::selectCallback(DialogueBox *which, int selected)
|
|||||||
Gui::gui->popDialogueBox();
|
Gui::gui->popDialogueBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogueBox::DialogueBox(const char *msgs[], int cancel) : Menu(NULL), ListenerManager()
|
DialogueBox::DialogueBox(const char *msgs[], bool delete_on_action) : Menu(NULL), ListenerManager()
|
||||||
{
|
{
|
||||||
this->m_cancel = cancel;
|
|
||||||
|
|
||||||
this->setFont(Gui::gui->default_font);
|
this->setFont(Gui::gui->default_font);
|
||||||
this->setSelectedBackground(NULL, NULL, NULL,
|
this->setSelectedBackground(NULL, NULL, NULL,
|
||||||
Gui::gui->bg_left, Gui::gui->bg_middle,
|
Gui::gui->bg_left, Gui::gui->bg_middle,
|
||||||
@ -22,11 +20,11 @@ DialogueBox::DialogueBox(const char *msgs[], int cancel) : Menu(NULL), ListenerM
|
|||||||
this->setText(msgs, NULL);
|
this->setText(msgs, NULL);
|
||||||
/* Place on the second to last entry */
|
/* Place on the second to last entry */
|
||||||
this->cur_sel = this->n_entries - 2;
|
this->cur_sel = this->n_entries - 2;
|
||||||
|
this->delete_on_action = delete_on_action;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DialogueBox::selectNext(event_t ev)
|
int DialogueBox::selectNext(event_t ev)
|
||||||
{
|
{
|
||||||
printf("Al vobb: %d!\n", ev);
|
|
||||||
/* No up/down movement please! */
|
/* No up/down movement please! */
|
||||||
if (ev == KEY_UP || ev == KEY_DOWN)
|
if (ev == KEY_UP || ev == KEY_DOWN)
|
||||||
return this->cur_sel;
|
return this->cur_sel;
|
||||||
@ -39,6 +37,9 @@ void DialogueBox::selectCallback(int which)
|
|||||||
if (this->listeners[i])
|
if (this->listeners[i])
|
||||||
((DialogueListener*)this->listeners[i])->selectCallback(this,
|
((DialogueListener*)this->listeners[i])->selectCallback(this,
|
||||||
this->p_submenus[0].sel);
|
this->p_submenus[0].sel);
|
||||||
|
Gui::gui->popDialogueBox();
|
||||||
|
if (this->delete_on_action)
|
||||||
|
delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogueBox::hoverCallback(int which)
|
void DialogueBox::hoverCallback(int which)
|
||||||
@ -51,6 +52,9 @@ void DialogueBox::escapeCallback(int which)
|
|||||||
if (this->listeners[i])
|
if (this->listeners[i])
|
||||||
((DialogueListener*)this->listeners[i])->selectCallback(this,
|
((DialogueListener*)this->listeners[i])->selectCallback(this,
|
||||||
this->p_submenus[0].sel);
|
this->p_submenus[0].sel);
|
||||||
|
Gui::gui->popDialogueBox();
|
||||||
|
if (this->delete_on_action)
|
||||||
|
delete this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogueBox::draw(SDL_Surface *where)
|
void DialogueBox::draw(SDL_Surface *where)
|
||||||
|
@ -19,7 +19,7 @@ public:
|
|||||||
class DialogueBox : public Menu, public ListenerManager
|
class DialogueBox : public Menu, public ListenerManager
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DialogueBox(const char *msgs[], int cancel = 1);
|
DialogueBox(const char *msgs[], bool delete_on_action = true);
|
||||||
|
|
||||||
virtual void selectCallback(int which);
|
virtual void selectCallback(int which);
|
||||||
|
|
||||||
@ -31,13 +31,8 @@ public:
|
|||||||
|
|
||||||
virtual void draw(SDL_Surface *where);
|
virtual void draw(SDL_Surface *where);
|
||||||
|
|
||||||
int cancelIndex()
|
|
||||||
{
|
|
||||||
return this->m_cancel;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int m_cancel;
|
bool delete_on_action;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __DIALOGUE_BOX_HH__ */
|
#endif /* __DIALOGUE_BOX_HH__ */
|
||||||
|
@ -20,15 +20,13 @@ class ExitListener : public DialogueListener
|
|||||||
{
|
{
|
||||||
void escapeCallback(DialogueBox *which, int selected)
|
void escapeCallback(DialogueBox *which, int selected)
|
||||||
{
|
{
|
||||||
delete this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void selectCallback(DialogueBox *which, int selected)
|
void selectCallback(DialogueBox *which, int selected)
|
||||||
{
|
{
|
||||||
if (selected != which->cancelIndex())
|
/* Cancel? */
|
||||||
|
if (selected != 1)
|
||||||
exit(0);
|
exit(0);
|
||||||
Gui::gui->popDialogueBox();
|
|
||||||
delete this;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -73,7 +71,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 11: /* Exit */
|
case 11: /* Exit */
|
||||||
DialogueBox *exit_dialogue = new DialogueBox(exit_dialogue_messages, 1);
|
DialogueBox *exit_dialogue = new DialogueBox(exit_dialogue_messages);
|
||||||
exit_dialogue->registerListener(new ExitListener());
|
exit_dialogue->registerListener(new ExitListener());
|
||||||
Gui::gui->pushDialogueBox(exit_dialogue);
|
Gui::gui->pushDialogueBox(exit_dialogue);
|
||||||
break;
|
break;
|
||||||
|
9
menu.cpp
9
menu.cpp
@ -272,10 +272,13 @@ void Menu::runLogic()
|
|||||||
this->selectNext(ev);
|
this->selectNext(ev);
|
||||||
break;
|
break;
|
||||||
case KEY_SELECT:
|
case KEY_SELECT:
|
||||||
this->selectCallback(this->cur_sel); break;
|
this->selectCallback(this->cur_sel);
|
||||||
|
/* Might be deleted */
|
||||||
|
return;
|
||||||
case KEY_ESCAPE:
|
case KEY_ESCAPE:
|
||||||
this->escapeCallback(this->cur_sel); break;
|
this->escapeCallback(this->cur_sel);
|
||||||
break;
|
/* Might be deleted */
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,17 @@ const char **exit_dialogue_messages = (const char*[]){
|
|||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char **network_port_dialogue_messages = (const char*[]){
|
||||||
|
/*00*/ "Please supply a number as",
|
||||||
|
/*01*/ "network port",
|
||||||
|
/*02*/ "#", /* Empty line */
|
||||||
|
/*03*/ "#",
|
||||||
|
/*04*/ "#",
|
||||||
|
/*05*/ "#",
|
||||||
|
/*06*/ "^|OK",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
const char **main_menu_messages = (const char*[]){
|
const char **main_menu_messages = (const char*[]){
|
||||||
/*00*/ "File",
|
/*00*/ "File",
|
||||||
/*01*/ "^|Insert|Start",
|
/*01*/ "^|Insert|Start",
|
||||||
|
@ -10,5 +10,6 @@ extern const char **options_menu_help[];
|
|||||||
|
|
||||||
/* The menu messages are dynamically generated */
|
/* The menu messages are dynamically generated */
|
||||||
extern const char **network_menu_help[];
|
extern const char **network_menu_help[];
|
||||||
|
extern const char **network_port_dialogue_messages;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#include "gui.hh"
|
#include "gui.hh"
|
||||||
#include "menu.hh"
|
#include "menu.hh"
|
||||||
#include "help_box.hh"
|
#include "help_box.hh"
|
||||||
|
#include "virtual_keyboard.hh"
|
||||||
|
|
||||||
class NetworkView;
|
class NetworkView;
|
||||||
class NetworkMenu : public Menu
|
|
||||||
|
class NetworkMenu : public Menu, public KeyboardListener
|
||||||
{
|
{
|
||||||
friend class NetworkView;
|
friend class NetworkView;
|
||||||
|
|
||||||
@ -19,11 +21,48 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void stringCallback(const char *str)
|
||||||
|
{
|
||||||
|
switch (this->cur_sel)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
strncpy(Gui::gui->np->NetworkName, str, sizeof(Gui::gui->np->NetworkName));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
strncpy(Gui::gui->np->NetworkServer, str, sizeof(Gui::gui->np->NetworkName));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
char *endp;
|
||||||
|
unsigned long v;
|
||||||
|
|
||||||
|
v = strtoul(str, &endp, 0);
|
||||||
|
if (endp == str)
|
||||||
|
{
|
||||||
|
DialogueBox *error_dialogue = new DialogueBox(network_port_dialogue_messages);
|
||||||
|
Gui::gui->pushDialogueBox(error_dialogue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Gui::gui->np->NetworkPort = v;
|
||||||
|
} break;
|
||||||
|
default:
|
||||||
|
panic("Cur sel is %d, not possible!\n", this->cur_sel);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this->updateMessages();
|
||||||
|
}
|
||||||
|
|
||||||
virtual void selectCallback(int which)
|
virtual void selectCallback(int which)
|
||||||
{
|
{
|
||||||
printf("option entry %d selected: %s\n", which, this->pp_msgs[which]);
|
printf("option entry %d selected: %s\n", which, this->pp_msgs[which]);
|
||||||
switch (which)
|
switch (which)
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
Gui::gui->kv->activate();
|
||||||
|
Gui::gui->kv->registerListener(this);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -259,6 +259,7 @@ const char VirtualKeyboard::keycodeToChar(int kc)
|
|||||||
|
|
||||||
void VirtualKeyboard::activate()
|
void VirtualKeyboard::activate()
|
||||||
{
|
{
|
||||||
|
Gui::gui->pushView(Gui::gui->kv);
|
||||||
this->is_active = true;
|
this->is_active = true;
|
||||||
memset(this->buf, 0, sizeof(struct virtkey) * this->buf_len);
|
memset(this->buf, 0, sizeof(struct virtkey) * this->buf_len);
|
||||||
this->buf_head = 0;
|
this->buf_head = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user