added favorites to per game settings, sorting for gamelist based on alphabetical, favorites, and play count. still has some bugs so don't make issues out of them.

This commit is contained in:
giantpune 2009-05-21 04:00:16 +00:00
parent 4a0c038708
commit 2062ef871d
5 changed files with 134 additions and 11 deletions

View File

@ -50,6 +50,7 @@ u8 viChoice = 0;
u8 iosChoice = 0; u8 iosChoice = 0;
u8 parentalcontrolChoice = 0; u8 parentalcontrolChoice = 0;
u8 xflip = 0; u8 xflip = 0;
u8 sort = 0;
u8 qboot = 0; u8 qboot = 0;
u8 wsprompt = 0; u8 wsprompt = 0;
u8 keyset = 0; u8 keyset = 0;
@ -757,6 +758,13 @@ void global_cfg_set(char *name, char *val)
} }
return; return;
} }
else if (strcmp(name, "sort") == 0) {
int i;
if (sscanf(val, "%d", &i) == 1) {
Settings.sort = i;
}
return;
}
else if (strcmp(name, "keyset") == 0) { else if (strcmp(name, "keyset") == 0) {
int i; int i;
@ -1030,6 +1038,7 @@ bool cfg_save_global()// save global settings
fprintf(f, "volume = %d\n ", Settings.volume); fprintf(f, "volume = %d\n ", Settings.volume);
fprintf(f, "tooltips = %d\n ", Settings.tooltips); fprintf(f, "tooltips = %d\n ", Settings.tooltips);
fprintf(f, "password = %s\n ", Settings.unlockCode); fprintf(f, "password = %s\n ", Settings.unlockCode);
fprintf(f, "sort = %d\n ", Settings.sort);
fprintf(f, "cios = %d\n ", Settings.cios); fprintf(f, "cios = %d\n ", Settings.cios);
fprintf(f, "keyset = %d\n ", Settings.keyset); fprintf(f, "keyset = %d\n ", Settings.keyset);
fprintf(f, "xflip = %d\n ", Settings.xflip); fprintf(f, "xflip = %d\n ", Settings.xflip);
@ -1268,7 +1277,7 @@ struct Game_NUM* CFG_get_game_num(u8 *id)
{ {
int i; int i;
for (i=0; i<num_saved_game_num; i++) { for (i=0; i<num_saved_game_num; i++) {
if (memcmp(id, cfg_game_num[i].id, 2) == 0) { if (memcmp(id, cfg_game_num[i].id, 6) == 0) {
return &cfg_game_num[i]; return &cfg_game_num[i];
} }
} }

View File

@ -144,7 +144,7 @@ struct THEME
extern struct CFG CFG; extern struct CFG CFG;
extern struct THEME THEME; extern struct THEME THEME;
extern u8 ocarinaChoice; extern u8 ocarinaChoice;
extern u8 fave; extern u8 sort;
extern u8 playcnt; extern u8 playcnt;
extern u8 videoChoice; extern u8 videoChoice;
extern u8 languageChoice; extern u8 languageChoice;
@ -154,6 +154,7 @@ extern u8 faveChoice;
extern u8 parentalcontrolChoice; extern u8 parentalcontrolChoice;
extern u8 xflip; extern u8 xflip;
extern u8 qboot; extern u8 qboot;
extern u8 sort;
extern u8 wsprompt; extern u8 wsprompt;
extern u8 keyset; extern u8 keyset;
@ -236,6 +237,11 @@ enum {
hr24, hr24,
Off, Off,
}; };
enum {
all,
fave,
pcount,
};
enum { enum {
RumbleOff, RumbleOff,
@ -300,6 +306,7 @@ struct SSettings {
int wsprompt; int wsprompt;
int keyset; int keyset;
int unicodefix; int unicodefix;
int sort;
}; };
void CFG_LoadGlobal(void); void CFG_LoadGlobal(void);

View File

@ -31,6 +31,7 @@ void lang_default()
{ {
snprintf(LANGUAGE.ok, sizeof(LANGUAGE.ok), "OK"); snprintf(LANGUAGE.ok, sizeof(LANGUAGE.ok), "OK");
snprintf(LANGUAGE.addToFavorite, sizeof(LANGUAGE.addToFavorite), "Favorite"); snprintf(LANGUAGE.addToFavorite, sizeof(LANGUAGE.addToFavorite), "Favorite");
snprintf(LANGUAGE.all, sizeof(LANGUAGE.all), "Alphabetical");
snprintf(LANGUAGE.AppLanguage, sizeof(LANGUAGE.AppLanguage), "App Language"); snprintf(LANGUAGE.AppLanguage, sizeof(LANGUAGE.AppLanguage), "App Language");
snprintf(LANGUAGE.t3Covers, sizeof(LANGUAGE.t3Covers), "3D Covers"); snprintf(LANGUAGE.t3Covers, sizeof(LANGUAGE.t3Covers), "3D Covers");
snprintf(LANGUAGE.Areyousure, sizeof(LANGUAGE.Areyousure), "Are you sure?"); snprintf(LANGUAGE.Areyousure, sizeof(LANGUAGE.Areyousure), "Are you sure?");
@ -61,6 +62,7 @@ snprintf(LANGUAGE.CoverDownload, sizeof(LANGUAGE.CoverDownload), "Cover Download
snprintf(LANGUAGE.CoverPath, sizeof(LANGUAGE.CoverPath), "Cover Path"); snprintf(LANGUAGE.CoverPath, sizeof(LANGUAGE.CoverPath), "Cover Path");
snprintf(LANGUAGE.CoverpathChanged, sizeof(LANGUAGE.CoverpathChanged), "Coverpath Changed"); snprintf(LANGUAGE.CoverpathChanged, sizeof(LANGUAGE.CoverpathChanged), "Coverpath Changed");
snprintf(LANGUAGE.Coverpathchange, sizeof(LANGUAGE.Coverpathchange), "Coverpath change"); snprintf(LANGUAGE.Coverpathchange, sizeof(LANGUAGE.Coverpathchange), "Coverpath change");
snprintf(LANGUAGE.count, sizeof(LANGUAGE.count), "Play Count");
snprintf(LANGUAGE.Credits, sizeof(LANGUAGE.Credits), "Credits"); snprintf(LANGUAGE.Credits, sizeof(LANGUAGE.Credits), "Credits");
snprintf(LANGUAGE.DiscImages, sizeof(LANGUAGE.DiscImages), "Disc Images"); snprintf(LANGUAGE.DiscImages, sizeof(LANGUAGE.DiscImages), "Disc Images");
snprintf(LANGUAGE.DiscimagePath, sizeof(LANGUAGE.DiscimagePath), "Discimage Path"); snprintf(LANGUAGE.DiscimagePath, sizeof(LANGUAGE.DiscimagePath), "Discimage Path");
@ -93,6 +95,7 @@ snprintf(LANGUAGE.Failedtoboot, sizeof(LANGUAGE.Failedtoboot), "Failed to boot:"
snprintf(LANGUAGE.FailedtomountfrontSDcard, sizeof(LANGUAGE.FailedtomountfrontSDcard), "Failed to mount front SD-card"); snprintf(LANGUAGE.FailedtomountfrontSDcard, sizeof(LANGUAGE.FailedtomountfrontSDcard), "Failed to mount front SD-card");
snprintf(LANGUAGE.FailedtosetUSB, sizeof(LANGUAGE.FailedtosetUSB), "Failed to set USB:"); snprintf(LANGUAGE.FailedtosetUSB, sizeof(LANGUAGE.FailedtosetUSB), "Failed to set USB:");
snprintf(LANGUAGE.Failedformating, sizeof(LANGUAGE.Failedformating), "Failed formating"); snprintf(LANGUAGE.Failedformating, sizeof(LANGUAGE.Failedformating), "Failed formating");
snprintf(LANGUAGE.fave, sizeof(LANGUAGE.fave), "Favorites");
snprintf(LANGUAGE.filesnotfoundontheserver, sizeof(LANGUAGE.filesnotfoundontheserver), "files not found on the server!"); snprintf(LANGUAGE.filesnotfoundontheserver, sizeof(LANGUAGE.filesnotfoundontheserver), "files not found on the server!");
snprintf(LANGUAGE.Filenotfound, sizeof(LANGUAGE.Filenotfound), "File not found."); snprintf(LANGUAGE.Filenotfound, sizeof(LANGUAGE.Filenotfound), "File not found.");
snprintf(LANGUAGE.filesleft, sizeof(LANGUAGE.filesleft), "file(s) left"); snprintf(LANGUAGE.filesleft, sizeof(LANGUAGE.filesleft), "file(s) left");
@ -117,6 +120,7 @@ snprintf(LANGUAGE.Language, sizeof(LANGUAGE.Language), "Game Language");
snprintf(LANGUAGE.Left, sizeof(LANGUAGE.Left), "Left"); snprintf(LANGUAGE.Left, sizeof(LANGUAGE.Left), "Left");
snprintf(LANGUAGE.LikeSysMenu, sizeof(LANGUAGE.LikeSysMenu), "Like SysMenu"); snprintf(LANGUAGE.LikeSysMenu, sizeof(LANGUAGE.LikeSysMenu), "Like SysMenu");
snprintf(LANGUAGE.LoadingincIOS, sizeof(LANGUAGE.LoadingincIOS), "Loading in cIOS249"); snprintf(LANGUAGE.LoadingincIOS, sizeof(LANGUAGE.LoadingincIOS), "Loading in cIOS249");
snprintf(LANGUAGE.ListSort, sizeof(LANGUAGE.ListSort), "Sort Game List");
snprintf(LANGUAGE.Loadingstandardlanguage, sizeof(LANGUAGE.Loadingstandardlanguage), "Loading standard language."); snprintf(LANGUAGE.Loadingstandardlanguage, sizeof(LANGUAGE.Loadingstandardlanguage), "Loading standard language.");
snprintf(LANGUAGE.Loadingstandardmusic, sizeof(LANGUAGE.Loadingstandardmusic), "Loading standard music."); snprintf(LANGUAGE.Loadingstandardmusic, sizeof(LANGUAGE.Loadingstandardmusic), "Loading standard music.");
snprintf(LANGUAGE.Lock, sizeof(LANGUAGE.Lock), "Lock"); snprintf(LANGUAGE.Lock, sizeof(LANGUAGE.Lock), "Lock");
@ -232,6 +236,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.addToFavorite, val, sizeof(LANGUAGE.addToFavorite)); strcopy(LANGUAGE.addToFavorite, val, sizeof(LANGUAGE.addToFavorite));
return; return;
} }
if (strcmp(name, "all") == 0) {
strcopy(LANGUAGE.all, val, sizeof(LANGUAGE.all));
return;
}
if (strcmp(name, "Specialthanksto") == 0) { if (strcmp(name, "Specialthanksto") == 0) {
strcopy(LANGUAGE.Specialthanksto, val, sizeof(LANGUAGE.Specialthanksto)); strcopy(LANGUAGE.Specialthanksto, val, sizeof(LANGUAGE.Specialthanksto));
return; return;
@ -340,6 +348,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.CouldnotinitializeDIPmodule, val, sizeof(LANGUAGE.CouldnotinitializeDIPmodule)); strcopy(LANGUAGE.CouldnotinitializeDIPmodule, val, sizeof(LANGUAGE.CouldnotinitializeDIPmodule));
return; return;
} }
if (strcmp(name, "count") == 0) {
strcopy(LANGUAGE.count, val, sizeof(LANGUAGE.count));
return;
}
if (strcmp(name, "CoverDownload") == 0) { if (strcmp(name, "CoverDownload") == 0) {
strcopy(LANGUAGE.CoverDownload, val, sizeof(LANGUAGE.CoverDownload)); strcopy(LANGUAGE.CoverDownload, val, sizeof(LANGUAGE.CoverDownload));
return; return;
@ -424,6 +436,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.ExitUSBISOLoader, val, sizeof(LANGUAGE.ExitUSBISOLoader)); strcopy(LANGUAGE.ExitUSBISOLoader, val, sizeof(LANGUAGE.ExitUSBISOLoader));
return; return;
} }
if (strcmp(name, "fave") == 0) {
strcopy(LANGUAGE.fave, val, sizeof(LANGUAGE.fave));
return;
}
if (strcmp(name, "InitializingNetwork") == 0) { if (strcmp(name, "InitializingNetwork") == 0) {
strcopy(LANGUAGE.InitializingNetwork, val, sizeof(LANGUAGE.InitializingNetwork)); strcopy(LANGUAGE.InitializingNetwork, val, sizeof(LANGUAGE.InitializingNetwork));
return; return;
@ -589,6 +605,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.LikeSysMenu, val, sizeof(LANGUAGE.LikeSysMenu)); strcopy(LANGUAGE.LikeSysMenu, val, sizeof(LANGUAGE.LikeSysMenu));
return; return;
} }
if (strcmp(name, "ListSort") == 0) {
strcopy(LANGUAGE.ListSort, val, sizeof(LANGUAGE.ListSort));
return;
}
if (strcmp(name, "LoadingincIOS") == 0) { if (strcmp(name, "LoadingincIOS") == 0) {
strcopy(LANGUAGE.LoadingincIOS, val, sizeof(LANGUAGE.LoadingincIOS)); strcopy(LANGUAGE.LoadingincIOS, val, sizeof(LANGUAGE.LoadingincIOS));
return; return;

View File

@ -14,6 +14,7 @@ struct LANGUAGE
char t3Covers[50]; char t3Covers[50];
char addToFavorite[20]; char addToFavorite[20];
char all[10];
char AppLanguage[50]; char AppLanguage[50];
char Areyousure[50]; char Areyousure[50];
char AutoPatch[20]; char AutoPatch[20];
@ -43,6 +44,7 @@ struct LANGUAGE
char CoverPath[50]; char CoverPath[50];
char CoverpathChanged[50]; char CoverpathChanged[50];
char Coverpathchange[50]; char Coverpathchange[50];
char count[20];
char Credits[30]; char Credits[30];
char DiscImages[50]; char DiscImages[50];
char DiscimagePath[50]; char DiscimagePath[50];
@ -74,6 +76,7 @@ struct LANGUAGE
char FailedtomountfrontSDcard[80]; char FailedtomountfrontSDcard[80];
char FailedtosetUSB[50]; char FailedtosetUSB[50];
char Failedformating[50]; char Failedformating[50];
char fave[15];
char Filenotfound[50]; char Filenotfound[50];
char filesnotfoundontheserver[80]; char filesnotfoundontheserver[80];
char filesleft[50]; char filesleft[50];
@ -100,6 +103,7 @@ struct LANGUAGE
char Langchange[50]; char Langchange[50];
char Left[50]; char Left[50];
char LikeSysMenu[50]; char LikeSysMenu[50];
char ListSort[20];
char LoadingincIOS[50]; char LoadingincIOS[50];
char Loadingstandardlanguage[80]; char Loadingstandardlanguage[80];
char Loadingstandardmusic[80]; char Loadingstandardmusic[80];

View File

@ -2253,12 +2253,44 @@ InitGUIThreads()
* EntryCmp * EntryCmp
***************************************************************************/ ***************************************************************************/
s32 __Menu_EntryCmp(const void *a, const void *b) s32 __Menu_EntryCmp(const void *a, const void *b)
{ {
struct discHdr *hdr1 = (struct discHdr *)a; struct discHdr *hdr1 = (struct discHdr *)a;
struct discHdr *hdr2 = (struct discHdr *)b; struct discHdr *hdr2 = (struct discHdr *)b;
/* Compare strings */ /* Compare strings */
return stricmp(get_title(hdr1), get_title(hdr2)); return stricmp(get_title(hdr1), get_title(hdr2));
}
s32 __Menu_EntryCmpCount(const void *a, const void *b)
{
s32 ret;
struct discHdr *hdr1 = (struct discHdr *)a;
struct discHdr *hdr2 = (struct discHdr *)b;
/* Compare Play Count */
u8 count1 = 0;
u8 count2 = 0;
struct Game_NUM* game_num1 = CFG_get_game_num(hdr1->id);
struct Game_NUM* game_num2 = CFG_get_game_num(hdr2->id);
if (game_num1) count1 = game_num1->count;
if (game_num2) count2 = game_num2->count;
ret = (s32) (count2-count1);
if (ret == 0) return stricmp(get_title(hdr1), get_title(hdr2));
return ret;
} }
/**************************************************************************** /****************************************************************************
@ -2266,7 +2298,7 @@ s32 __Menu_EntryCmp(const void *a, const void *b)
***************************************************************************/ ***************************************************************************/
s32 __Menu_GetEntries(void) s32 __Menu_GetEntries(void)
{ {
struct discHdr *buffer = NULL; struct discHdr *buffer = NULL;
struct discHdr *buffer2 = NULL; struct discHdr *buffer2 = NULL;
struct discHdr *header = NULL; struct discHdr *header = NULL;
@ -2294,15 +2326,23 @@ s32 __Menu_GetEntries(void)
ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr)); ret = WBFS_GetHeaders(buffer, cnt, sizeof(struct discHdr));
if (ret < 0) if (ret < 0)
goto err; goto err;
if (CFG.parentalcontrol && !CFG.godmode) /////////////show favorites only///////////////////////
{ if (Settings.sort==fave){
u32 cnt2 = 0; u32 cnt2 = 0;
for (u32 i = 0; i < cnt; i++) for (u32 i = 0; i < cnt; i++)
{ {
header = &buffer[i]; header = &buffer[i];
if (get_block(header) < CFG.parentalcontrol) u8 favorite = 0;
struct Game_NUM* game_num = CFG_get_game_num(header->id);
if (game_num)
{
favorite = game_num->favorite;}
if (favorite==1)
//if (get_block(header) < CFG.parentalcontrol)
{ {
buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr)); buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
if (!buffer2) if (!buffer2)
@ -2319,10 +2359,43 @@ s32 __Menu_GetEntries(void)
buffer = buffer2; buffer = buffer2;
buffer2 = NULL; buffer2 = NULL;
cnt = cnt2; cnt = cnt2;
//if (cnt==0){Settings.sort=all;__Menu_GetEntries();}
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
}
else {
if (CFG.parentalcontrol && !CFG.godmode)
{
u32 cnt2 = 0;
for (u32 i = 0; i < cnt; i++)
{
if (get_block(header) < CFG.parentalcontrol)
{
buffer2 = (discHdr *) realloc(buffer2, (cnt2+1) * sizeof(struct discHdr));
if (!buffer2)
{
free(buffer);
return -1;
}
memcpy((buffer2 + cnt2), (buffer + i), sizeof(struct discHdr));
cnt2++;
}
}
free(buffer);
buffer = buffer2;
buffer2 = NULL;
cnt = cnt2;
}if (Settings.sort==all){qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);}
else //if (Settings.sort==pcount)
{qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmpCount);}
} }
/* Sort entries */ /* Sort entries */
qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp); //qsort(buffer, cnt, sizeof(struct discHdr), __Menu_EntryCmp);
/* Free memory */ /* Free memory */
if (gameList) if (gameList)
@ -2702,6 +2775,8 @@ static int MenuDiscList()
int menu = MENU_NONE, dataef=0; int menu = MENU_NONE, dataef=0;
char imgPath[100]; char imgPath[100];
char buf[4]; char buf[4];
__Menu_GetEntries();
if (gameCnt==0){Settings.sort=all;__Menu_GetEntries();}
f32 freespace, used, size = 0.0; f32 freespace, used, size = 0.0;
u32 nolist; u32 nolist;
@ -3986,7 +4061,7 @@ static int MenuSettings()
sprintf(options2.name[2], "%s",LANGUAGE.keyboard); sprintf(options2.name[2], "%s",LANGUAGE.keyboard);
sprintf(options2.name[3], "%s",LANGUAGE.Unicodefix); sprintf(options2.name[3], "%s",LANGUAGE.Unicodefix);
sprintf(options2.name[4], "%s",LANGUAGE.Backgroundmusic); sprintf(options2.name[4], "%s",LANGUAGE.Backgroundmusic);
sprintf(options2.name[5], " "); sprintf(options2.name[5], "%s",LANGUAGE.ListSort);
sprintf(options2.name[6], " "); sprintf(options2.name[6], " ");
sprintf(options2.name[7], " "); sprintf(options2.name[7], " ");
sprintf(options2.name[8], "%s",LANGUAGE.MP3Menu); sprintf(options2.name[8], "%s",LANGUAGE.MP3Menu);
@ -4391,6 +4466,8 @@ static int MenuSettings()
Settings.keyset = 0; Settings.keyset = 0;
if ( Settings.unicodefix > 2 ) if ( Settings.unicodefix > 2 )
Settings.unicodefix = 0; Settings.unicodefix = 0;
if ( Settings.sort > 2 )
Settings.sort = 0;
if (strlen(CFG.titlestxt_path) < (9 + 3)) { if (strlen(CFG.titlestxt_path) < (9 + 3)) {
sprintf(cfgtext, "%s", CFG.titlestxt_path); sprintf(cfgtext, "%s", CFG.titlestxt_path);
@ -4432,7 +4509,9 @@ static int MenuSettings()
sprintf(options2.value[4], "%s", cfgtext); sprintf(options2.value[4], "%s", cfgtext);
} }
sprintf(options2.value[5], " "); if (Settings.sort == all) sprintf (options2.value[5],"%s",LANGUAGE.all);
else if (Settings.sort == fave) sprintf (options2.value[5],"%s",LANGUAGE.fave);
else if (Settings.sort == pcount) sprintf (options2.value[5],"%s",LANGUAGE.count);
sprintf(options2.value[6], " "); sprintf(options2.value[6], " ");
sprintf(options2.value[7], " "); sprintf(options2.value[7], " ");
sprintf(options2.value[8], "not working!"); sprintf(options2.value[8], "not working!");
@ -4545,6 +4624,10 @@ static int MenuSettings()
} else { } else {
WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0); WindowPrompt(LANGUAGE.NoSDcardinserted, LANGUAGE.InsertaSDCardtousethatoption, LANGUAGE.ok, 0,0,0);
} }
break;
case 5:
Settings.sort++;
//__Menu_GetEntries();
break; break;
} }