mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-22 11:19:17 +01:00
*Rewritten the whole Homebrew Launcher (HBC menu) to a class. Using now the new settings standard too. Only Titles browser left.
*Fixed several gui_customoptionbrowser issues *Fixed missing background on title browser
This commit is contained in:
parent
fa11a745d6
commit
1ee6897ef5
File diff suppressed because one or more lines are too long
@ -76,7 +76,7 @@ int CheatMenu(const char * gameID)
|
|||||||
case 1:
|
case 1:
|
||||||
int cntcheats = c.getCnt();
|
int cntcheats = c.getCnt();
|
||||||
OptionList cheatslst;
|
OptionList cheatslst;
|
||||||
GuiCustomOptionBrowser chtBrowser(400, 280, &cheatslst, "bg_options_settings.png", 1, 90);
|
GuiCustomOptionBrowser chtBrowser(400, 280, &cheatslst, "bg_options_settings.png");
|
||||||
chtBrowser.SetPosition(0, 90);
|
chtBrowser.SetPosition(0, 90);
|
||||||
chtBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
chtBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
chtBrowser.SetClickable(true);
|
chtBrowser.SetClickable(true);
|
||||||
|
File diff suppressed because it is too large
Load Diff
389
source/homebrewboot/HomebrewBrowser.cpp
Normal file
389
source/homebrewboot/HomebrewBrowser.cpp
Normal file
@ -0,0 +1,389 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Copyright (C) 2010
|
||||||
|
* by Dimok
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any
|
||||||
|
* damages arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any
|
||||||
|
* purpose, including commercial applications, and to alter it and
|
||||||
|
* redistribute it freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you
|
||||||
|
* must not claim that you wrote the original software. If you use
|
||||||
|
* this software in a product, an acknowledgment in the product
|
||||||
|
* documentation would be appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and
|
||||||
|
* must not be misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
***************************************************************************/
|
||||||
|
#include "HomebrewBrowser.hpp"
|
||||||
|
#include "themes/CTheme.h"
|
||||||
|
#include "prompts/PromptWindows.h"
|
||||||
|
#include "language/gettext.h"
|
||||||
|
#include "network/networkops.h"
|
||||||
|
#include "utils/minizip/miniunz.h"
|
||||||
|
#include "usbloader/utils.h"
|
||||||
|
#include "prompts/TitleBrowser.h"
|
||||||
|
#include "homebrewboot/BootHomebrew.h"
|
||||||
|
#include "prompts/ProgressWindow.h"
|
||||||
|
#include "wstring.hpp"
|
||||||
|
#include "HomebrewXML.h"
|
||||||
|
|
||||||
|
extern u32 infilesize;
|
||||||
|
extern u32 uncfilesize;
|
||||||
|
extern char wiiloadVersion[2];
|
||||||
|
|
||||||
|
HomebrewBrowser::HomebrewBrowser()
|
||||||
|
: FlyingButtonsMenu(tr( "Homebrew Launcher" ))
|
||||||
|
{
|
||||||
|
HomebrewList = new HomebrewFiles(Settings.homebrewapps_path);
|
||||||
|
|
||||||
|
if (IsNetworkInit())
|
||||||
|
ResumeNetworkWait();
|
||||||
|
|
||||||
|
wifiNotSet = true;
|
||||||
|
wifiImgData = Resources::GetImageData("Wifi_btn.png");
|
||||||
|
wifiToolTip = new GuiTooltip(" ");
|
||||||
|
wifiImg = new GuiImage(wifiImgData);
|
||||||
|
wifiBtn = new GuiButton(wifiImgData->GetWidth(), wifiImgData->GetHeight());
|
||||||
|
wifiBtn->SetImage(wifiImg);
|
||||||
|
wifiBtn->SetPosition(300, 400);
|
||||||
|
wifiBtn->SetSoundOver(btnSoundOver);
|
||||||
|
wifiBtn->SetSoundClick(btnSoundClick);
|
||||||
|
wifiBtn->SetEffectGrow();
|
||||||
|
wifiBtn->SetAlpha(80);
|
||||||
|
wifiBtn->SetTrigger(trigA);
|
||||||
|
Append(wifiBtn);
|
||||||
|
|
||||||
|
channelImgData = Resources::GetImageData("Channel_btn.png");
|
||||||
|
channelBtnImg = new GuiImage(channelImgData);
|
||||||
|
channelBtnImg->SetWidescreen(Settings.widescreen);
|
||||||
|
channelBtn = new GuiButton(channelBtnImg->GetWidth(), channelBtnImg->GetHeight());
|
||||||
|
channelBtn->SetPosition(240, 400);
|
||||||
|
channelBtn->SetImage(channelBtnImg);
|
||||||
|
channelBtn->SetSoundOver(btnSoundOver);
|
||||||
|
channelBtn->SetSoundClick(btnSoundClick2);
|
||||||
|
channelBtn->SetEffectGrow();
|
||||||
|
channelBtn->SetTrigger(trigA);
|
||||||
|
Append(channelBtn);
|
||||||
|
|
||||||
|
MainButtonDesc.resize(HomebrewList->GetFilecount());
|
||||||
|
MainButtonDescOver.resize(HomebrewList->GetFilecount());
|
||||||
|
|
||||||
|
for(u32 i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
IconImgData[i] = NULL;
|
||||||
|
IconImg[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < HomebrewList->GetFilecount(); ++i)
|
||||||
|
{
|
||||||
|
MainButtonDesc[i] = new GuiText((char *) NULL, 18, (GXColor) {0, 0, 0, 255});
|
||||||
|
MainButtonDesc[i]->SetMaxWidth(MainButtonImgData->GetWidth() - 150, DOTTED);
|
||||||
|
MainButtonDesc[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
MainButtonDesc[i]->SetPosition(148, 15);
|
||||||
|
|
||||||
|
MainButtonDescOver[i] = new GuiText((char *) NULL, 18, (GXColor) {0, 0, 0, 255});
|
||||||
|
MainButtonDescOver[i]->SetMaxWidth(MainButtonImgData->GetWidth() - 150, SCROLL_HORIZONTAL);
|
||||||
|
MainButtonDescOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
MainButtonDescOver[i]->SetPosition(148, 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupMainButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
HomebrewBrowser::~HomebrewBrowser()
|
||||||
|
{
|
||||||
|
HaltGui();
|
||||||
|
delete HomebrewList;
|
||||||
|
|
||||||
|
Remove(wifiBtn);
|
||||||
|
delete wifiImgData;
|
||||||
|
delete wifiImg;
|
||||||
|
delete wifiToolTip;
|
||||||
|
delete wifiBtn;
|
||||||
|
|
||||||
|
Remove(channelBtn);
|
||||||
|
delete channelImgData;
|
||||||
|
delete channelBtnImg;
|
||||||
|
delete channelBtn;
|
||||||
|
|
||||||
|
for(u32 i = 0; i < MainButtonDesc.size(); ++i)
|
||||||
|
{
|
||||||
|
delete MainButtonDesc[i];
|
||||||
|
delete MainButtonDescOver[i];
|
||||||
|
MainButton[i]->SetLabel(NULL, 1);
|
||||||
|
MainButton[i]->SetLabelOver(NULL, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsNetworkInit())
|
||||||
|
HaltNetworkThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HomebrewBrowser::AddMainButtons()
|
||||||
|
{
|
||||||
|
HaltGui();
|
||||||
|
|
||||||
|
for(u32 i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
if(IconImgData[i])
|
||||||
|
delete IconImgData[i];
|
||||||
|
if(IconImg[i])
|
||||||
|
delete IconImg[i];
|
||||||
|
IconImgData[i] = NULL;
|
||||||
|
IconImg[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(u32 i = 0; i < MainButton.size(); ++i)
|
||||||
|
MainButton[i]->SetIcon(NULL);
|
||||||
|
|
||||||
|
char iconpath[200];
|
||||||
|
int FirstItem = currentPage*DISPLAY_BUTTONS;
|
||||||
|
|
||||||
|
for(int i = FirstItem, n = 0; i < (int) MainButton.size() && i < FirstItem+DISPLAY_BUTTONS; ++i, ++n)
|
||||||
|
{
|
||||||
|
snprintf(iconpath, sizeof(iconpath), "%sicon.png", HomebrewList->GetFilepath(i));
|
||||||
|
IconImgData[n] = new GuiImageData(iconpath);
|
||||||
|
IconImg[n] = new GuiImage(IconImgData[n]);
|
||||||
|
IconImg[n]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
IconImg[n]->SetPosition(12, 0);
|
||||||
|
IconImg[n]->SetScale(0.95);
|
||||||
|
MainButton[i]->SetIcon(IconImg[n]);
|
||||||
|
}
|
||||||
|
|
||||||
|
FlyingButtonsMenu::AddMainButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HomebrewBrowser::SetupMainButtons()
|
||||||
|
{
|
||||||
|
HomebrewXML MetaXML;
|
||||||
|
char metapath[200];
|
||||||
|
|
||||||
|
for(int i = 0; i < HomebrewList->GetFilecount(); ++i)
|
||||||
|
{
|
||||||
|
const char * HomebrewName = NULL;
|
||||||
|
snprintf(metapath, sizeof(metapath), "%smeta.xml", HomebrewList->GetFilepath(i));
|
||||||
|
|
||||||
|
if (MetaXML.LoadHomebrewXMLData(metapath) > 0)
|
||||||
|
{
|
||||||
|
HomebrewName = MetaXML.GetName();
|
||||||
|
MainButtonDesc[i]->SetText(MetaXML.GetShortDescription());
|
||||||
|
MainButtonDescOver[i]->SetText(MetaXML.GetShortDescription());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const char * shortpath = strrchr(HomebrewList->GetFilename(i), '/');
|
||||||
|
if(shortpath)
|
||||||
|
{
|
||||||
|
snprintf(metapath, sizeof(metapath), "%s/%s", shortpath, HomebrewList->GetFilename(i));
|
||||||
|
HomebrewName = metapath;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
HomebrewName = HomebrewList->GetFilename(i);
|
||||||
|
MainButtonDesc[i]->SetText(" ");
|
||||||
|
MainButtonDescOver[i]->SetText(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
SetMainButton(i, HomebrewName, MainButtonImgData, MainButtonImgOverData);
|
||||||
|
|
||||||
|
MainButtonTxt[i]->SetFontSize(18);
|
||||||
|
MainButtonTxt[i]->SetMaxWidth(MainButtonImgData->GetWidth() - 150, DOTTED);
|
||||||
|
MainButtonTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
MainButtonTxt[i]->SetPosition(148, -12);
|
||||||
|
MainButton[i]->SetLabel(MainButtonDesc[i], 1);
|
||||||
|
MainButton[i]->SetLabelOver(MainButtonDescOver[i], 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int HomebrewBrowser::MainLoop()
|
||||||
|
{
|
||||||
|
if (IsNetworkInit() && wifiNotSet)
|
||||||
|
{
|
||||||
|
wifiToolTip->SetText(GetNetworkIP());
|
||||||
|
wifiBtn->SetAlpha(255);
|
||||||
|
wifiBtn->SetToolTip(wifiToolTip, 0, -50, 0, 5);
|
||||||
|
wifiNotSet = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(wifiBtn->GetState() == STATE_CLICKED)
|
||||||
|
{
|
||||||
|
ResumeNetworkWait();
|
||||||
|
wifiBtn->ResetState();
|
||||||
|
}
|
||||||
|
else if(channelBtn->GetState() == STATE_CLICKED)
|
||||||
|
{
|
||||||
|
SetState(STATE_DISABLED);
|
||||||
|
TitleBrowser();
|
||||||
|
SetState(STATE_DEFAULT);
|
||||||
|
channelBtn->ResetState();
|
||||||
|
}
|
||||||
|
else if (infilesize > 0)
|
||||||
|
{
|
||||||
|
int menu = ReceiveFile();
|
||||||
|
if(menu != MENU_NONE)
|
||||||
|
return menu;
|
||||||
|
CloseConnection();
|
||||||
|
ResumeNetworkWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
return FlyingButtonsMenu::MainLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Callback for MainButton clicked
|
||||||
|
void HomebrewBrowser::MainButtonClicked(int button)
|
||||||
|
{
|
||||||
|
HomebrewXML MetaXML;
|
||||||
|
char metapath[200];
|
||||||
|
snprintf(metapath, sizeof(metapath), "%smeta.xml", HomebrewList->GetFilepath(button));
|
||||||
|
MetaXML.LoadHomebrewXMLData(metapath);
|
||||||
|
|
||||||
|
u64 filesize = HomebrewList->GetFilesize(button);
|
||||||
|
|
||||||
|
wString HomebrewName(MainButtonTxt[button]->GetText());
|
||||||
|
|
||||||
|
int choice = HBCWindowPrompt(HomebrewName.toUTF8().c_str(), MetaXML.GetCoder(), MetaXML.GetVersion(),
|
||||||
|
MetaXML.GetReleasedate(), MetaXML.GetLongDescription(), IconImgData[button % 4], filesize);
|
||||||
|
|
||||||
|
if (choice == 1)
|
||||||
|
{
|
||||||
|
char homebrewpath[200];
|
||||||
|
snprintf(homebrewpath, sizeof(homebrewpath), "%s%s", HomebrewList->GetFilepath(button), HomebrewList->GetFilename(button));
|
||||||
|
BootHomebrew(homebrewpath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int HomebrewBrowser::ReceiveFile()
|
||||||
|
{
|
||||||
|
char filesizetxt[50];
|
||||||
|
char temp[50];
|
||||||
|
u32 filesize = 0;
|
||||||
|
|
||||||
|
if (infilesize < MB_SIZE)
|
||||||
|
snprintf(filesizetxt, sizeof(filesizetxt), tr( "Incoming file %0.2fKB" ), infilesize / KB_SIZE);
|
||||||
|
else snprintf(filesizetxt, sizeof(filesizetxt), tr( "Incoming file %0.2fMB" ), infilesize / MB_SIZE);
|
||||||
|
|
||||||
|
snprintf(temp, sizeof(temp), tr( "Load file from: %s ?" ), GetIncommingIP());
|
||||||
|
|
||||||
|
int choice = WindowPrompt(filesizetxt, temp, tr( "OK" ), tr( "Cancel" ));
|
||||||
|
|
||||||
|
if (choice == 0)
|
||||||
|
return MENU_NONE;
|
||||||
|
|
||||||
|
u32 read = 0;
|
||||||
|
int len = NETWORKBLOCKSIZE;
|
||||||
|
filesize = infilesize;
|
||||||
|
u8 * buffer = (u8 *) malloc(infilesize);
|
||||||
|
if(!buffer)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Not enough memory." ), 0, tr( "OK" ));
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool error = false;
|
||||||
|
while (read < infilesize)
|
||||||
|
{
|
||||||
|
ShowProgress(tr( "Receiving file from:" ), GetIncommingIP(), NULL, read, infilesize, true);
|
||||||
|
|
||||||
|
if (infilesize - read < (u32) len)
|
||||||
|
len = infilesize - read;
|
||||||
|
else len = NETWORKBLOCKSIZE;
|
||||||
|
|
||||||
|
int result = network_read(buffer+read, len);
|
||||||
|
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Error while transfering data." ), 0, tr( "OK" ));
|
||||||
|
free(buffer);
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
read += result;
|
||||||
|
}
|
||||||
|
|
||||||
|
char filename[101];
|
||||||
|
network_read((u8*) &filename, 100);
|
||||||
|
|
||||||
|
// Do we need to unzip this thing?
|
||||||
|
if (wiiloadVersion[0] > 0 || wiiloadVersion[1] > 4)
|
||||||
|
{
|
||||||
|
// We need to unzip...
|
||||||
|
if (buffer[0] == 'P' && buffer[1] == 'K' && buffer[2] == 0x03 && buffer[3] == 0x04)
|
||||||
|
{
|
||||||
|
// It's a zip file, unzip to the apps directory
|
||||||
|
// Zip archive, ask for permission to install the zip
|
||||||
|
char zippath[255];
|
||||||
|
sprintf((char *) &zippath, "%s%s", Settings.homebrewapps_path, filename);
|
||||||
|
|
||||||
|
FILE *fp = fopen(zippath, "wb");
|
||||||
|
if (!fp)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Error writing the data." ), 0, tr( "OK" ));
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite(buffer, 1, infilesize, fp);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
free(buffer);
|
||||||
|
buffer = NULL;
|
||||||
|
|
||||||
|
// Now unzip the zip file...
|
||||||
|
unzFile uf = unzOpen(zippath);
|
||||||
|
if (uf == NULL)
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Error while opening the zip." ), 0, tr( "OK" ));
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
extractZip(uf, 0, 1, 0, Settings.homebrewapps_path);
|
||||||
|
unzCloseCurrentFile(uf);
|
||||||
|
|
||||||
|
remove(zippath);
|
||||||
|
|
||||||
|
WindowPrompt(tr( "Success:" ),
|
||||||
|
tr( "Uploaded ZIP file installed to homebrew directory." ), tr( "OK" ));
|
||||||
|
|
||||||
|
// Reload this menu here...
|
||||||
|
return MENU_HOMEBREWBROWSE;
|
||||||
|
}
|
||||||
|
else if (uncfilesize != 0) // if uncfilesize == 0, it's not compressed
|
||||||
|
{
|
||||||
|
// It's compressed, uncompress
|
||||||
|
u8 *unc = (u8 *) malloc(uncfilesize);
|
||||||
|
uLongf f = uncfilesize;
|
||||||
|
error = uncompress(unc, &f, buffer, infilesize) != Z_OK;
|
||||||
|
uncfilesize = f;
|
||||||
|
filesize = uncfilesize;
|
||||||
|
|
||||||
|
free(buffer);
|
||||||
|
buffer = unc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyHomebrewMemory(buffer, 0, filesize);
|
||||||
|
free(buffer);
|
||||||
|
|
||||||
|
ProgressStop();
|
||||||
|
|
||||||
|
if (error || read != infilesize || strcasestr(filename, ".dol") || strcasestr(filename, ".elf"))
|
||||||
|
{
|
||||||
|
WindowPrompt(tr( "Error:" ), tr( "No data could be read." ), tr( "OK" ));
|
||||||
|
FreeHomebrewBuffer();
|
||||||
|
return MENU_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CloseConnection();
|
||||||
|
|
||||||
|
AddBootArgument(filename);
|
||||||
|
|
||||||
|
return BootHomebrewFromMem();
|
||||||
|
}
|
63
source/homebrewboot/HomebrewBrowser.hpp
Normal file
63
source/homebrewboot/HomebrewBrowser.hpp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
* Copyright (C) 2010
|
||||||
|
* by Dimok
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any
|
||||||
|
* damages arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any
|
||||||
|
* purpose, including commercial applications, and to alter it and
|
||||||
|
* redistribute it freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you
|
||||||
|
* must not claim that you wrote the original software. If you use
|
||||||
|
* this software in a product, an acknowledgment in the product
|
||||||
|
* documentation would be appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and
|
||||||
|
* must not be misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
***************************************************************************/
|
||||||
|
#ifndef HOMEBREWBROWSER_HPP_
|
||||||
|
#define HOMEBREWBROWSER_HPP_
|
||||||
|
|
||||||
|
#include "settings/menus/FlyingButtonsMenu.hpp"
|
||||||
|
#include "HomebrewFiles.h"
|
||||||
|
|
||||||
|
#define DISPLAY_BUTTONS 4
|
||||||
|
|
||||||
|
class HomebrewBrowser : public FlyingButtonsMenu
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HomebrewBrowser();
|
||||||
|
~HomebrewBrowser();
|
||||||
|
virtual int MainLoop();
|
||||||
|
protected:
|
||||||
|
void MainButtonClicked(int index);
|
||||||
|
int ReceiveFile();
|
||||||
|
virtual void CreateSettingsMenu(int index) { MainButtonClicked(index); };
|
||||||
|
virtual void DeleteSettingsMenu() { };
|
||||||
|
virtual void SetupMainButtons();
|
||||||
|
virtual void AddMainButtons();
|
||||||
|
|
||||||
|
HomebrewFiles * HomebrewList;
|
||||||
|
GuiImageData * IconImgData[DISPLAY_BUTTONS];
|
||||||
|
GuiImage * IconImg[DISPLAY_BUTTONS];
|
||||||
|
std::vector<GuiText *> MainButtonDesc;
|
||||||
|
std::vector<GuiText *> MainButtonDescOver;
|
||||||
|
|
||||||
|
bool wifiNotSet;
|
||||||
|
GuiTooltip * wifiToolTip;
|
||||||
|
GuiImageData * wifiImgData;
|
||||||
|
GuiImage * wifiImg;
|
||||||
|
GuiButton * wifiBtn;
|
||||||
|
|
||||||
|
GuiImageData * channelImgData;
|
||||||
|
GuiImage * channelBtnImg;
|
||||||
|
GuiButton * channelBtn;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -115,11 +115,6 @@ unsigned int HomebrewFiles::GetFilesize(int ind)
|
|||||||
else return FileInfo[ind].FileSize;
|
else return FileInfo[ind].FileSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
int HomebrewFiles::GetFilecount()
|
|
||||||
{
|
|
||||||
return filecount;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ListCompare(const void *a, const void *b)
|
static int ListCompare(const void *a, const void *b)
|
||||||
{
|
{
|
||||||
FileInfos *ab = (FileInfos*) a;
|
FileInfos *ab = (FileInfos*) a;
|
||||||
|
@ -35,7 +35,7 @@ class HomebrewFiles
|
|||||||
//!\param list index
|
//!\param list index
|
||||||
unsigned int GetFilesize(int index);
|
unsigned int GetFilesize(int index);
|
||||||
//! Get the filecount of the whole list
|
//! Get the filecount of the whole list
|
||||||
int GetFilecount();
|
int GetFilecount() { return filecount; };
|
||||||
//! Sort list by filepath
|
//! Sort list by filepath
|
||||||
void SortList();
|
void SortList();
|
||||||
protected:
|
protected:
|
||||||
|
@ -13,16 +13,6 @@
|
|||||||
|
|
||||||
#define ENTRIE_SIZE 8192
|
#define ENTRIE_SIZE 8192
|
||||||
|
|
||||||
/* Initializes a new instance of the HomebrewXML class. */
|
|
||||||
HomebrewXML::HomebrewXML()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finalizes an instance of the HomebrewXML class. */
|
|
||||||
HomebrewXML::~HomebrewXML()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* qparam filename Filepath of the XML file */
|
/* qparam filename Filepath of the XML file */
|
||||||
int HomebrewXML::LoadHomebrewXMLData(const char* filename)
|
int HomebrewXML::LoadHomebrewXMLData(const char* filename)
|
||||||
{
|
{
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
class HomebrewXML
|
class HomebrewXML
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
HomebrewXML();
|
HomebrewXML() { };
|
||||||
~HomebrewXML();
|
HomebrewXML(const char* filename) { LoadHomebrewXMLData(filename); };
|
||||||
|
|
||||||
int LoadHomebrewXMLData(const char* filename);
|
int LoadHomebrewXMLData(const char* filename);
|
||||||
|
|
||||||
|
@ -22,17 +22,17 @@
|
|||||||
/**
|
/**
|
||||||
* Constructor for the GuiCustomOptionBrowser class.
|
* Constructor for the GuiCustomOptionBrowser class.
|
||||||
*/
|
*/
|
||||||
GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * custombg, int scrollon, int col2)
|
GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * custombg)
|
||||||
{
|
{
|
||||||
width = w;
|
width = w;
|
||||||
height = h;
|
height = h;
|
||||||
options = l;
|
options = l;
|
||||||
scrollbaron = scrollon;
|
|
||||||
selectable = true;
|
selectable = true;
|
||||||
listOffset = this->FindMenuItem(-1, 1);
|
|
||||||
selectedItem = 0;
|
selectedItem = 0;
|
||||||
focus = 1; // allow focus
|
focus = 1; // allow focus
|
||||||
coL2 = col2;
|
coL2 = 50;
|
||||||
|
scrollbaron = false;
|
||||||
|
listOffset = 0;
|
||||||
|
|
||||||
trigA = new GuiTrigger;
|
trigA = new GuiTrigger;
|
||||||
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
|
||||||
@ -105,17 +105,17 @@ GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, OptionList * l, con
|
|||||||
|
|
||||||
for (int i = 0; i < PAGESIZE; i++)
|
for (int i = 0; i < PAGESIZE; i++)
|
||||||
{
|
{
|
||||||
optionTxt[i] = new GuiText(options->GetName(i), 20, Theme.settingstext);
|
optionTxt[i] = new GuiText((wchar_t *) NULL, 20, Theme.settingstext);
|
||||||
optionTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
optionTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
optionTxt[i]->SetPosition(24, 0);
|
optionTxt[i]->SetPosition(24, 0);
|
||||||
optionTxt[i]->SetMaxWidth(bgOptionsImg->GetWidth() - (coL2 + 24), DOTTED);
|
optionTxt[i]->SetMaxWidth(bgOptionsImg->GetWidth() - (coL2 + 24), DOTTED);
|
||||||
|
|
||||||
optionBg[i] = new GuiImage(bgOptionsEntry);
|
optionBg[i] = new GuiImage(bgOptionsEntry);
|
||||||
|
|
||||||
optionVal[i] = new GuiText((char *) NULL, 20, Theme.settingstext);
|
optionVal[i] = new GuiText((wchar_t *) NULL, 20, Theme.settingstext);
|
||||||
optionVal[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
optionVal[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
|
||||||
optionValOver[i] = new GuiText((char *) NULL, 20, Theme.settingstext);
|
optionValOver[i] = new GuiText((wchar_t *) NULL, 20, Theme.settingstext);
|
||||||
optionValOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
optionValOver[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
|
||||||
|
|
||||||
optionBtn[i] = new GuiButton(width - 28, GAMESELECTSIZE);
|
optionBtn[i] = new GuiButton(width - 28, GAMESELECTSIZE);
|
||||||
@ -128,9 +128,7 @@ GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, OptionList * l, con
|
|||||||
optionBtn[i]->SetRumble(false);
|
optionBtn[i]->SetRumble(false);
|
||||||
optionBtn[i]->SetTrigger(trigA);
|
optionBtn[i]->SetTrigger(trigA);
|
||||||
optionBtn[i]->SetSoundClick(btnSoundClick);
|
optionBtn[i]->SetSoundClick(btnSoundClick);
|
||||||
|
|
||||||
}
|
}
|
||||||
UpdateListEntries();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -199,31 +197,28 @@ void GuiCustomOptionBrowser::ResetState()
|
|||||||
|
|
||||||
int GuiCustomOptionBrowser::GetClickedOption()
|
int GuiCustomOptionBrowser::GetClickedOption()
|
||||||
{
|
{
|
||||||
int found = -1;
|
|
||||||
for (int i = 0; i < PAGESIZE; i++)
|
for (int i = 0; i < PAGESIZE; i++)
|
||||||
{
|
{
|
||||||
if (optionBtn[i]->GetState() == STATE_CLICKED)
|
if (optionBtn[i]->GetState() == STATE_CLICKED)
|
||||||
{
|
{
|
||||||
optionBtn[i]->SetState(STATE_SELECTED);
|
optionBtn[i]->SetState(STATE_SELECTED);
|
||||||
found = optionIndex[i];
|
return optionIndex[i];
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return found;
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GuiCustomOptionBrowser::GetSelectedOption()
|
int GuiCustomOptionBrowser::GetSelectedOption()
|
||||||
{
|
{
|
||||||
int found = -1;
|
|
||||||
for (int i = 0; i < PAGESIZE; i++)
|
for (int i = 0; i < PAGESIZE; i++)
|
||||||
{
|
{
|
||||||
if (optionBtn[i]->GetState() == STATE_SELECTED)
|
if (optionBtn[i]->GetState() == STATE_SELECTED)
|
||||||
{
|
{
|
||||||
found = optionIndex[i];
|
return optionIndex[i];
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return found;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiCustomOptionBrowser::SetClickable(bool enable)
|
void GuiCustomOptionBrowser::SetClickable(bool enable)
|
||||||
@ -234,11 +229,6 @@ void GuiCustomOptionBrowser::SetClickable(bool enable)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiCustomOptionBrowser::SetScrollbar(int enable)
|
|
||||||
{
|
|
||||||
scrollbaron = enable;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GuiCustomOptionBrowser::SetOffset(int optionnumber)
|
void GuiCustomOptionBrowser::SetOffset(int optionnumber)
|
||||||
{
|
{
|
||||||
listOffset = optionnumber;
|
listOffset = optionnumber;
|
||||||
@ -259,7 +249,8 @@ int GuiCustomOptionBrowser::FindMenuItem(int currentItem, int direction)
|
|||||||
|
|
||||||
if (strlen(options->GetName(nextItem)) > 0)
|
if (strlen(options->GetName(nextItem)) > 0)
|
||||||
return nextItem;
|
return nextItem;
|
||||||
else return FindMenuItem(nextItem, direction);
|
|
||||||
|
return FindMenuItem(nextItem, direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -283,7 +274,7 @@ void GuiCustomOptionBrowser::Draw()
|
|||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scrollbaron == 1)
|
if (PAGESIZE < options->GetLength())
|
||||||
{
|
{
|
||||||
scrollbarImg->Draw();
|
scrollbarImg->Draw();
|
||||||
arrowUpBtn->Draw();
|
arrowUpBtn->Draw();
|
||||||
@ -295,6 +286,7 @@ void GuiCustomOptionBrowser::Draw()
|
|||||||
|
|
||||||
void GuiCustomOptionBrowser::UpdateListEntries()
|
void GuiCustomOptionBrowser::UpdateListEntries()
|
||||||
{
|
{
|
||||||
|
LOCK(this);
|
||||||
scrollbaron = options->GetLength() > PAGESIZE;
|
scrollbaron = options->GetLength() > PAGESIZE;
|
||||||
if (listOffset < 0) listOffset = this->FindMenuItem(-1, 1);
|
if (listOffset < 0) listOffset = this->FindMenuItem(-1, 1);
|
||||||
int next = listOffset;
|
int next = listOffset;
|
||||||
@ -324,7 +316,10 @@ void GuiCustomOptionBrowser::UpdateListEntries()
|
|||||||
optionBtn[i]->SetState(STATE_DISABLED);
|
optionBtn[i]->SetState(STATE_DISABLED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (coL2 < (24 + maxNameWidth + 16)) coL2 = 24 + maxNameWidth + 16;
|
|
||||||
|
if (coL2 < (24 + maxNameWidth + 16))
|
||||||
|
coL2 = 24 + maxNameWidth + 16;
|
||||||
|
|
||||||
for (int i = 0; i < PAGESIZE; i++)
|
for (int i = 0; i < PAGESIZE; i++)
|
||||||
{
|
{
|
||||||
if (optionBtn[i]->GetState() != STATE_DISABLED)
|
if (optionBtn[i]->GetState() != STATE_DISABLED)
|
||||||
@ -340,18 +335,12 @@ void GuiCustomOptionBrowser::UpdateListEntries()
|
|||||||
|
|
||||||
void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
||||||
{
|
{
|
||||||
int next, prev, lang = options->GetLength();
|
|
||||||
|
|
||||||
if (state == STATE_DISABLED || !t) return;
|
if (state == STATE_DISABLED || !t) return;
|
||||||
|
|
||||||
if (options->IsChanged())
|
int next, prev, length = options->GetLength();
|
||||||
{
|
|
||||||
coL2 = 0;
|
|
||||||
UpdateListEntries();
|
|
||||||
}
|
|
||||||
int old_listOffset = listOffset;
|
int old_listOffset = listOffset;
|
||||||
|
|
||||||
if (scrollbaron == 1)
|
if (length < PAGESIZE)
|
||||||
{
|
{
|
||||||
// update the location of the scroll box based on the position in the option list
|
// update the location of the scroll box based on the position in the option list
|
||||||
arrowUpBtn->Update(t);
|
arrowUpBtn->Update(t);
|
||||||
@ -359,11 +348,14 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
scrollbarBoxBtn->Update(t);
|
scrollbarBoxBtn->Update(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(options->IsChanged())
|
||||||
|
UpdateListEntries();
|
||||||
|
|
||||||
next = listOffset;
|
next = listOffset;
|
||||||
|
|
||||||
u32 buttonshold = ButtonsHold();
|
if (!(t->wpad.btns_h & WPAD_BUTTON_UP || t->wpad.btns_h & WPAD_BUTTON_DOWN ||
|
||||||
|
t->wpad.btns_h & WPAD_CLASSIC_BUTTON_UP || t->wpad.btns_h & WPAD_CLASSIC_BUTTON_DOWN ||
|
||||||
if (buttonshold != WPAD_BUTTON_UP && buttonshold != WPAD_BUTTON_DOWN)
|
t->pad.btns_h & PAD_BUTTON_UP || t->pad.btns_h & PAD_BUTTON_DOWN))
|
||||||
{
|
{
|
||||||
for (int i = 0; i < PAGESIZE; i++)
|
for (int i = 0; i < PAGESIZE; i++)
|
||||||
{
|
{
|
||||||
@ -432,11 +424,11 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scrollbaron == 1)
|
if (!scrollbaron)
|
||||||
{
|
return;
|
||||||
|
|
||||||
if (arrowDownBtn->GetState() == STATE_CLICKED || arrowDownBtn->GetState() == STATE_HELD)
|
if (arrowDownBtn->GetState() == STATE_CLICKED || arrowDownBtn->GetState() == STATE_HELD)
|
||||||
{
|
{
|
||||||
|
|
||||||
next = this->FindMenuItem(optionIndex[selectedItem], 1);
|
next = this->FindMenuItem(optionIndex[selectedItem], 1);
|
||||||
|
|
||||||
if (next >= 0)
|
if (next >= 0)
|
||||||
@ -455,7 +447,8 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
scrollbarBoxBtn->Draw();
|
scrollbarBoxBtn->Draw();
|
||||||
usleep(35000);
|
usleep(35000);
|
||||||
}
|
}
|
||||||
if (buttonshold != WPAD_BUTTON_A)
|
if (!(t->wpad.btns_h & WPAD_BUTTON_A || t->wpad.btns_h & WPAD_CLASSIC_BUTTON_A ||
|
||||||
|
t->pad.btns_h & PAD_BUTTON_A))
|
||||||
{
|
{
|
||||||
arrowDownBtn->ResetState();
|
arrowDownBtn->ResetState();
|
||||||
}
|
}
|
||||||
@ -480,7 +473,8 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
scrollbarBoxBtn->Draw();
|
scrollbarBoxBtn->Draw();
|
||||||
usleep(35000);
|
usleep(35000);
|
||||||
}
|
}
|
||||||
if (buttonshold != WPAD_BUTTON_A)
|
if (!(t->wpad.btns_h & WPAD_BUTTON_A || t->wpad.btns_h & WPAD_CLASSIC_BUTTON_A ||
|
||||||
|
t->pad.btns_h & PAD_BUTTON_A))
|
||||||
{
|
{
|
||||||
arrowUpBtn->ResetState();
|
arrowUpBtn->ResetState();
|
||||||
}
|
}
|
||||||
@ -493,30 +487,30 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
|
|
||||||
int position = t->wpad.ir.y - 50 - scrollbarBoxBtn->GetTop();
|
int position = t->wpad.ir.y - 50 - scrollbarBoxBtn->GetTop();
|
||||||
|
|
||||||
listOffset = (position * lang) / 180 - selectedItem;
|
listOffset = (position * length) / 180 - selectedItem;
|
||||||
|
|
||||||
if (listOffset <= 0)
|
if (listOffset <= 0)
|
||||||
{
|
{
|
||||||
listOffset = 0;
|
listOffset = 0;
|
||||||
selectedItem = 0;
|
selectedItem = 0;
|
||||||
}
|
}
|
||||||
else if (listOffset + PAGESIZE >= lang)
|
else if (listOffset + PAGESIZE >= length)
|
||||||
{
|
{
|
||||||
listOffset = lang - PAGESIZE;
|
listOffset = length - PAGESIZE;
|
||||||
selectedItem = PAGESIZE - 1;
|
selectedItem = PAGESIZE - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int positionbar = 237 * (listOffset + selectedItem) / lang;
|
int positionbar = 237 * (listOffset + selectedItem) / length;
|
||||||
|
|
||||||
if (positionbar > 216) positionbar = 216;
|
if (positionbar > 216) positionbar = 216;
|
||||||
scrollbarBoxBtn->SetPosition(width / 2 - 18 + 7, positionbar + 8);
|
scrollbarBoxBtn->SetPosition(width / 2 - 18 + 7, positionbar + 8);
|
||||||
|
|
||||||
if (t->Right())
|
if (t->Right())
|
||||||
{
|
{
|
||||||
if (listOffset < lang && lang > PAGESIZE)
|
if (listOffset < length && length > PAGESIZE)
|
||||||
{
|
{
|
||||||
listOffset = listOffset + PAGESIZE;
|
listOffset = listOffset + PAGESIZE;
|
||||||
if (listOffset + PAGESIZE >= lang) listOffset = lang - PAGESIZE;
|
if (listOffset + PAGESIZE >= length) listOffset = length - PAGESIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (t->Left())
|
else if (t->Left())
|
||||||
@ -527,9 +521,9 @@ void GuiCustomOptionBrowser::Update(GuiTrigger * t)
|
|||||||
if (listOffset < 0) listOffset = 0;
|
if (listOffset < 0) listOffset = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (old_listOffset != listOffset) UpdateListEntries();
|
if (old_listOffset != listOffset)
|
||||||
|
UpdateListEntries();
|
||||||
|
|
||||||
if (updateCB) updateCB(this);
|
if (updateCB) updateCB(this);
|
||||||
}
|
}
|
||||||
|
@ -8,13 +8,12 @@
|
|||||||
class GuiCustomOptionBrowser: public GuiElement
|
class GuiCustomOptionBrowser: public GuiElement
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * background, int scrollbar, int col2);
|
GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * background);
|
||||||
~GuiCustomOptionBrowser();
|
~GuiCustomOptionBrowser();
|
||||||
int FindMenuItem(int c, int d);
|
int FindMenuItem(int c, int d);
|
||||||
int GetClickedOption();
|
int GetClickedOption();
|
||||||
int GetSelectedOption();
|
int GetSelectedOption();
|
||||||
void SetClickable(bool enable);
|
void SetClickable(bool enable);
|
||||||
void SetScrollbar(int enable);
|
|
||||||
void SetOffset(int optionnumber);
|
void SetOffset(int optionnumber);
|
||||||
void ResetState();
|
void ResetState();
|
||||||
void SetFocus(int f);
|
void SetFocus(int f);
|
||||||
@ -25,7 +24,7 @@ class GuiCustomOptionBrowser: public GuiElement
|
|||||||
int selectedItem;
|
int selectedItem;
|
||||||
int listOffset;
|
int listOffset;
|
||||||
int coL2;
|
int coL2;
|
||||||
int scrollbaron;
|
bool scrollbaron;
|
||||||
|
|
||||||
OptionList * options;
|
OptionList * options;
|
||||||
int optionIndex[PAGESIZE];
|
int optionIndex[PAGESIZE];
|
||||||
|
@ -97,7 +97,7 @@ void HaltGui()
|
|||||||
|
|
||||||
// wait for thread to finish
|
// wait for thread to finish
|
||||||
while (!LWP_ThreadIsSuspended(guithread))
|
while (!LWP_ThreadIsSuspended(guithread))
|
||||||
usleep(50);
|
usleep(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -71,7 +71,7 @@ int SelectPartitionMenu()
|
|||||||
1);
|
1);
|
||||||
exitBtn.SetTrigger(&trigHome);
|
exitBtn.SetTrigger(&trigHome);
|
||||||
|
|
||||||
GuiCustomOptionBrowser optionBrowser(396, 280, &options, "bg_options_settings.png", 0, 10);
|
GuiCustomOptionBrowser optionBrowser(396, 280, &options, "bg_options_settings.png");
|
||||||
optionBrowser.SetPosition(0, 40);
|
optionBrowser.SetPosition(0, 40);
|
||||||
optionBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
|
||||||
|
@ -132,10 +132,7 @@ int DiscBrowse(const char * GameID, char * alternatedname, int alternatedname_si
|
|||||||
cancelBtn.SetLabel(&cancelBtnTxt);
|
cancelBtn.SetLabel(&cancelBtnTxt);
|
||||||
cancelBtn.SetTrigger(&trigB);
|
cancelBtn.SetTrigger(&trigB);
|
||||||
|
|
||||||
u8 scrollbaron = 0;
|
GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, "bg_options_gamesettings.png");
|
||||||
if (dolfilecount > 9) scrollbaron = 1;
|
|
||||||
|
|
||||||
GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, "bg_options_gamesettings.png", dolfilecount > 9 ? 1 : 0, 200);
|
|
||||||
optionBrowser3.SetPosition(0, 90);
|
optionBrowser3.SetPosition(0, 90);
|
||||||
optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
|
||||||
|
@ -422,7 +422,7 @@ void WindowCredits()
|
|||||||
|
|
||||||
creditsWindow.SetEffect(EFFECT_FADE, -30);
|
creditsWindow.SetEffect(EFFECT_FADE, -30);
|
||||||
while (creditsWindow.GetEffect() > 0)
|
while (creditsWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&creditsWindow);
|
mainWindow->Remove(&creditsWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -766,7 +766,7 @@ int WindowPrompt(const char *title, const char *msg, const char *btn1Label, cons
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -1068,16 +1068,16 @@ int WindowExitPrompt()
|
|||||||
}
|
}
|
||||||
homeout->Play();
|
homeout->Play();
|
||||||
while (btn1.GetEffect() > 0)
|
while (btn1.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
homein->Stop();
|
homein->Stop();
|
||||||
delete homein;
|
delete homein;
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
while (homeout->IsPlaying() > 0)
|
while (homeout->IsPlaying() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
homeout->Stop();
|
homeout->Stop();
|
||||||
delete homeout;
|
delete homeout;
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
@ -1415,7 +1415,7 @@ int GameWindowPrompt()
|
|||||||
nameTxt.SetEffect(EFFECT_FADE, -17);
|
nameTxt.SetEffect(EFFECT_FADE, -17);
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
while (nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect())
|
while (nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect())
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
diskImg.SetImage(diskCover);
|
diskImg.SetImage(diskCover);
|
||||||
diskImg.SetBeta(90);
|
diskImg.SetBeta(90);
|
||||||
@ -1439,7 +1439,7 @@ int GameWindowPrompt()
|
|||||||
nameTxt.SetEffect(EFFECT_FADE, -17);
|
nameTxt.SetEffect(EFFECT_FADE, -17);
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
while (nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect())
|
while (nameTxt.GetEffect() > 0 || diskImg.GetBetaRotateEffect())
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
diskImg.SetImage(diskCover);
|
diskImg.SetImage(diskCover);
|
||||||
diskImg.SetBeta(270);
|
diskImg.SetBeta(270);
|
||||||
@ -1486,7 +1486,7 @@ int GameWindowPrompt()
|
|||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
@ -1696,7 +1696,7 @@ int GameWindowPrompt()
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
if (changed != 3 && changed != 4) // changed==3 or changed==4 --> only Halt the GUI
|
if (changed != 3 && changed != 4) // changed==3 or changed==4 --> only Halt the GUI
|
||||||
{
|
{
|
||||||
@ -1853,7 +1853,7 @@ int DiscWait(const char *title, const char *msg, const char *btn1Label, const ch
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -1927,7 +1927,7 @@ int FormatingPartition(const char *title, partitionEntry *entry)
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -2035,7 +2035,7 @@ bool SearchMissingImages(int choice2)
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
@ -2148,7 +2148,7 @@ bool NetworkInitPrompt()
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
@ -3112,7 +3112,7 @@ int ProgressUpdateWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
// promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
//while(promptWindow.GetEffect() > 0) usleep(50);
|
//while(promptWindow.GetEffect() > 0) usleep(100);
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
//mainWindow->Remove(&promptWindow);
|
//mainWindow->Remove(&promptWindow);
|
||||||
@ -3503,7 +3503,7 @@ int ProgressUpdateWindow()
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
@ -3657,7 +3657,7 @@ int CodeDownload(const char *id)
|
|||||||
}
|
}
|
||||||
exit: promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
exit: promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
|
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
@ -3679,16 +3679,8 @@ char * GetMissingFiles()
|
|||||||
* presenting a user with a choice of up to 2 Buttons.
|
* presenting a user with a choice of up to 2 Buttons.
|
||||||
*
|
*
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
/* <name>
|
|
||||||
<coder>
|
|
||||||
<version>
|
|
||||||
<release_date>
|
|
||||||
<short_description>
|
|
||||||
<long_description>
|
|
||||||
SD:/APPS/FTPII/ICON.PNG*/
|
|
||||||
|
|
||||||
int HBCWindowPrompt(const char *name, const char *coder, const char *version, const char *release_date,
|
int HBCWindowPrompt(const char *name, const char *coder, const char *version, const char *release_date,
|
||||||
const char *long_description, const char *iconPath, u64 filesize)
|
const char *long_description, GuiImageData * iconImgData, u64 filesize)
|
||||||
{
|
{
|
||||||
int choice = -1;
|
int choice = -1;
|
||||||
|
|
||||||
@ -3741,21 +3733,9 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
|
|||||||
arrowDownBtn.SetEffectOnOver(EFFECT_SCALE, 50, 130);
|
arrowDownBtn.SetEffectOnOver(EFFECT_SCALE, 50, 130);
|
||||||
arrowDownBtn.SetSoundClick(btnSoundClick2);
|
arrowDownBtn.SetSoundClick(btnSoundClick2);
|
||||||
|
|
||||||
GuiImageData *iconData = NULL;
|
GuiImage *iconImg = new GuiImage(iconImgData);
|
||||||
GuiImage *iconImg = NULL;
|
|
||||||
|
|
||||||
char imgPath[150];
|
|
||||||
snprintf(imgPath, sizeof(imgPath), "%s", iconPath);
|
|
||||||
|
|
||||||
bool iconExist = CheckFile(imgPath);
|
|
||||||
if (iconExist)
|
|
||||||
{
|
|
||||||
//! This does not crash even if there is no file
|
|
||||||
iconData = new GuiImageData(imgPath);
|
|
||||||
iconImg = new GuiImage(iconData);
|
|
||||||
iconImg->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
iconImg->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
|
||||||
iconImg->SetPosition(45, 10);
|
iconImg->SetPosition(45, 10);
|
||||||
}
|
|
||||||
|
|
||||||
GuiImage dialogBoxImg(&dialogBox);
|
GuiImage dialogBoxImg(&dialogBox);
|
||||||
dialogBoxImg.SetSkew(0, -80, 0, -80, 0, 50, 0, 50);
|
dialogBoxImg.SetSkew(0, -80, 0, -80, 0, 50, 0, 50);
|
||||||
@ -3910,11 +3890,14 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
ResumeGui();
|
ResumeGui();
|
||||||
|
|
||||||
|
delete iconImg;
|
||||||
|
|
||||||
return choice;
|
return choice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#ifndef _PROMPTWINDOWS_H_
|
#ifndef _PROMPTWINDOWS_H_
|
||||||
#define _PROMPTWINDOWS_H_
|
#define _PROMPTWINDOWS_H_
|
||||||
|
|
||||||
|
#include "libwiigui/gui.h"
|
||||||
#include "usbloader/partition_usbloader.h"
|
#include "usbloader/partition_usbloader.h"
|
||||||
|
|
||||||
int WindowPrompt(const char *title, const char *msg = NULL, const char * btn1Label = NULL, const char * btn2Label =
|
int WindowPrompt(const char *title, const char *msg = NULL, const char * btn1Label = NULL, const char * btn2Label =
|
||||||
@ -28,6 +29,6 @@ char * GetMissingFiles();
|
|||||||
int WindowScreensaver();
|
int WindowScreensaver();
|
||||||
int CodeDownload(const char *id);
|
int CodeDownload(const char *id);
|
||||||
int HBCWindowPrompt(const char *name, const char *coder, const char *version, const char *release_date,
|
int HBCWindowPrompt(const char *name, const char *coder, const char *version, const char *release_date,
|
||||||
const char *long_description, const char *iconPath, u64 filesize);
|
const char *long_description, GuiImageData * iconImgData, u64 filesize);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -150,10 +150,7 @@ bool TitleSelector(char output[])
|
|||||||
cancelBtn.SetLabel(&cancelBtnTxt);
|
cancelBtn.SetLabel(&cancelBtnTxt);
|
||||||
cancelBtn.SetTrigger(&trigB);
|
cancelBtn.SetTrigger(&trigB);
|
||||||
|
|
||||||
u8 scrollbaron = 0;
|
GuiCustomOptionBrowser optionBrowser4(396, 280, &options4, "bg_options_settings.png");
|
||||||
if (num_titles + 1 > 9) scrollbaron = 1;
|
|
||||||
|
|
||||||
GuiCustomOptionBrowser optionBrowser4(396, 280, &options4, "bg_options_settings.png", scrollbaron, 200);
|
|
||||||
optionBrowser4.SetPosition(0, 90);
|
optionBrowser4.SetPosition(0, 90);
|
||||||
optionBrowser4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
|
||||||
@ -381,10 +378,7 @@ int TitleBrowser()
|
|||||||
cancelBtn.SetLabel(&cancelBtnTxt);
|
cancelBtn.SetLabel(&cancelBtnTxt);
|
||||||
cancelBtn.SetTrigger(&trigB);
|
cancelBtn.SetTrigger(&trigB);
|
||||||
|
|
||||||
u8 scrollbaron = 0;
|
GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, "bg_options_settings.png");
|
||||||
if (total + 1 > 9) scrollbaron = 1;
|
|
||||||
|
|
||||||
GuiCustomOptionBrowser optionBrowser3(396, 280, &options3, "bg_options_gamesettings.png", scrollbaron, 200);
|
|
||||||
optionBrowser3.SetPosition(0, 90);
|
optionBrowser3.SetPosition(0, 90);
|
||||||
optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
|
||||||
|
@ -963,7 +963,7 @@ int showGameInfo(char *ID)
|
|||||||
{
|
{
|
||||||
gameinfoWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 100);
|
gameinfoWindow.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 100);
|
||||||
while (gameinfoWindow.GetEffect() > 0)
|
while (gameinfoWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&gameinfoWindow);
|
mainWindow->Remove(&gameinfoWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -1045,7 +1045,7 @@ int showGameInfo(char *ID)
|
|||||||
{
|
{
|
||||||
gameinfoWindow2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 100);
|
gameinfoWindow2.SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 100);
|
||||||
while (gameinfoWindow2.GetEffect() > 0)
|
while (gameinfoWindow2.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&gameinfoWindow2);
|
mainWindow->Remove(&gameinfoWindow2);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
|
@ -91,7 +91,6 @@ class CSettings
|
|||||||
char dolpath[150];
|
char dolpath[150];
|
||||||
char update_path[150];
|
char update_path[150];
|
||||||
char homebrewapps_path[150];
|
char homebrewapps_path[150];
|
||||||
char selected_homebrew[200];
|
|
||||||
char Cheatcodespath[100];
|
char Cheatcodespath[100];
|
||||||
char TxtCheatcodespath[100];
|
char TxtCheatcodespath[100];
|
||||||
char BcaCodepath[100];
|
char BcaCodepath[100];
|
||||||
|
@ -204,7 +204,7 @@ int MenuLanguageSelect()
|
|||||||
scrollon = 1;
|
scrollon = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiCustomOptionBrowser optionBrowser4( 396, 280, &options2, "bg_options_settings.png", scrollon, 10 );
|
GuiCustomOptionBrowser optionBrowser4( 396, 280, &options2, "bg_options_settings.png");
|
||||||
optionBrowser4.SetPosition( 0, 90 );
|
optionBrowser4.SetPosition( 0, 90 );
|
||||||
optionBrowser4.SetAlignment( ALIGN_CENTRE, ALIGN_TOP );
|
optionBrowser4.SetAlignment( ALIGN_CENTRE, ALIGN_TOP );
|
||||||
|
|
||||||
|
@ -265,6 +265,7 @@ void FlyingButtonsMenu::ShowMenu()
|
|||||||
titleTxt = new GuiText(MenuTitle.c_str(), 28, ( GXColor ) {0, 0, 0, 255});
|
titleTxt = new GuiText(MenuTitle.c_str(), 28, ( GXColor ) {0, 0, 0, 255});
|
||||||
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
titleTxt->SetPosition(0, 40);
|
titleTxt->SetPosition(0, 40);
|
||||||
|
titleTxt->SetMaxWidth(310, SCROLL_HORIZONTAL);
|
||||||
Append(titleTxt);
|
Append(titleTxt);
|
||||||
|
|
||||||
GoLeftImg = new GuiImage(arrow_left);
|
GoLeftImg = new GuiImage(arrow_left);
|
||||||
|
@ -35,18 +35,18 @@ class FlyingButtonsMenu : public GuiWindow
|
|||||||
public:
|
public:
|
||||||
FlyingButtonsMenu(const char * menu_title);
|
FlyingButtonsMenu(const char * menu_title);
|
||||||
~FlyingButtonsMenu();
|
~FlyingButtonsMenu();
|
||||||
int MainLoop();
|
virtual int MainLoop();
|
||||||
void HideMenu();
|
virtual void HideMenu();
|
||||||
void ShowMenu();
|
virtual void ShowMenu();
|
||||||
protected:
|
protected:
|
||||||
virtual void CreateSettingsMenu(int index) { };
|
virtual void CreateSettingsMenu(int index) { };
|
||||||
virtual void DeleteSettingsMenu() { };
|
virtual void DeleteSettingsMenu() { };
|
||||||
virtual void SetupMainButtons() { };
|
virtual void SetupMainButtons() { };
|
||||||
void AddMainButtons();
|
virtual void AddMainButtons();
|
||||||
void ShowButtonsEffects(int effect, int effect_speed);
|
virtual void ShowButtonsEffects(int effect, int effect_speed);
|
||||||
void SlideButtons(int slide_direction);
|
virtual void SlideButtons(int slide_direction);
|
||||||
void SetPageIndicators();
|
virtual void SetPageIndicators();
|
||||||
void SetMainButton(int position, const char * ButtonText, GuiImageData * imageData, GuiImageData * imageOver);
|
virtual void SetMainButton(int position, const char * ButtonText, GuiImageData * imageData, GuiImageData * imageOver);
|
||||||
|
|
||||||
int currentPage;
|
int currentPage;
|
||||||
int returnMenu;
|
int returnMenu;
|
||||||
|
@ -58,13 +58,14 @@ SettingsMenu::SettingsMenu(const char * title, OptionList * opts, int returnTo)
|
|||||||
Append(backBtn);
|
Append(backBtn);
|
||||||
}
|
}
|
||||||
|
|
||||||
optionBrowser = new GuiCustomOptionBrowser(396, 280, Options, "bg_options_settings.png", 0, 150);
|
optionBrowser = new GuiCustomOptionBrowser(396, 280, Options, "bg_options_settings.png");
|
||||||
optionBrowser->SetPosition(0, 90);
|
optionBrowser->SetPosition(0, 90);
|
||||||
optionBrowser->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
optionBrowser->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
|
|
||||||
titleTxt = new GuiText(title, 28, (GXColor) {0, 0, 0, 255});
|
titleTxt = new GuiText(title, 28, (GXColor) {0, 0, 0, 255});
|
||||||
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
titleTxt->SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
|
||||||
titleTxt->SetPosition(0, 40);
|
titleTxt->SetPosition(0, 40);
|
||||||
|
titleTxt->SetMaxWidth(310, SCROLL_HORIZONTAL);
|
||||||
|
|
||||||
Append(optionBrowser);
|
Append(optionBrowser);
|
||||||
Append(titleTxt);
|
Append(titleTxt);
|
||||||
|
@ -171,6 +171,7 @@ RecourceFile Resources::RecourceFiles[] =
|
|||||||
{"lock_gray.png", lock_gray_png, lock_gray_png_size, NULL, 0},
|
{"lock_gray.png", lock_gray_png, lock_gray_png_size, NULL, 0},
|
||||||
{"unlock.png", unlock_png, unlock_png_size, NULL, 0},
|
{"unlock.png", unlock_png, unlock_png_size, NULL, 0},
|
||||||
{"unlock_gray.png", unlock_gray_png, unlock_gray_png_size, NULL, 0},
|
{"unlock_gray.png", unlock_gray_png, unlock_gray_png_size, NULL, 0},
|
||||||
|
{"Channel_btn.png", Channel_btn_png, Channel_btn_png_size, NULL, 0},
|
||||||
{NULL, NULL, 0, NULL, 0}
|
{NULL, NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ static int Theme_Prompt(const char *title, const char *author, GuiImageData *thu
|
|||||||
|
|
||||||
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
|
||||||
while (promptWindow.GetEffect() > 0)
|
while (promptWindow.GetEffect() > 0)
|
||||||
usleep(50);
|
usleep(100);
|
||||||
HaltGui();
|
HaltGui();
|
||||||
mainWindow->Remove(&promptWindow);
|
mainWindow->Remove(&promptWindow);
|
||||||
mainWindow->SetState(STATE_DEFAULT);
|
mainWindow->SetState(STATE_DEFAULT);
|
||||||
@ -576,7 +576,7 @@ int Theme_Downloader()
|
|||||||
currentpage--;
|
currentpage--;
|
||||||
if (currenttheme < 0)
|
if (currenttheme < 0)
|
||||||
{
|
{
|
||||||
currentpage = roundup((ThemesOnPage + 1.0f) / pagesize);
|
currentpage = ceil((ThemesOnPage + 1.0f) / pagesize);
|
||||||
currenttheme = currentpage * pagesize - pagesize;
|
currenttheme = currentpage * pagesize - pagesize;
|
||||||
}
|
}
|
||||||
GoLeftBtn.ResetState();
|
GoLeftBtn.ResetState();
|
||||||
|
Loading…
Reference in New Issue
Block a user