*homebrew xml fix

*replaced all OptionsLists with the one from WiiXplorer
*some other crap i don't remember
This commit is contained in:
dimok321 2010-10-31 09:30:53 +00:00
parent 2570d6dae8
commit bed86339f7
19 changed files with 360 additions and 422 deletions

View File

@ -2,8 +2,8 @@
<app version="1"> <app version="1">
<name> USB Loader GX</name> <name> USB Loader GX</name>
<coder>USB Loader GX Team</coder> <coder>USB Loader GX Team</coder>
<version>1.0 r993</version> <version>1.0 r994</version>
<release_date>201010280642</release_date> <release_date>201010280947</release_date>
<short_description>Loads games from USB-devices</short_description> <short_description>Loads games from USB-devices</short_description>
<long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times. <long_description>USB Loader GX is a libwiigui based USB iso loader with a wii-like GUI. You can install games to your HDDs and boot them with shorter loading times.
The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller. The interactive GUI is completely controllable with WiiMote, Classic Controller or GC Controller.

File diff suppressed because one or more lines are too long

View File

@ -79,14 +79,13 @@ int CheatMenu(const char * gameID)
else break; else break;
case 1: case 1:
int cntcheats = c.getCnt(); int cntcheats = c.getCnt();
customOptionList cheatslst(cntcheats); OptionList cheatslst;
GuiCustomOptionBrowser chtBrowser(400, 280, &cheatslst, "bg_options_settings.png", 1, 90); GuiCustomOptionBrowser chtBrowser(400, 280, &cheatslst, "bg_options_settings.png", 1, 90);
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);
GuiText titleTxt(c.getGameName().c_str(), 28, ( GXColor ) GuiText titleTxt(c.getGameName().c_str(), 28, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetMaxWidth(350, SCROLL_HORIZONTAL); titleTxt.SetMaxWidth(350, SCROLL_HORIZONTAL);
titleTxt.SetPosition(12, 40); titleTxt.SetPosition(12, 40);

View File

@ -212,18 +212,15 @@ int MenuHomebrewBrowse()
GuiImage MainButton2Img(&MainButtonImgData); GuiImage MainButton2Img(&MainButtonImgData);
GuiImage MainButton2ImgOver(&MainButtonImgOverData); GuiImage MainButton2ImgOver(&MainButtonImgOverData);
GuiText MainButton2Txt(MainButtonText, 18, ( GXColor ) GuiText MainButton2Txt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton2Txt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton2Txt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton2Txt.SetPosition(148, -12); MainButton2Txt.SetPosition(148, -12);
MainButton2Txt.SetMaxWidth(MainButton2Img.GetWidth() - 150, DOTTED); MainButton2Txt.SetMaxWidth(MainButton2Img.GetWidth() - 150, DOTTED);
GuiText MainButton2DescTxt(MainButtonText, 18, ( GXColor ) GuiText MainButton2DescTxt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton2DescTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton2DescTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton2DescTxt.SetPosition(148, 15); MainButton2DescTxt.SetPosition(148, 15);
MainButton2DescTxt.SetMaxWidth(MainButton2Img.GetWidth() - 150, DOTTED); MainButton2DescTxt.SetMaxWidth(MainButton2Img.GetWidth() - 150, DOTTED);
GuiText MainButton2DescOverTxt(MainButtonText, 18, ( GXColor ) GuiText MainButton2DescOverTxt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton2DescOverTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton2DescOverTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton2DescOverTxt.SetPosition(148, 15); MainButton2DescOverTxt.SetPosition(148, 15);
MainButton2DescOverTxt.SetMaxWidth(MainButton2Img.GetWidth() - 150, SCROLL_HORIZONTAL); MainButton2DescOverTxt.SetMaxWidth(MainButton2Img.GetWidth() - 150, SCROLL_HORIZONTAL);
@ -242,18 +239,15 @@ int MenuHomebrewBrowse()
GuiImage MainButton3Img(&MainButtonImgData); GuiImage MainButton3Img(&MainButtonImgData);
GuiImage MainButton3ImgOver(&MainButtonImgOverData); GuiImage MainButton3ImgOver(&MainButtonImgOverData);
GuiText MainButton3Txt(MainButtonText, 18, ( GXColor ) GuiText MainButton3Txt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton3Txt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton3Txt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton3Txt.SetPosition(148, -12); MainButton3Txt.SetPosition(148, -12);
MainButton3Txt.SetMaxWidth(MainButton3Img.GetWidth() - 150, DOTTED); MainButton3Txt.SetMaxWidth(MainButton3Img.GetWidth() - 150, DOTTED);
GuiText MainButton3DescTxt(MainButtonText, 18, ( GXColor ) GuiText MainButton3DescTxt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton3DescTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton3DescTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton3DescTxt.SetPosition(148, 15); MainButton3DescTxt.SetPosition(148, 15);
MainButton3DescTxt.SetMaxWidth(MainButton3Img.GetWidth() - 150, DOTTED); MainButton3DescTxt.SetMaxWidth(MainButton3Img.GetWidth() - 150, DOTTED);
GuiText MainButton3DescOverTxt(MainButtonText, 18, ( GXColor ) GuiText MainButton3DescOverTxt(MainButtonText, 18, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton3DescOverTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); MainButton3DescOverTxt.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
MainButton3DescOverTxt.SetPosition(148, 15); MainButton3DescOverTxt.SetPosition(148, 15);
MainButton3DescOverTxt.SetMaxWidth(MainButton3Img.GetWidth() - 150, SCROLL_HORIZONTAL); MainButton3DescOverTxt.SetMaxWidth(MainButton3Img.GetWidth() - 150, SCROLL_HORIZONTAL);
@ -436,11 +430,9 @@ int MenuHomebrewBrowse()
snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset)); snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset));
if (XMLInfo[0].LoadHomebrewXMLData(temp) > 0) if (XMLInfo[0].LoadHomebrewXMLData(temp) > 0)
{ {
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[0].GetName()); MainButton1Txt.SetText(XMLInfo[0].GetName());
MainButton1Txt.SetText(MainButtonText); MainButton1DescTxt.SetText(XMLInfo[0].GetShortDescription());
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[0].GetShortDescription()); MainButton1DescOverTxt.SetText(XMLInfo[0].GetShortDescription());
MainButton1DescTxt.SetText(MainButtonText);
MainButton1DescOverTxt.SetText(MainButtonText);
} }
else else
{ {
@ -462,11 +454,9 @@ int MenuHomebrewBrowse()
snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 1)); snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 1));
if (XMLInfo[1].LoadHomebrewXMLData(temp) > 0) if (XMLInfo[1].LoadHomebrewXMLData(temp) > 0)
{ {
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[1].GetName()); MainButton2Txt.SetText(XMLInfo[1].GetName());
MainButton2Txt.SetText(MainButtonText); MainButton2DescTxt.SetText(XMLInfo[1].GetShortDescription());
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[1].GetShortDescription()); MainButton2DescOverTxt.SetText(XMLInfo[1].GetShortDescription());
MainButton2DescTxt.SetText(MainButtonText);
MainButton2DescOverTxt.SetText(MainButtonText);
} }
else else
{ {
@ -486,13 +476,11 @@ int MenuHomebrewBrowse()
if (buttonsleft > 2) if (buttonsleft > 2)
{ {
snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 2)); snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 2));
if (XMLInfo[3].LoadHomebrewXMLData(temp) > 0) if (XMLInfo[2].LoadHomebrewXMLData(temp) > 0)
{ {
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetName()); MainButton3Txt.SetText(XMLInfo[2].GetName());
MainButton3Txt.SetText(MainButtonText); MainButton3DescTxt.SetText(XMLInfo[2].GetShortDescription());
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetShortDescription()); MainButton3DescOverTxt.SetText(XMLInfo[2].GetShortDescription());
MainButton3DescTxt.SetText(MainButtonText);
MainButton3DescOverTxt.SetText(MainButtonText);
} }
else else
{ {
@ -514,11 +502,9 @@ int MenuHomebrewBrowse()
snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 3)); snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 3));
if (XMLInfo[3].LoadHomebrewXMLData(temp) > 0) if (XMLInfo[3].LoadHomebrewXMLData(temp) > 0)
{ {
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetName()); MainButton4Txt.SetText(XMLInfo[3].GetName());
MainButton4Txt.SetText(MainButtonText); MainButton4DescTxt.SetText(XMLInfo[3].GetShortDescription());
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetShortDescription()); MainButton4DescOverTxt.SetText(XMLInfo[3].GetShortDescription());
MainButton4DescTxt.SetText(MainButtonText);
MainButton4DescOverTxt.SetText(MainButtonText);
} }
else else
{ {
@ -592,11 +578,11 @@ int MenuHomebrewBrowse()
w.Append(&MainButton2); w.Append(&MainButton2);
snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 2)); snprintf(temp, sizeof(temp), "%smeta.xml", HomebrewFiles.GetFilepath(fileoffset + 2));
if (XMLInfo[3].LoadHomebrewXMLData(temp) > 0) if (XMLInfo[2].LoadHomebrewXMLData(temp) > 0)
{ {
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetName()); snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[2].GetName());
MainButton3Txt.SetText(MainButtonText); MainButton3Txt.SetText(MainButtonText);
snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[3].GetShortDescription()); snprintf(MainButtonText, sizeof(MainButtonText), "%s", XMLInfo[2].GetShortDescription());
MainButton3DescTxt.SetText(MainButtonText); MainButton3DescTxt.SetText(MainButtonText);
MainButton3DescOverTxt.SetText(MainButtonText); MainButton3DescOverTxt.SetText(MainButtonText);
} }

