mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-09-09 09:03:20 +02:00
216 lines
8.1 KiB
C++
216 lines
8.1 KiB
C++
#include <unistd.h>
|
|
|
|
#include "menus.h"
|
|
#include "fatmounter.h"
|
|
#include "usbloader/usbstorage2.h"
|
|
#include "usbloader/utils.h"
|
|
#include "usbloader/wbfs.h"
|
|
#include "libwiigui/gui_customoptionbrowser.h"
|
|
|
|
extern int load_from_fs;
|
|
extern char game_partition[6];
|
|
|
|
/****************************************************************************
|
|
* MenuFormat
|
|
***************************************************************************/
|
|
int MenuFormat()
|
|
{
|
|
|
|
USBDevice_deInit();
|
|
sleep(1);
|
|
|
|
USBStorage2_Init();
|
|
|
|
int menu = MENU_NONE;
|
|
char imgPath[100];
|
|
|
|
customOptionList options(MAX_PARTITIONS_EX);
|
|
extern PartList partitions;
|
|
|
|
u32 cnt, counter = 0;
|
|
int choice, ret;
|
|
char text[ISFS_MAXPATH];
|
|
|
|
//create the partitionlist
|
|
for (cnt = 0; cnt < (u32) partitions.num; cnt++)
|
|
{
|
|
partitionEntry *entry = &partitions.pentry[cnt];
|
|
|
|
/* Calculate size in gigabytes */
|
|
f32 size = entry->size * (partitions.sector_size / GB_SIZE);
|
|
|
|
if (size)
|
|
{
|
|
options.SetName(counter, "%s %d:", tr( "Partition" ), cnt + 1);
|
|
options.SetValue(counter, "%.2fGB", size);
|
|
}
|
|
else
|
|
{
|
|
options.SetName(counter, "%s %d:", tr( "Partition" ), cnt + 1);
|
|
options.SetValue(counter, tr( "Can't be formatted" ));
|
|
}
|
|
counter++;
|
|
}
|
|
|
|
GuiSound btnSoundOver(button_over_pcm, button_over_pcm_size, Settings.sfxvolume);
|
|
// because destroy GuiSound must wait while sound playing is finished, we use a global sound
|
|
if (!btnClick2) btnClick2 = new GuiSound(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
|
|
// GuiSound btnClick(button_click2_pcm, button_click2_pcm_size, Settings.sfxvolume);
|
|
snprintf(imgPath, sizeof(imgPath), "%swiimote_poweroff.png", Settings.theme_path);
|
|
GuiImageData btnpwroff(imgPath, wiimote_poweroff_png);
|
|
snprintf(imgPath, sizeof(imgPath), "%swiimote_poweroff_over.png", Settings.theme_path);
|
|
GuiImageData btnpwroffOver(imgPath, wiimote_poweroff_over_png);
|
|
snprintf(imgPath, sizeof(imgPath), "%smenu_button.png", Settings.theme_path);
|
|
GuiImageData btnhome(imgPath, menu_button_png);
|
|
snprintf(imgPath, sizeof(imgPath), "%smenu_button_over.png", Settings.theme_path);
|
|
GuiImageData btnhomeOver(imgPath, menu_button_over_png);
|
|
GuiImageData battery(battery_png);
|
|
GuiImageData batteryBar(battery_bar_png);
|
|
GuiImageData batteryRed(battery_red_png);
|
|
GuiImageData batteryBarRed(battery_bar_red_png);
|
|
|
|
GuiTrigger trigA;
|
|
trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
|
GuiTrigger trigHome;
|
|
trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, 0);
|
|
|
|
GuiImage poweroffBtnImg(&btnpwroff);
|
|
GuiImage poweroffBtnImgOver(&btnpwroffOver);
|
|
poweroffBtnImg.SetWidescreen(Settings.widescreen);
|
|
poweroffBtnImgOver.SetWidescreen(Settings.widescreen);
|
|
GuiButton poweroffBtn(&poweroffBtnImg, &poweroffBtnImgOver, 0, 3, THEME.power_x, THEME.power_y, &trigA,
|
|
&btnSoundOver, btnClick2, 1);
|
|
GuiImage exitBtnImg(&btnhome);
|
|
GuiImage exitBtnImgOver(&btnhomeOver);
|
|
exitBtnImg.SetWidescreen(Settings.widescreen);
|
|
exitBtnImgOver.SetWidescreen(Settings.widescreen);
|
|
GuiButton exitBtn(&exitBtnImg, &exitBtnImgOver, 0, 3, THEME.home_x, THEME.home_y, &trigA, &btnSoundOver, btnClick2,
|
|
1);
|
|
exitBtn.SetTrigger(&trigHome);
|
|
|
|
GuiCustomOptionBrowser optionBrowser(396, 280, &options, Settings.theme_path, "bg_options_settings.png",
|
|
bg_options_settings_png, 0, 10);
|
|
optionBrowser.SetPosition(0, 40);
|
|
optionBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
|
|
|
HaltGui();
|
|
GuiWindow w(screenwidth, screenheight);
|
|
w.Append(&poweroffBtn);
|
|
w.Append(&exitBtn);
|
|
|
|
mainWindow->Append(&w);
|
|
mainWindow->Append(&optionBrowser);
|
|
|
|
ResumeGui();
|
|
|
|
while (menu == MENU_NONE)
|
|
{
|
|
|
|
VIDEO_WaitVSync();
|
|
|
|
ret = optionBrowser.GetClickedOption();
|
|
|
|
if (ret >= 0)
|
|
{
|
|
if (Settings.godmode == 1)
|
|
{
|
|
partitionEntry *entry = &partitions.pentry[ret];
|
|
if (entry->size)
|
|
{
|
|
if (load_from_fs == PART_FS_FAT)
|
|
{
|
|
WBFS_OpenPart(partitions.pinfo[ret].part_fs, partitions.pinfo[ret].index, entry->sector,
|
|
entry->size, (char *) &game_partition);
|
|
load_from_fs = partitions.pinfo[ret].part_fs;
|
|
menu = MENU_DISCLIST;
|
|
|
|
Settings.partition = ret;
|
|
Settings.Save();
|
|
}
|
|
else
|
|
{
|
|
sprintf(text, "%s %d : %.2fGB", tr( "Partition" ), ret + 1, entry->size
|
|
* (partitions.sector_size / GB_SIZE));
|
|
choice = WindowPrompt(tr( "Do you want to format:" ), text, tr( "Yes" ), tr( "No" ));
|
|
if (choice == 1)
|
|
{
|
|
ret = FormatingPartition(tr( "Formatting, please wait..." ), entry);
|
|
if (ret < 0)
|
|
{
|
|
WindowPrompt(tr( "Error !" ), tr( "Failed formating" ), tr( "Return" ));
|
|
menu = MENU_SETTINGS;
|
|
}
|
|
else
|
|
{
|
|
sleep(1);
|
|
ret = WBFS_Open();
|
|
sprintf(text, "%s %s", text, tr( "formatted!" ));
|
|
WindowPrompt(tr( "Success:" ), text, tr( "OK" ));
|
|
if (ret < 0)
|
|
{
|
|
WindowPrompt(tr( "ERROR" ), tr( "Failed to open partition" ), tr( "OK" ));
|
|
Sys_LoadMenu();
|
|
}
|
|
menu = MENU_DISCLIST;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (Settings.godmode == 0)
|
|
{
|
|
mainWindow->Remove(&optionBrowser);
|
|
char entered[20] = "";
|
|
int result = OnScreenKeyboard(entered, 20, 0);
|
|
mainWindow->Append(&optionBrowser);
|
|
if (result == 1)
|
|
{
|
|
if (!strcmp(entered, Settings.unlockCode)) //if password correct
|
|
{
|
|
if (Settings.godmode == 0)
|
|
{
|
|
WindowPrompt(tr( "Correct Password" ),
|
|
tr( "All the features of USB Loader GX are unlocked." ), tr( "OK" ));
|
|
Settings.godmode = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
WindowPrompt(tr( "Wrong Password" ), tr( "USB Loader GX is protected" ), tr( "OK" ));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (shutdown == 1) Sys_Shutdown();
|
|
if (reset == 1) Sys_Reboot();
|
|
|
|
if (poweroffBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
choice = WindowPrompt(tr( "Shutdown System" ), tr( "Are you sure?" ), tr( "Yes" ), tr( "No" ));
|
|
if (choice == 1)
|
|
{
|
|
Sys_Shutdown();
|
|
}
|
|
|
|
}
|
|
else if (exitBtn.GetState() == STATE_CLICKED)
|
|
{
|
|
choice = WindowPrompt(tr( "Return to Wii Menu" ), tr( "Are you sure?" ), tr( "Yes" ), tr( "No" ));
|
|
if (choice == 1)
|
|
{
|
|
Sys_LoadMenu();
|
|
}
|
|
}
|
|
}
|
|
|
|
HaltGui();
|
|
|
|
mainWindow->Remove(&optionBrowser);
|
|
mainWindow->Remove(&w);
|
|
ResumeGui();
|
|
|
|
return menu;
|
|
}
|
|
|