mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-04-06 03:58:02 +08:00
Add option to sort TitleDB by install status.
This commit is contained in:
parent
1fe458a57c
commit
5ca4819c6e
@ -20,6 +20,7 @@ typedef struct {
|
||||
bool show3DSXs;
|
||||
bool sortByName;
|
||||
bool sortByUpdate;
|
||||
bool sortByStatus;
|
||||
|
||||
bool populated;
|
||||
} titledb_data;
|
||||
@ -199,6 +200,28 @@ static int titledb_compare(void* data, const void* p1, const void* p2) {
|
||||
return strncasecmp(info1->name, info2->name, sizeof(info1->name));
|
||||
} else if(listData->sortByUpdate) {
|
||||
return strncasecmp(data2->mtime, data1->mtime, sizeof(data2->mtime));
|
||||
} else if(listData->sortByStatus) {
|
||||
bool outdated1 = (data1->cia.installed && data1->cia.installedInfo.id != data1->cia.id)
|
||||
|| (data1->tdsx.installed && data1->tdsx.installedInfo.id != data1->tdsx.id);
|
||||
bool outdated2 = (data2->cia.installed && data2->cia.installedInfo.id != data2->cia.id)
|
||||
|| (data2->tdsx.installed && data2->tdsx.installedInfo.id != data2->tdsx.id);
|
||||
|
||||
if(outdated1 && !outdated2) {
|
||||
return -1;
|
||||
} else if(!outdated1 && outdated2) {
|
||||
return 1;
|
||||
} else {
|
||||
bool installed1 = data1->cia.installed || data1->tdsx.installed;
|
||||
bool installed2 = data2->cia.installed || data2->tdsx.installed;
|
||||
|
||||
if(installed1 && !installed2) {
|
||||
return -1;
|
||||
} else if(!installed1 && installed2) {
|
||||
return 1;
|
||||
} else {
|
||||
return strncasecmp(info1->name, info2->name, sizeof(info1->name));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
@ -238,12 +261,17 @@ static void titledb_options_update(ui_view* view, void* data, linked_list* items
|
||||
bool* val = (bool*) selected->data;
|
||||
*val = !(*val);
|
||||
|
||||
if(val == &listData->sortByName || val == &listData->sortByUpdate) {
|
||||
if(val == &listData->sortByName || val == &listData->sortByUpdate || val == &listData->sortByStatus) {
|
||||
if(*val) {
|
||||
if(val == &listData->sortByName) {
|
||||
listData->sortByUpdate = false;
|
||||
listData->sortByStatus = false;
|
||||
} else if(val == &listData->sortByUpdate) {
|
||||
listData->sortByName = false;
|
||||
listData->sortByStatus = false;
|
||||
} else if(val == &listData->sortByStatus) {
|
||||
listData->sortByName = false;
|
||||
listData->sortByUpdate = false;
|
||||
}
|
||||
|
||||
linked_list_iter iter;
|
||||
@ -270,6 +298,7 @@ static void titledb_options_update(ui_view* view, void* data, linked_list* items
|
||||
titledb_options_add_entry(items, "Show 3DSXs", &listData->show3DSXs);
|
||||
titledb_options_add_entry(items, "Sort by name", &listData->sortByName);
|
||||
titledb_options_add_entry(items, "Sort by update date", &listData->sortByUpdate);
|
||||
titledb_options_add_entry(items, "Sort by install status", &listData->sortByStatus);
|
||||
}
|
||||
}
|
||||
|
||||
@ -385,6 +414,7 @@ void titledb_open() {
|
||||
data->show3DSXs = true;
|
||||
data->sortByName = true;
|
||||
data->sortByUpdate = false;
|
||||
data->sortByStatus = false;
|
||||
|
||||
data->populateData.finished = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user