View File

@ -0,0 +1,137 @@
/***************************************************************************
* 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.
*
* for WiiXplorer 2010
***************************************************************************/
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <gctypes.h>
#include "OptionList.hpp"
OptionList::OptionList()
{
}
OptionList::~OptionList()
{
ClearList();
}
void OptionList::SetName(int i, const char *format, ...)
{
if(i < (int) name.size())
name[i].clear();
if(!format)
return;
char *tmp=0;
va_list va;
va_start(va, format);
if((vasprintf(&tmp, format, va)>=0) && tmp)
{
if(i >= (int) name.size())
{
Resize(i+1);
}
name[i].assign(tmp);
listChanged = true;
}
va_end(va);
if(tmp)
free(tmp);
}
void OptionList::SetValue(int i, const char *format, ...)
{
if(i < (int) value.size())
value[i].clear();
char *tmp=0;
va_list va;
va_start(va, format);
if((vasprintf(&tmp, format, va)>=0) && tmp)
{
if(i >= (int) value.size())
{
Resize(i+1);
}
value[i].assign(tmp);
listChanged = true;
}
va_end(va);
if(tmp)
free(tmp);
}
const char * OptionList::GetName(int i)
{
if(i < 0 || i >= (int) name.size())
return NULL;
return name.at(i).c_str();
}
const char * OptionList::GetValue(int i)
{
if(i < 0 || i >= (int) value.size())
return NULL;
return value.at(i).c_str();
}
void OptionList::Resize(int size)
{
while(size < (int) name.size())
RemoveOption(name.size()-1);
int oldsize = name.size();
name.resize(oldsize+1);
value.resize(oldsize+1);
}
void OptionList::RemoveOption(int i)
{
if(i < 0 || i >= (int) name.size())
return;
name.erase(name.begin()+i);
value.erase(value.begin()+i);
}
void OptionList::ClearList()
{
name.clear();
value.clear();
std::vector<std::string>().swap(name);
std::vector<std::string>().swap(value);
}

View File

@ -0,0 +1,53 @@
/***************************************************************************
* 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.
*
* for WiiXplorer 2010
***************************************************************************/
#ifndef OPTIONLIST_HPP_
#define OPTIONLIST_HPP_
#include <vector>
#include <string>
class OptionList
{
public:
OptionList();
~OptionList();
void SetName(int i, const char *format, ...) __attribute__((format (printf, 3, 4)));
void SetValue(int i, const char *format, ...) __attribute__((format (printf, 3, 4)));
const char * GetName(int i);
const char * GetValue(int i);
void Resize(int size);
int GetLength() { return name.size(); }
bool IsChanged() { bool ret = listChanged; listChanged = false; return ret;}
void RemoveOption(int i);
void ClearList();
private:
std::vector<std::string> name;
std::vector<std::string> value;
bool listChanged;
};
#endif

View File

