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 parentalcontrolChoice = 0;
u8 xflip = 0;
u8 sort = 0;
u8 qboot = 0;
u8 wsprompt = 0;
u8 keyset = 0;
@ -757,6 +758,13 @@ void global_cfg_set(char *name, char *val)
}
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) {
int i;
@ -1030,6 +1038,7 @@ bool cfg_save_global()// save global settings
fprintf(f, "volume = %d\n ", Settings.volume);
fprintf(f, "tooltips = %d\n ", Settings.tooltips);
fprintf(f, "password = %s\n ", Settings.unlockCode);
fprintf(f, "sort = %d\n ", Settings.sort);
fprintf(f, "cios = %d\n ", Settings.cios);
fprintf(f, "keyset = %d\n ", Settings.keyset);
fprintf(f, "xflip = %d\n ", Settings.xflip);
@ -1268,7 +1277,7 @@ struct Game_NUM* CFG_get_game_num(u8 *id)
{
int 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];
}
}

View File

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

View File

@ -31,6 +31,7 @@ void lang_default()
{
snprintf(LANGUAGE.ok, sizeof(LANGUAGE.ok), "OK");
snprintf(LANGUAGE.addToFavorite, sizeof(LANGUAGE.addToFavorite), "Favorite");
snprintf(LANGUAGE.all, sizeof(LANGUAGE.all), "Alphabetical");
snprintf(LANGUAGE.AppLanguage, sizeof(LANGUAGE.AppLanguage), "App Language");
snprintf(LANGUAGE.t3Covers, sizeof(LANGUAGE.t3Covers), "3D Covers");
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.CoverpathChanged, sizeof(LANGUAGE.CoverpathChanged), "Coverpath Changed");
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.DiscImages, sizeof(LANGUAGE.DiscImages), "Disc Images");
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.FailedtosetUSB, sizeof(LANGUAGE.FailedtosetUSB), "Failed to set USB:");
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.Filenotfound, sizeof(LANGUAGE.Filenotfound), "File not found.");
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.LikeSysMenu, sizeof(LANGUAGE.LikeSysMenu), "Like SysMenu");
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.Loadingstandardmusic, sizeof(LANGUAGE.Loadingstandardmusic), "Loading standard music.");
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));
return;
}
if (strcmp(name, "all") == 0) {
strcopy(LANGUAGE.all, val, sizeof(LANGUAGE.all));
return;
}
if (strcmp(name, "Specialthanksto") == 0) {
strcopy(LANGUAGE.Specialthanksto, val, sizeof(LANGUAGE.Specialthanksto));
return;
@ -340,6 +348,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.CouldnotinitializeDIPmodule, val, sizeof(LANGUAGE.CouldnotinitializeDIPmodule));
return;
}
if (strcmp(name, "count") == 0) {
strcopy(LANGUAGE.count, val, sizeof(LANGUAGE.count));
return;
}
if (strcmp(name, "CoverDownload") == 0) {
strcopy(LANGUAGE.CoverDownload, val, sizeof(LANGUAGE.CoverDownload));
return;
@ -424,6 +436,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.ExitUSBISOLoader, val, sizeof(LANGUAGE.ExitUSBISOLoader));
return;
}
if (strcmp(name, "fave") == 0) {
strcopy(LANGUAGE.fave, val, sizeof(LANGUAGE.fave));
return;
}
if (strcmp(name, "InitializingNetwork") == 0) {
strcopy(LANGUAGE.InitializingNetwork, val, sizeof(LANGUAGE.InitializingNetwork));
return;
@ -589,6 +605,10 @@ void language_set(char *name, char *val)
strcopy(LANGUAGE.LikeSysMenu, val, sizeof(LANGUAGE.LikeSysMenu));
return;
}
if (strcmp(name, "ListSort") == 0) {
strcopy(LANGUAGE.ListSort, val, sizeof(LANGUAGE.ListSort));
return;
}
if (strcmp(name, "LoadingincIOS") == 0) {
strcopy(LANGUAGE.LoadingincIOS, val, sizeof(LANGUAGE.LoadingincIOS));
return;

View File

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

View File

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