From 9182ebfa00040903a34096a584f001cd7adb0ec5 Mon Sep 17 00:00:00 2001 From: Steveice10 Date: Sat, 24 Dec 2016 09:09:45 -0800 Subject: [PATCH] Color tickets based on whether they are in use. --- romfs/textcolor.cfg | 4 +++- source/core/screen.c | 4 ++++ source/core/screen.h | 4 +++- source/ui/section/action/deletetickets.c | 11 +++-------- source/ui/section/action/urlinstall.c | 1 + source/ui/section/task/listfiles.c | 1 + source/ui/section/task/listtickets.c | 11 ++++++++++- source/ui/section/task/task.h | 1 + 8 files changed, 26 insertions(+), 11 deletions(-) diff --git a/romfs/textcolor.cfg b/romfs/textcolor.cfg index ecb87ff..db1cb0b 100644 --- a/romfs/textcolor.cfg +++ b/romfs/textcolor.cfg @@ -8,4 +8,6 @@ directory=FF0000FF enabled=FF00FF00 disabled=FF0000FF installed=FF00FF00 -notinstalled=FF0000FF \ No newline at end of file +notinstalled=FF0000FF +ticketinuse=FF00FF00 +ticketnotinuse=FF0000FF \ No newline at end of file diff --git a/source/core/screen.c b/source/core/screen.c index 96729d3..f0c7d31 100644 --- a/source/core/screen.c +++ b/source/core/screen.c @@ -211,6 +211,10 @@ void screen_init() { colorConfig[COLOR_INSTALLED] = color; } else if(strcasecmp(key, "notinstalled") == 0) { colorConfig[COLOR_NOT_INSTALLED] = color; + } else if(strcasecmp(key, "ticketinuse") == 0) { + colorConfig[COLOR_TICKET_IN_USE] = color; + } else if(strcasecmp(key, "ticketnotinuse") == 0) { + colorConfig[COLOR_TICKET_NOT_IN_USE] = color; } } } diff --git a/source/core/screen.h b/source/core/screen.h index 2293f15..041984e 100644 --- a/source/core/screen.h +++ b/source/core/screen.h @@ -42,7 +42,7 @@ #define TEXTURE_AUTO_START 32 -#define NUM_COLORS 11 +#define NUM_COLORS 13 #define COLOR_TEXT 0 #define COLOR_NAND 1 @@ -55,6 +55,8 @@ #define COLOR_DISABLED 8 #define COLOR_INSTALLED 9 #define COLOR_NOT_INSTALLED 10 +#define COLOR_TICKET_IN_USE 11 +#define COLOR_TICKET_NOT_IN_USE 12 void screen_init(); void screen_exit(); diff --git a/source/ui/section/action/deletetickets.c b/source/ui/section/action/deletetickets.c index fbab536..ade5189 100644 --- a/source/ui/section/action/deletetickets.c +++ b/source/ui/section/action/deletetickets.c @@ -157,14 +157,9 @@ static void action_delete_tickets_loading_update(ui_view* view, void* data, floa list_item* item = (list_item*) linked_list_iter_next(&iter); ticket_info* info = (ticket_info*) item->data; - AM_TitleEntry entry; - for(FS_MediaType mediaType = MEDIATYPE_NAND; mediaType != MEDIATYPE_GAME_CARD; mediaType++) { - if(R_SUCCEEDED(AM_GetTitleInfo(mediaType, 1, &info->titleId, &entry))) { - linked_list_iter_remove(&iter); - task_free_ticket(item); - - break; - } + if(info->inUse) { + linked_list_iter_remove(&iter); + task_free_ticket(item); } } diff --git a/source/ui/section/action/urlinstall.c b/source/ui/section/action/urlinstall.c index 994731d..a7e8984 100644 --- a/source/ui/section/action/urlinstall.c +++ b/source/ui/section/action/urlinstall.c @@ -118,6 +118,7 @@ static Result action_url_install_open_dst(void* data, u32 index, void* initialRe installData->ticket = true; installData->ticketInfo.titleId = util_get_ticket_title_id((u8*) initialReadBlock); + installData->ticketInfo.inUse = false; AM_DeleteTicket(installData->ticketInfo.titleId); res = AM_InstallTicketBegin(handle); diff --git a/source/ui/section/task/listfiles.c b/source/ui/section/task/listfiles.c index b9b4b5a..3f889ad 100644 --- a/source/ui/section/task/listfiles.c +++ b/source/ui/section/task/listfiles.c @@ -103,6 +103,7 @@ Result task_create_file_item(list_item** out, FS_Archive archive, const char* pa if(R_SUCCEEDED(FSFILE_Read(fileHandle, &bytesRead, dataOffsets[sigType] + titleIdOffset, &titleId, sizeof(titleId))) && bytesRead == sizeof(titleId)) { fileInfo->isTicket = true; fileInfo->ticketInfo.titleId = __builtin_bswap64(titleId); + fileInfo->ticketInfo.inUse = false; } } } diff --git a/source/ui/section/task/listtickets.c b/source/ui/section/task/listtickets.c index c43d2fc..d347363 100644 --- a/source/ui/section/task/listtickets.c +++ b/source/ui/section/task/listtickets.c @@ -41,9 +41,18 @@ static void task_populate_tickets_thread(void* arg) { ticket_info* ticketInfo = (ticket_info*) calloc(1, sizeof(ticket_info)); if(ticketInfo != NULL) { ticketInfo->titleId = ticketIds[i]; + ticketInfo->inUse = false; + + AM_TitleEntry entry; + for(FS_MediaType mediaType = MEDIATYPE_NAND; mediaType != MEDIATYPE_GAME_CARD; mediaType++) { + if(R_SUCCEEDED(AM_GetTitleInfo(mediaType, 1, &ticketInfo->titleId, &entry))) { + ticketInfo->inUse = true; + break; + } + } snprintf(item->name, LIST_ITEM_NAME_MAX, "%016llX", ticketIds[i]); - item->color = COLOR_TEXT; + item->color = ticketInfo->inUse ? COLOR_TICKET_IN_USE : COLOR_TICKET_NOT_IN_USE; item->data = ticketInfo; linked_list_add(data->items, item); diff --git a/source/ui/section/task/task.h b/source/ui/section/task/task.h index adcb26f..62d3e4d 100644 --- a/source/ui/section/task/task.h +++ b/source/ui/section/task/task.h @@ -33,6 +33,7 @@ typedef struct pending_title_info_s { typedef struct ticket_info_s { u64 titleId; + bool inUse; } ticket_info; typedef struct ext_save_data_info_s {