@ -45,6 +45,7 @@
#include "video.h" #include "video.h"
#include "filelist.h" #include "filelist.h"
#include "input.h" #include "input.h"
#include "OptionList.hpp"
extern FreeTypeGX *fontSystem; extern FreeTypeGX *fontSystem;
@ -1032,13 +1033,6 @@ class GuiNumpad: public GuiWindow
GuiTrigger * trigB; GuiTrigger * trigB;
}; };
typedef struct _optionlist
{
int length;
char name[MAX_OPTIONS][60];
char value[MAX_OPTIONS][30];
} OptionList;
//!Display a list of menu options //!Display a list of menu options
class GuiOptionBrowser: public GuiElement class GuiOptionBrowser: public GuiElement
{ {

View File

@ -17,131 +17,11 @@
#include <unistd.h> #include <unistd.h>
#define GAMESELECTSIZE 30 #define GAMESELECTSIZE 30
#define OPTION_LIST_PADDING PAGESIZE
customOptionList::customOptionList(int Size)
{
name = value = NULL;
size = 0;
SetSize(Size == 0 ? PAGESIZE : Size);
length = Size;
changed = false;
}
customOptionList::~customOptionList()
{
for (int i = 0; i < size; i++)
{
free(name[i]);
free(value[i]);
}
delete[] name;
delete[] value;
}
void customOptionList::SetLength(int Length) //set number of lines
{
if (Length < 0 || Length == length) return;
if (Length > size) SetSize(Length + OPTION_LIST_PADDING);
if (Length < length)
{
for (int i = Length; i < length; i++)
{
free(name[i]); // clear unused
name[i] = NULL;
free(value[i]);
value[i] = NULL;
}
}
length = Length;
changed = true;
}
void customOptionList::SetSize(int Size) //set number of lines
{
if (Size < 0 || Size == size) return;
if (Size > size)
{
char **newName = new char *[Size];
char **newValue = new char *[Size];
int i;
for (i = 0; i < size; i++)
{
newName[i] = name[i]; // copy
newValue[i] = value[i];
}
for (; i < Size; i++)
{
newName[i] = NULL; // fill rest with NULL
newValue[i] = NULL;
}
delete[] name;
name = newName; // set new
delete[] value;
value = newValue;
size = Size;
}
}
void customOptionList::SetName(int i, const char *format, ...)
{
if (i >= length) SetLength(i + 1);
if (i >= 0 && i < length)
{
if (name[i]) free(name[i]);
name[i] = 0;
va_list va;
va_start( va, format );
vasprintf(&name[i], format, va);
va_end( va );
changed = true;
}
//gprintf("customOptionList::SetName( %d, %s )\n", i, name[i] );
}
void customOptionList::SetValue(int i, const char *format, ...)
{
if (i >= length) SetLength(i + 1);
if (i >= 0 && i < length)
{
char *tmp = 0;
va_list va;
va_start( va, format );
vasprintf(&tmp, format, va);
va_end( va );
if (tmp)
{
if (value[i] && !strcmp(tmp, value[i]))
free(tmp);
else
{
free(value[i]);
value[i] = tmp;
changed = true;
}
}
}
//gprintf("customOptionList::SetValue( %d, %s )\n", i, value[i] );
}
void customOptionList::Clear(bool OnlyValue/*=false*/)
{
for (int i = 0; i < size; i++)
{
if (!OnlyValue)
{
free(name[i]);
name[i] = NULL;
}
free(value[i]);
value[i] = NULL;
}
changed = true;
}
/** /**
* Constructor for the GuiCustomOptionBrowser class. * Constructor for the GuiCustomOptionBrowser class.
*/ */
GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, customOptionList * l, const char * custombg, int scrollon, int col2) GuiCustomOptionBrowser::GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * custombg, int scrollon, int col2)
{ {
width = w; width = w;
height = h; height = h;

View File

@ -1,50 +1,10 @@
#include "gui.h" #include "gui.h"
class customOptionList
{
public:
customOptionList(int Size);
~customOptionList();
void SetLength(int Length);
void SetName(int i, const char *format, ...) __attribute__( ( format ( printf, 3, 4 ) ) );
const char *GetName(int i)
{
if (i >= 0 && i < length && name[i])
return name[i];
else return "";
}
void SetValue(int i, const char *format, ...) __attribute__( ( format ( printf, 3, 4 ) ) );
const char *GetValue(int i)
{
if (i >= 0 && i < length && value[i])
return value[i];
else return "";
}
void Clear(bool OnlyValue = false);
int GetLength()
{
return length;
}
bool IsChanged()
{
bool ret = changed;
changed = false;
return ret;
}
private:
void SetSize(int Size);
int size;
char ** name;
char ** value;
int length;
bool changed;
};
//!Display a list of menu options //!Display a list of menu options
class GuiCustomOptionBrowser: public GuiElement class GuiCustomOptionBrowser: public GuiElement
{ {
public: public:
GuiCustomOptionBrowser(int w, int h, customOptionList * l, const char * background, int scrollbar, int col2); GuiCustomOptionBrowser(int w, int h, OptionList * l, const char * background, int scrollbar, int col2);
~GuiCustomOptionBrowser(); ~GuiCustomOptionBrowser();
int FindMenuItem(int c, int d); int FindMenuItem(int c, int d);
int GetClickedOption(); int GetClickedOption();
@ -64,7 +24,7 @@ class GuiCustomOptionBrowser: public GuiElement
int coL2; int coL2;
int scrollbaron; int scrollbaron;
customOptionList * options; OptionList * options;
int * optionIndex; int * optionIndex;
GuiButton ** optionBtn; GuiButton ** optionBtn;
GuiText ** optionTxt; GuiText ** optionTxt;

View File

@ -223,8 +223,7 @@ GuiOptionBrowser::GuiOptionBrowser(int w, int h, OptionList * l, const char *ima
// optionBg = new GuiImage(bgOptionsEntry); // optionBg = new GuiImage(bgOptionsEntry);
for (int i = 0; i < PAGESIZE; i++) for (int i = 0; i < PAGESIZE; i++)
{ {
optionTxt[i] = new GuiText(options->name[i], 20, ( GXColor ) optionTxt[i] = new GuiText(options->GetName(i), 20, ( GXColor ) {0, 0, 0, 0xff});
{ 0, 0, 0, 0xff});
optionTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); optionTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
optionTxt[i]->SetPosition(24, 0); optionTxt[i]->SetPosition(24, 0);
@ -362,11 +361,12 @@ int GuiOptionBrowser::FindMenuItem(int currentItem, int direction)
{ {
int nextItem = currentItem + direction; int nextItem = currentItem + direction;
if (nextItem < 0 || nextItem >= options->length) return -1; if (nextItem < 0 || nextItem >= options->GetLength()) return -1;
if (strlen(options->name[nextItem]) > 0) if (options->GetName(nextItem) && strlen(options->GetName(nextItem)) > 0)
return nextItem; return nextItem;
else return FindMenuItem(nextItem, direction); else
return FindMenuItem(nextItem, direction);
} }
/** /**
@ -409,7 +409,7 @@ void GuiOptionBrowser::TriggerUpdate()
void GuiOptionBrowser::Update(GuiTrigger * t) void GuiOptionBrowser::Update(GuiTrigger * t)
{ {
LOCK( this ); LOCK( this );
int next, prev, lang = options->length; int next, prev, lang = options->GetLength();
//go to the last game selected //go to the last game selected
if ((loaded == 0) && (startat > 0)) if ((loaded == 0) && (startat > 0))
@ -465,8 +465,8 @@ void GuiOptionBrowser::Update(GuiTrigger * t)
optionBtn[i]->SetState(STATE_DEFAULT); optionBtn[i]->SetState(STATE_DEFAULT);
} }
optionTxt[i]->SetText(options->name[next]); optionTxt[i]->SetText(options->GetName(next));
optionVal[i]->SetText(options->value[next]); optionVal[i]->SetText(options->GetValue(next));
optionIndex[i] = next; optionIndex[i] = next;
next = this->FindMenuItem(next, 1); next = this->FindMenuItem(next, 1);
} }
@ -579,7 +579,7 @@ void GuiOptionBrowser::Update(GuiTrigger * t)
} }
if (scrollbarBoxBtn->GetState() == STATE_HELD && scrollbarBoxBtn->GetStateChan() == t->chan && t->wpad.ir.valid if (scrollbarBoxBtn->GetState() == STATE_HELD && scrollbarBoxBtn->GetStateChan() == t->chan && t->wpad.ir.valid
&& options->length > PAGESIZE) && options->GetLength() > PAGESIZE)
{ {
scrollbarBoxBtn->SetPosition(width / 2 - 18 + 7, 0); scrollbarBoxBtn->SetPosition(width / 2 - 18 + 7, 0);
int position = t->wpad.ir.y - 50 - scrollbarBoxBtn->GetTop(); int position = t->wpad.ir.y - 50 - scrollbarBoxBtn->GetTop();

View File

@ -21,7 +21,6 @@
#include "libwiigui/gui_gamecarousel.h" #include "libwiigui/gui_gamecarousel.h"
#include "libwiigui/gui_searchbar.h" #include "libwiigui/gui_searchbar.h"
#define MAX_CHARACTERS 38
extern u8 * gameScreenTex; extern u8 * gameScreenTex;
extern struct discHdr *dvdheader; extern struct discHdr *dvdheader;
extern u8 mountMethod; extern u8 mountMethod;
@ -53,7 +52,6 @@ static u32 startat = 0;
***************************************************************************/ ***************************************************************************/
int MenuDiscList() int MenuDiscList()
{ {
gprintf("MenuDiscList()\n"); gprintf("MenuDiscList()\n");
gameList.FilterList(); gameList.FilterList();
int offset = MIN( ( int )startat, gameList.size() - 1 ); int offset = MIN( ( int )startat, gameList.size() - 1 );
@ -79,7 +77,6 @@ int MenuDiscList()
int menu = MENU_NONE; int menu = MENU_NONE;
u32 nolist; u32 nolist;
char text[MAX_CHARACTERS + 4];
int choice = 0, selectedold = 100; int choice = 0, selectedold = 100;
s32 ret; s32 ret;
@ -1403,16 +1400,6 @@ int MenuDiscList()
if (!mountMethod)//only get this stuff it we are booting a game from USB if (!mountMethod)//only get this stuff it we are booting a game from USB
{ {
WBFS_GameSize(header->id, &size); WBFS_GameSize(header->id, &size);
if (strlen(GameTitles.GetTitle(header)) < (MAX_CHARACTERS + 3))
{
sprintf(text, "%s", GameTitles.GetTitle(header));
}
else
{
strncpy(text, GameTitles.GetTitle(header), MAX_CHARACTERS);
text[MAX_CHARACTERS] = '\0';
strncat(text, "...", 3);
}
} }
//check if alt Dol and gct file is present //check if alt Dol and gct file is present

View File

@ -39,131 +39,104 @@ int MenuInstall()
ResumeGui(); ResumeGui();
while (menu == MENU_NONE) ret = DiscWait(tr( "Insert Disk" ), tr( "Waiting..." ), tr( "Cancel" ), 0, 0);
if (ret < 0)
{ {
VIDEO_WaitVSync(); WindowPrompt(tr( "Error reading Disc" ), 0, tr( "Back" ));
menu = MENU_DISCLIST;
}
ret = Disc_Open();
if (ret < 0)
{
WindowPrompt(tr( "Could not open Disc" ), 0, tr( "Back" ));
menu = MENU_DISCLIST;
}
ret = DiscWait(tr( "Insert Disk" ), tr( "Waiting..." ), tr( "Cancel" ), 0, 0); ret = Disc_IsWii();
if (ret < 0) if (ret < 0)
{ {
WindowPrompt(tr( "Error reading Disc" ), 0, tr( "Back" )); choice = WindowPrompt(tr( "Not a Wii Disc" ), tr( "Insert a Wii Disc!" ), tr( "OK" ), tr( "Back" ));
menu = MENU_DISCLIST;
break;
}
ret = Disc_Open();
if (ret < 0)
{
WindowPrompt(tr( "Could not open Disc" ), 0, tr( "Back" ));
menu = MENU_DISCLIST;
break;
}
ret = Disc_IsWii();
if (ret < 0)
{
choice = WindowPrompt(tr( "Not a Wii Disc" ), tr( "Insert a Wii Disc!" ), tr( "OK" ), tr( "Back" ));
if (choice == 1)
{
menu = MENU_INSTALL;
break;
}
else menu = MENU_DISCLIST;
break;
}
Disc_ReadHeader(&headerdisc);
snprintf(name, sizeof(name), "%s", headerdisc.title);
ret = WBFS_CheckGame(headerdisc.id);
if (ret)
{
WindowPrompt(tr( "Game is already installed:" ), name, tr( "Back" ));
menu = MENU_DISCLIST;
break;
}
f32 freespace, used;
WBFS_DiskSpace(&used, &freespace);
gamesize = WBFS_EstimeGameSize() / GB_SIZE;
char gametxt[50];
sprintf(gametxt, "%s : %.2fGB", name, gamesize);
wiilight(1);
choice = WindowPrompt(tr( "Continue to install game?" ), gametxt, tr( "OK" ), tr( "Cancel" ));
if (choice == 1) if (choice == 1)
{ {
menu = MENU_INSTALL;
}
else menu = MENU_DISCLIST;
}
sprintf(gametxt, "%s", tr( "Installing game:" )); Disc_ReadHeader(&headerdisc);
snprintf(name, sizeof(name), "%s", headerdisc.title);
if (gamesize > freespace) ret = WBFS_CheckGame(headerdisc.id);
{ if (ret)
char errortxt[50]; {
sprintf(errortxt, "%s: %.2fGB, %s: %.2fGB", tr( "Game Size" ), gamesize, tr( "Free Space" ), freespace); WindowPrompt(tr( "Game is already installed:" ), name, tr( "Back" ));
WindowPrompt(tr( "Not enough free space!" ), errortxt, tr( "OK" )); menu = MENU_DISCLIST;
menu = MENU_DISCLIST; }
break;
} f32 freespace, used;
else
{ WBFS_DiskSpace(&used, &freespace);
USBStorage2_Watchdog(0); gamesize = WBFS_EstimeGameSize() / GB_SIZE;
SetupGameInstallProgress(gametxt, name);
ret = WBFS_AddGame(); char gametxt[50];
ProgressStop();
USBStorage2_Watchdog(1); sprintf(gametxt, "%s : %.2fGB", name, gamesize);
wiilight(0);
if (ret != 0) wiilight(1);
{ choice = WindowPrompt(tr( "Continue to install game?" ), gametxt, tr( "OK" ), tr( "Cancel" ));
WindowPrompt(tr( "Install Error!" ), 0, tr( "Back" ));
menu = MENU_DISCLIST; if (choice == 1)
break; {
} sprintf(gametxt, "%s", tr( "Installing game:" ));
else
{ if (gamesize > freespace)
gameList.ReadGameList(); //get the entries again {
gameList.FilterList(); char errortxt[50];
GuiSound * instsuccess = NULL; sprintf(errortxt, "%s: %.2fGB, %s: %.2fGB", tr( "Game Size" ), gamesize, tr( "Free Space" ), freespace);
bgMusic->Pause(); WindowPrompt(tr( "Not enough free space!" ), errortxt, tr( "OK" ));
instsuccess = new GuiSound(success_ogg, success_ogg_size, Settings.sfxvolume); menu = MENU_DISCLIST;
instsuccess->SetVolume(Settings.sfxvolume);
instsuccess->SetLoop(0);
instsuccess->Play();
WindowPrompt(tr( "Successfully installed:" ), name, tr( "OK" ));
instsuccess->Stop();
delete instsuccess;
bgMusic->Resume();
menu = MENU_DISCLIST;
break;
}
}
} }
else else
{ {
menu = MENU_DISCLIST; USBStorage2_Watchdog(0);
break; SetupGameInstallProgress(gametxt, name);
} ret = WBFS_AddGame();
ProgressStop();
if (shutdown == 1) USBStorage2_Watchdog(1);
{
wiilight(0); wiilight(0);
Sys_Shutdown(); if (ret != 0)
} {
if (reset == 1) WindowPrompt(tr( "Install Error!" ), 0, tr( "Back" ));
{ menu = MENU_DISCLIST;
wiilight(0); }
Sys_Reboot(); else
{
gameList.ReadGameList(); //get the entries again
gameList.FilterList();
GuiSound * instsuccess = NULL;
bgMusic->Pause();
instsuccess = new GuiSound(success_ogg, success_ogg_size, Settings.sfxvolume);
instsuccess->SetVolume(Settings.sfxvolume);
instsuccess->SetLoop(0);
instsuccess->Play();
WindowPrompt(tr( "Successfully installed:" ), name, tr( "OK" ));
instsuccess->Stop();
delete instsuccess;
bgMusic->Resume();
menu = MENU_DISCLIST;
}
} }
} }
else
{
menu = MENU_DISCLIST;
}
//Turn off the WiiLight //Turn off the WiiLight
wiilight(0); wiilight(0);
HaltGui(); HaltGui();
mainWindow->Remove(&w); mainWindow->Remove(&w);
ResumeGui(); ResumeGui();
return menu; return menu;

View File

@ -16,7 +16,7 @@ extern PartList partitions;
int SelectPartitionMenu() int SelectPartitionMenu()
{ {
bool ExitSelect = false; bool ExitSelect = false;
customOptionList options(MAX_PARTITIONS_EX); OptionList options;
u32 cnt, counter = 0; u32 cnt, counter = 0;
int choice = -1; int choice = -1;

View File

@ -75,7 +75,7 @@ int DiscBrowse(struct discHdr * header, char * alternatedname, int alternatednam
u32 discfilecount = fstbuffer[0].filelen; u32 discfilecount = fstbuffer[0].filelen;
u32 dolfilecount = 0; u32 dolfilecount = 0;
customOptionList options3(discfilecount); OptionList options3;
for (u32 i = 0; i < discfilecount; i++) for (u32 i = 0; i < discfilecount; i++)
{ {

View File

@ -24,6 +24,7 @@
#include "prompts/PromptWindows.h" #include "prompts/PromptWindows.h"
#include "prompts/gameinfo.h" #include "prompts/gameinfo.h"
#include "themes/CTheme.h" #include "themes/CTheme.h"
#include "utils/StringTools.h"
#include "mload/mload.h" #include "mload/mload.h"
#include "fatmounter.h" #include "fatmounter.h"
#include "FileOperations/fileops.h" #include "FileOperations/fileops.h"
@ -3811,12 +3812,8 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
bool iconExist = CheckFile(imgPath); bool iconExist = CheckFile(imgPath);
if (iconExist) if (iconExist)
{ {
//! This does not crash even if there is no file
iconData = new GuiImageData(imgPath); iconData = new GuiImageData(imgPath);
if(!iconData->GetImage())
{
delete iconData;
iconData = new GuiImageData(Resources::GetFile("dialogue_box.png"), Resources::GetFileSize("dialogue_box.png"));
}
iconImg = new GuiImage(iconData); iconImg = new GuiImage(iconData);
iconImg->SetAlignment(ALIGN_LEFT, ALIGN_TOP); iconImg->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
iconImg->SetPosition(45, 10); iconImg->SetPosition(45, 10);
@ -3829,31 +3826,22 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
whiteBoxImg.SetPosition(0, 110); whiteBoxImg.SetPosition(0, 110);
whiteBoxImg.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); whiteBoxImg.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
whiteBoxImg.SetSkew(0, 0, 0, 0, 0, -120, 0, -120); whiteBoxImg.SetSkew(0, 0, 0, 0, 0, -120, 0, -120);
/*if (Settings.wsprompt){
dialogBoxImg.SetWidescreen(Settings.widescreen);
}*/
char tmp[510];
GuiText nameTxt(name, 30, Theme.prompttext); GuiText nameTxt(name, 30, Theme.prompttext);
nameTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); nameTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
nameTxt.SetPosition(0, -15); nameTxt.SetPosition(0, -15);
nameTxt.SetMaxWidth(430, SCROLL_HORIZONTAL); nameTxt.SetMaxWidth(430, SCROLL_HORIZONTAL);
if (strcmp(coder, "")) snprintf(tmp, sizeof(tmp), tr( "Coded by: %s" ), coder); GuiText coderTxt(fmt(tr( "Coded by: %s" ), coder), 16, Theme.prompttext);
GuiText coderTxt(tmp, 16, Theme.prompttext);
coderTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); coderTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
coderTxt.SetPosition(180, 30); coderTxt.SetPosition(180, 30);
coderTxt.SetMaxWidth(280); coderTxt.SetMaxWidth(280);
if (strcmp(version, "")) snprintf(tmp, sizeof(tmp), tr( "Version: %s" ), version); GuiText versionTxt(fmt(tr( "Version: %s" ), version), 16, Theme.prompttext);
GuiText versionTxt(tmp, 16, Theme.prompttext);
versionTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); versionTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
versionTxt.SetPosition(40, 65); versionTxt.SetPosition(40, 65);
versionTxt.SetMaxWidth(430); versionTxt.SetMaxWidth(430);
//if (release_date)
//snprintf(tmp, sizeof(tmp), tr("Released: %s"),release_date);
GuiText release_dateTxt(release_date, 16, Theme.prompttext); GuiText release_dateTxt(release_date, 16, Theme.prompttext);
release_dateTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP); release_dateTxt.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
release_dateTxt.SetPosition(40, 85); release_dateTxt.SetPosition(40, 85);
@ -3868,30 +3856,14 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
long_descriptionTxt.Refresh(); long_descriptionTxt.Refresh();
//convert filesize from u64 to char and put unit of measurement after it //convert filesize from u64 to char and put unit of measurement after it
char temp2[7];
char filesizeCH[15]; char filesizeCH[15];
f32 sizeAdjusted;
if (filesize <= 1024.0) if (filesize <= 1024.0)
{ snprintf(filesizeCH, sizeof(filesizeCH), "%lld B", filesize);
sizeAdjusted = filesize;
snprintf(temp2, sizeof(temp2), "%.2f", sizeAdjusted);
snprintf(filesizeCH, sizeof(filesizeCH), "%s B", temp2);
}
if (filesize > 1024.0) if (filesize > 1024.0)
{ snprintf(filesizeCH, sizeof(filesizeCH), "%0.2f KB", filesize / 1024.0);
sizeAdjusted = filesize / 1024.0;
snprintf(temp2, sizeof(temp2), "%.2f", sizeAdjusted);
snprintf(filesizeCH, sizeof(filesizeCH), "%s KB", temp2);
}
if (filesize > 1048576.0) if (filesize > 1048576.0)
{ snprintf(filesizeCH, sizeof(filesizeCH), "%0.2f MB", filesize / 1048576.0);
sizeAdjusted = filesize / 1048576.0;
snprintf(temp2, sizeof(temp2), "%.2f", sizeAdjusted);
snprintf(filesizeCH, sizeof(filesizeCH), "%s MB", temp2);
}
GuiText filesizeTxt(filesizeCH, 16, Theme.prompttext); GuiText filesizeTxt(filesizeCH, 16, Theme.prompttext);
filesizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP); filesizeTxt.SetAlignment(ALIGN_RIGHT, ALIGN_TOP);
filesizeTxt.SetPosition(-40, 12); filesizeTxt.SetPosition(-40, 12);
@ -3933,18 +3905,18 @@ int HBCWindowPrompt(const char *name, const char *coder, const char *version, co
promptWindow.Append(&screenShotBtn); promptWindow.Append(&screenShotBtn);
promptWindow.Append(&dialogBoxImg); promptWindow.Append(&dialogBoxImg);
if (strcmp(long_description, "")) promptWindow.Append(&whiteBoxImg); promptWindow.Append(&whiteBoxImg);
if (strcmp(long_description, "")) promptWindow.Append(&scrollbarImg); promptWindow.Append(&scrollbarImg);
if (strcmp(long_description, "")) promptWindow.Append(&arrowDownBtn); promptWindow.Append(&arrowDownBtn);
if (strcmp(long_description, "")) promptWindow.Append(&arrowUpBtn); promptWindow.Append(&arrowUpBtn);
if (strcmp(name, "")) promptWindow.Append(&nameTxt); if(strcmp(name, "") != 0) promptWindow.Append(&nameTxt);
if (strcmp(version, "")) promptWindow.Append(&versionTxt); if(strcmp(version, "") != 0) promptWindow.Append(&versionTxt);
if (strcmp(coder, "")) promptWindow.Append(&coderTxt); if(strcmp(coder, "") != 0) promptWindow.Append(&coderTxt);
if (strcmp(release_date, "")) promptWindow.Append(&release_dateTxt); if(strcmp(release_date, "") != 0) promptWindow.Append(&release_dateTxt);
if (strcmp(long_description, "")) promptWindow.Append(&long_descriptionTxt); if(strcmp(long_description, "") != 0) promptWindow.Append(&long_descriptionTxt);
promptWindow.Append(&filesizeTxt); promptWindow.Append(&filesizeTxt);
if (iconExist) promptWindow.Append(iconImg); promptWindow.Append(iconImg);
promptWindow.Append(&btn1); promptWindow.Append(&btn1);
promptWindow.Append(&btn2); promptWindow.Append(&btn2);

View File

@ -84,7 +84,7 @@ bool TitleSelector(char output[])
gprintf("TitleLister(): out of memory!\n"); gprintf("TitleLister(): out of memory!\n");
return false; return false;
} }
customOptionList options4(num_titles + 1); OptionList options4;
//write the titles on the option browser //write the titles on the option browser
s32 i = 0; s32 i = 0;
@ -280,7 +280,7 @@ int TitleBrowser()
gprintf("TitleBrowser(): out of memory!\n"); gprintf("TitleBrowser(): out of memory!\n");
return -1; return -1;
} }
customOptionList options3(num_titles + num_sys_titles + 1); OptionList options3;
//write the titles on the option browser //write the titles on the option browser
u32 i = 0; u32 i = 0;

View File

@ -142,8 +142,7 @@ int MenuSettings()
GuiTrigger trigPlus; GuiTrigger trigPlus;
trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0); trigPlus.SetButtonOnlyTrigger(-1, WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS, 0);
GuiText titleTxt(tr( "Settings" ), 28, ( GXColor ) GuiText titleTxt(tr( "Settings" ), 28, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); titleTxt.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
titleTxt.SetPosition(0, 40); titleTxt.SetPosition(0, 40);
@ -165,8 +164,7 @@ int MenuSettings()
homo.SetTrigger(&trigHome); homo.SetTrigger(&trigHome);
GuiImage PageindicatorImg1(&PageindicatorImgData); GuiImage PageindicatorImg1(&PageindicatorImgData);
GuiText PageindicatorTxt1("1", 22, ( GXColor ) GuiText PageindicatorTxt1("1", 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
GuiButton PageIndicatorBtn1(PageindicatorImg1.GetWidth(), PageindicatorImg1.GetHeight()); GuiButton PageIndicatorBtn1(PageindicatorImg1.GetWidth(), PageindicatorImg1.GetHeight());
PageIndicatorBtn1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); PageIndicatorBtn1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
PageIndicatorBtn1.SetPosition(165, 400); PageIndicatorBtn1.SetPosition(165, 400);
@ -178,8 +176,7 @@ int MenuSettings()
PageIndicatorBtn1.SetEffectGrow(); PageIndicatorBtn1.SetEffectGrow();
GuiImage PageindicatorImg2(&PageindicatorImgData); GuiImage PageindicatorImg2(&PageindicatorImgData);
GuiText PageindicatorTxt2("2", 22, ( GXColor ) GuiText PageindicatorTxt2("2", 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
GuiButton PageIndicatorBtn2(PageindicatorImg2.GetWidth(), PageindicatorImg2.GetHeight()); GuiButton PageIndicatorBtn2(PageindicatorImg2.GetWidth(), PageindicatorImg2.GetHeight());
PageIndicatorBtn2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); PageIndicatorBtn2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
PageIndicatorBtn2.SetPosition(200, 400); PageIndicatorBtn2.SetPosition(200, 400);
@ -191,8 +188,7 @@ int MenuSettings()
PageIndicatorBtn2.SetEffectGrow(); PageIndicatorBtn2.SetEffectGrow();
GuiImage PageindicatorImg3(&PageindicatorImgData); GuiImage PageindicatorImg3(&PageindicatorImgData);
GuiText PageindicatorTxt3("3", 22, ( GXColor ) GuiText PageindicatorTxt3("3", 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
GuiButton PageIndicatorBtn3(PageindicatorImg3.GetWidth(), PageindicatorImg3.GetHeight()); GuiButton PageIndicatorBtn3(PageindicatorImg3.GetWidth(), PageindicatorImg3.GetHeight());
PageIndicatorBtn3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); PageIndicatorBtn3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
PageIndicatorBtn3.SetPosition(235, 400); PageIndicatorBtn3.SetPosition(235, 400);
@ -232,8 +228,7 @@ int MenuSettings()
GuiImage MainButton1Img(&MainButtonImgData); GuiImage MainButton1Img(&MainButtonImgData);
GuiImage MainButton1ImgOver(&MainButtonImgOverData); GuiImage MainButton1ImgOver(&MainButtonImgOverData);
GuiText MainButton1Txt(MainButtonText, 22, ( GXColor ) GuiText MainButton1Txt(MainButtonText, 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton1Txt.SetMaxWidth(MainButton1Img.GetWidth()); MainButton1Txt.SetMaxWidth(MainButton1Img.GetWidth());
GuiButton MainButton1(MainButton1Img.GetWidth(), MainButton1Img.GetHeight()); GuiButton MainButton1(MainButton1Img.GetWidth(), MainButton1Img.GetHeight());
MainButton1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton1.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -248,8 +243,7 @@ int MenuSettings()
GuiImage MainButton2Img(&MainButtonImgData); GuiImage MainButton2Img(&MainButtonImgData);
GuiImage MainButton2ImgOver(&MainButtonImgOverData); GuiImage MainButton2ImgOver(&MainButtonImgOverData);
GuiText MainButton2Txt(MainButtonText, 22, ( GXColor ) GuiText MainButton2Txt(MainButtonText, 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton2Txt.SetMaxWidth(MainButton2Img.GetWidth()); MainButton2Txt.SetMaxWidth(MainButton2Img.GetWidth());
GuiButton MainButton2(MainButton2Img.GetWidth(), MainButton2Img.GetHeight()); GuiButton MainButton2(MainButton2Img.GetWidth(), MainButton2Img.GetHeight());
MainButton2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -264,8 +258,7 @@ int MenuSettings()
GuiImage MainButton3Img(&MainButtonImgData); GuiImage MainButton3Img(&MainButtonImgData);
GuiImage MainButton3ImgOver(&MainButtonImgOverData); GuiImage MainButton3ImgOver(&MainButtonImgOverData);
GuiText MainButton3Txt(MainButtonText, 22, ( GXColor ) GuiText MainButton3Txt(MainButtonText, 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton3Txt.SetMaxWidth(MainButton3Img.GetWidth()); MainButton3Txt.SetMaxWidth(MainButton3Img.GetWidth());
GuiButton MainButton3(MainButton3Img.GetWidth(), MainButton3Img.GetHeight()); GuiButton MainButton3(MainButton3Img.GetWidth(), MainButton3Img.GetHeight());
MainButton3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton3.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -280,8 +273,7 @@ int MenuSettings()
GuiImage MainButton4Img(&MainButtonImgData); GuiImage MainButton4Img(&MainButtonImgData);
GuiImage MainButton4ImgOver(&MainButtonImgOverData); GuiImage MainButton4ImgOver(&MainButtonImgOverData);
GuiText MainButton4Txt(MainButtonText, 22, ( GXColor ) GuiText MainButton4Txt(MainButtonText, 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton4Txt.SetMaxWidth(MainButton4Img.GetWidth()); MainButton4Txt.SetMaxWidth(MainButton4Img.GetWidth());
GuiButton MainButton4(MainButton4Img.GetWidth(), MainButton4Img.GetHeight()); GuiButton MainButton4(MainButton4Img.GetWidth(), MainButton4Img.GetHeight());
MainButton4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -294,7 +286,7 @@ int MenuSettings()
MainButton4.SetEffectGrow(); MainButton4.SetEffectGrow();
MainButton4.SetTrigger(&trigA); MainButton4.SetTrigger(&trigA);
customOptionList options2(MAXOPTIONS); OptionList options2;
GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, "bg_options_settings.png", 0, 150); GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, "bg_options_settings.png", 0, 150);
optionBrowser2.SetPosition(0, 90); optionBrowser2.SetPosition(0, 90);
optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -657,7 +649,7 @@ int MenuSettings()
w.Remove(&MainButton4); w.Remove(&MainButton4);
titleTxt.SetText(tr( "GUI Settings" )); titleTxt.SetText(tr( "GUI Settings" ));
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
// optionBrowser2.SetScrollbar(1); // optionBrowser2.SetScrollbar(1);
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
@ -929,7 +921,7 @@ int MenuSettings()
w.Remove(&MainButton4); w.Remove(&MainButton4);
titleTxt.SetText(tr( "Game Load" )); titleTxt.SetText(tr( "Game Load" ));
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
ResumeGui(); ResumeGui();
@ -1161,7 +1153,7 @@ int MenuSettings()
w.Remove(&MainButton4); w.Remove(&MainButton4);
titleTxt.SetText(tr( "Parental Control" )); titleTxt.SetText(tr( "Parental Control" ));
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
ResumeGui(); ResumeGui();
@ -1352,7 +1344,7 @@ int MenuSettings()
w.Remove(&MainButton4); w.Remove(&MainButton4);
titleTxt.SetText(tr( "Sound" )); titleTxt.SetText(tr( "Sound" ));
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
ResumeGui(); ResumeGui();
@ -1564,7 +1556,7 @@ int MenuSettings()
w.Remove(&MainButton4); w.Remove(&MainButton4);
titleTxt.SetText(tr( "Custom Paths" )); titleTxt.SetText(tr( "Custom Paths" ));
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
// optionBrowser2.SetScrollbar(1); // optionBrowser2.SetScrollbar(1);
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
@ -2389,8 +2381,7 @@ int MenuGameSettings(struct discHdr * header)
GuiImage MainButton4Img(&MainButtonImgData); GuiImage MainButton4Img(&MainButtonImgData);
GuiImage MainButton4ImgOver(&MainButtonImgOverData); GuiImage MainButton4ImgOver(&MainButtonImgOverData);
GuiText MainButton4Txt(MainButtonText, 22, ( GXColor ) GuiText MainButton4Txt(MainButtonText, 22, ( GXColor ) {0, 0, 0, 255});
{ 0, 0, 0, 255});
MainButton4Txt.SetMaxWidth(MainButton4Img.GetWidth()); MainButton4Txt.SetMaxWidth(MainButton4Img.GetWidth());
GuiButton MainButton4(MainButton4Img.GetWidth(), MainButton4Img.GetHeight()); GuiButton MainButton4(MainButton4Img.GetWidth(), MainButton4Img.GetHeight());
MainButton4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); MainButton4.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -2403,7 +2394,7 @@ int MenuGameSettings(struct discHdr * header)
MainButton4.SetEffectGrow(); MainButton4.SetEffectGrow();
MainButton4.SetTrigger(&trigA); MainButton4.SetTrigger(&trigA);
customOptionList options2(MAXOPTIONS); OptionList options2;
GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, "bg_options_settings.png", 0, 150); GuiCustomOptionBrowser optionBrowser2(396, 280, &options2, "bg_options_settings.png", 0, 150);
optionBrowser2.SetPosition(0, 90); optionBrowser2.SetPosition(0, 90);
optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); optionBrowser2.SetAlignment(ALIGN_CENTRE, ALIGN_TOP);
@ -2523,7 +2514,7 @@ int MenuGameSettings(struct discHdr * header)
w.Remove(&MainButton3); w.Remove(&MainButton3);
w.Remove(&MainButton4); w.Remove(&MainButton4);
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
ResumeGui(); ResumeGui();
@ -2705,7 +2696,7 @@ int MenuGameSettings(struct discHdr * header)
if (last_alternatedol != 1) if (last_alternatedol != 1)
{ {
firstRun = true; // force re-init follow Entries firstRun = true; // force re-init follow Entries
options2.SetLength(Idx + 1); options2.Resize(Idx + 1);
} }
} }
@ -2779,7 +2770,7 @@ int MenuGameSettings(struct discHdr * header)
if (game_cfg.loadalternatedol == 0) if (game_cfg.loadalternatedol == 0)
{ {
firstRun = true; // force re-init follow Entries firstRun = true; // force re-init follow Entries
options2.SetLength(Idx--); // remove this Entry options2.Resize(Idx--); // remove this Entry
options2.SetValue(Idx, "%s", tr( "Default" )); // re-set prev Entry options2.SetValue(Idx, "%s", tr( "Default" )); // re-set prev Entry
} }
else options2.SetValue(Idx, alternatedname); else options2.SetValue(Idx, alternatedname);
@ -2835,7 +2826,7 @@ int MenuGameSettings(struct discHdr * header)
w.Remove(&MainButton3); w.Remove(&MainButton3);
w.Remove(&MainButton4); w.Remove(&MainButton4);
exit = false; exit = false;
options2.SetLength(0); options2.ClearList();
w.Append(&optionBrowser2); w.Append(&optionBrowser2);
optionBrowser2.SetClickable(true); optionBrowser2.SetClickable(true);
ResumeGui(); ResumeGui();

View File

@ -191,7 +191,7 @@ int MenuLanguageSelect()
updateBtn.SetTrigger( &trigA ); updateBtn.SetTrigger( &trigA );
updateBtn.SetEffectGrow(); updateBtn.SetEffectGrow();
customOptionList options2( Dir.GetFilecount() ); OptionList options2;
for ( cnt = 0; cnt < Dir.GetFilecount(); cnt++ ) for ( cnt = 0; cnt < Dir.GetFilecount(); cnt++ )
{ {

View File

@ -44,6 +44,8 @@ GameList::GameList()
void GameList::clear() void GameList::clear()
{ {
GameFilter.clear();
AvailableSearchChars.clear();
FullGameList.clear(); FullGameList.clear();
FilteredList.clear(); FilteredList.clear();
//! Clear memory of the vector completely //! Clear memory of the vector completely
@ -71,8 +73,8 @@ struct discHdr * GameList::GetDiscHeader(const char * gameID)
int GameList::ReadGameList() int GameList::ReadGameList()
{ {
FullGameList.clear(); // Clear list
FilteredList.clear(); clear();
// Retrieve all stuff from WBFS // Retrieve all stuff from WBFS
u32 cnt; u32 cnt;
@ -80,6 +82,10 @@ int GameList::ReadGameList()
int ret = WBFS_GetCount(&cnt); int ret = WBFS_GetCount(&cnt);
if (ret < 0) return -1; if (ret < 0) return -1;
// We are done here if no games are there
if(cnt == 0)
return 0;
/* Buffer length */ /* Buffer length */
u32 len = sizeof(struct discHdr) * cnt; u32 len = sizeof(struct discHdr) * cnt;