homebrewfilter/source/prompt_menu.cpp
Christopher Roy Bratusek 6ac4d081a6 import rev0 (other stuff)
2012-04-07 20:04:32 +02:00

127 lines
3.2 KiB
C++

#include <unistd.h>
#include "libwiigui/gui.h"
#include "main.h"
/*** Extern variables ***/
extern GuiWindow * mainWindow;
/*** Extern functions ***/
extern void ResumeGui();
extern void HaltGui();
/****************************************************************************
* WindowPrompt
*
* Displays a prompt window to user, with information, an error message, or
* presenting a user with a choice
***************************************************************************/
int menuPrompt()
{
bool stop = false;
int device = -1;
GuiWindow promptWindow(144,64);
promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
promptWindow.SetPosition(0, 280);
if(Options.apps == 5)
promptWindow.SetPosition(0, 307);
GuiTrigger trigA;
GuiTrigger trigB;
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B);
// Hintergrund
GuiImageData dialogBox(Theme.choice);
GuiImage dialogBoxImg(&dialogBox);
// button data
GuiImageData normal_BtnImgData(Theme.normal_inactive);
GuiImageData normal_BtnImgDataOver(Theme.normal_active);
GuiImageData grid_BtnImgData(Theme.grid_inactive);
GuiImageData grid_BtnImgDataOver(Theme.grid_active);
GuiImageData pc_BtnImgData(Theme.power_inactive);
GuiImageData pc_BtnImgDataOver(Theme.power_active);
// button
GuiImage normal_BtnImg(&normal_BtnImgData);
GuiImage grid_BtnImg(&grid_BtnImgData);
GuiImage pc_BtnImg(&pc_BtnImgData);
// button over
GuiImage normal_BtnImgOver(&normal_BtnImgDataOver);
GuiImage grid_BtnImgOver(&grid_BtnImgDataOver);
GuiImage pc_BtnImgOver(&pc_BtnImgDataOver);
GuiButton normal_Btn(normal_BtnImgData.GetWidth(), normal_BtnImgData.GetHeight());
normal_Btn.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
normal_Btn.SetPosition(8, 0);
normal_Btn.SetImage(&normal_BtnImg);
normal_Btn.SetImageOver(&normal_BtnImgOver);
normal_Btn.SetTrigger(&trigA);
GuiButton grid_Btn(grid_BtnImgData.GetWidth(), grid_BtnImgData.GetHeight());
grid_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
grid_Btn.SetPosition(0, 0);
grid_Btn.SetImage(&grid_BtnImg);
grid_Btn.SetImageOver(&grid_BtnImgOver);
grid_Btn.SetTrigger(&trigA);
GuiButton pc_Btn(pc_BtnImgData.GetWidth(), pc_BtnImgData.GetHeight());
pc_Btn.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
pc_Btn.SetPosition(-8, 0);
pc_Btn.SetImage(&pc_BtnImg);
pc_Btn.SetImageOver(&pc_BtnImgOver);
pc_Btn.SetTrigger(&trigA);
GuiButton back(0, 0);
back.SetTrigger(&trigB);
promptWindow.Append(&dialogBoxImg);
promptWindow.Append(&normal_Btn);
promptWindow.Append(&grid_Btn);
promptWindow.Append(&pc_Btn);
promptWindow.Append(&back);
HaltGui();
mainWindow->SetState(STATE_DISABLED2);
mainWindow->Append(&promptWindow);
mainWindow->ChangeFocus(&promptWindow);
ResumeGui();
while(!stop)
{
usleep(100);
if(normal_Btn.GetState() == STATE_CLICKED)
{
device = 0;
stop = true;
}
if(grid_Btn.GetState() == STATE_CLICKED)
{
device = 1;
stop = true;
}
if(pc_Btn.GetState() == STATE_CLICKED)
{
device = 2;
stop = true;
}
if(back.GetState() == STATE_CLICKED)
stop = true;
}
HaltGui();
mainWindow->Remove(&promptWindow);
mainWindow->SetState(STATE_DEFAULT);
ResumeGui();
return device;
}