homebrewfilter/source/prompt_device.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 devicePrompt()
{
bool stop = false;
int device = -1;
GuiWindow promptWindow(144,64);
promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
promptWindow.SetPosition(-135, 280);
if(Options.apps == 5)
promptWindow.SetPosition(-135, 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 sd_BtnImgData(Theme.sd_inactive);
GuiImageData sd_BtnImgDataOver(Theme.sd_active);
GuiImageData usb_BtnImgData(Theme.usb_inactive);
GuiImageData usb_BtnImgDataOver(Theme.usb_active);
GuiImageData sd_usb_BtnImgData(Theme.sd_usb_inactive);
GuiImageData sd_usb_BtnImgDataOver(Theme.sd_usb_active);
// button
GuiImage sd_BtnImg(&sd_BtnImgData);
GuiImage usb_BtnImg(&usb_BtnImgData);
GuiImage sd_usb_BtnImg(&sd_usb_BtnImgData);
// button over
GuiImage sd_BtnImgOver(&sd_BtnImgDataOver);
GuiImage usb_BtnImgOver(&usb_BtnImgDataOver);
GuiImage sd_usb_BtnImgOver(&sd_usb_BtnImgDataOver);
GuiButton sd_Btn(sd_BtnImgData.GetWidth(), sd_BtnImgData.GetHeight());
sd_Btn.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
sd_Btn.SetPosition(8, 0);
sd_Btn.SetImage(&sd_BtnImg);
sd_Btn.SetImageOver(&sd_BtnImgOver);
sd_Btn.SetTrigger(&trigA);
GuiButton usb_Btn(usb_BtnImgData.GetWidth(), usb_BtnImgData.GetHeight());
usb_Btn.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
usb_Btn.SetPosition(0, 0);
usb_Btn.SetImage(&usb_BtnImg);
usb_Btn.SetImageOver(&usb_BtnImgOver);
usb_Btn.SetTrigger(&trigA);
GuiButton sd_usb_Btn(sd_usb_BtnImgData.GetWidth(), sd_usb_BtnImgData.GetHeight());
sd_usb_Btn.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
sd_usb_Btn.SetPosition(-8, 0);
sd_usb_Btn.SetImage(&sd_usb_BtnImg);
sd_usb_Btn.SetImageOver(&sd_usb_BtnImgOver);
sd_usb_Btn.SetTrigger(&trigA);
GuiButton back(0, 0);
back.SetTrigger(&trigB);
promptWindow.Append(&dialogBoxImg);
promptWindow.Append(&sd_Btn);
promptWindow.Append(&usb_Btn);
promptWindow.Append(&sd_usb_Btn);
promptWindow.Append(&back);
HaltGui();
mainWindow->SetState(STATE_DISABLED2);
mainWindow->Append(&promptWindow);
mainWindow->ChangeFocus(&promptWindow);
ResumeGui();
while(!stop)
{
usleep(100);
if(sd_Btn.GetState() == STATE_CLICKED)
{
device = 1;
stop = true;
}
if(usb_Btn.GetState() == STATE_CLICKED)
{
device = 2;
stop = true;
}
if(sd_usb_Btn.GetState() == STATE_CLICKED)
{
device = 3;
stop = true;
}
if(back.GetState() == STATE_CLICKED)
stop = true;
}
HaltGui();
mainWindow->Remove(&promptWindow);
mainWindow->SetState(STATE_DEFAULT);
ResumeGui();
return device;
}