Add action for deleting a title and its ticket at the same time.

This commit is contained in:
Steven Smith 2016-07-31 14:19:19 -07:00
parent 77cbab16a5
commit d8abb42a1c
3 changed files with 20 additions and 3 deletions

View File

@ -36,6 +36,7 @@ void action_install_cdn(linked_list* items, list_item* selected);
void action_install_cdn_noprompt(volatile bool* done, ticket_info* info, bool finishedPrompt); void action_install_cdn_noprompt(volatile bool* done, ticket_info* info, bool finishedPrompt);
void action_delete_title(linked_list* items, list_item* selected); void action_delete_title(linked_list* items, list_item* selected);
void action_delete_title_ticket(linked_list* items, list_item* selected);
void action_launch_title(linked_list* items, list_item* selected); void action_launch_title(linked_list* items, list_item* selected);
void action_extract_smdh(linked_list* items, list_item* selected); void action_extract_smdh(linked_list* items, list_item* selected);
void action_import_seed(linked_list* items, list_item* selected); void action_import_seed(linked_list* items, list_item* selected);

View File

@ -15,6 +15,7 @@
typedef struct { typedef struct {
linked_list* items; linked_list* items;
list_item* selected; list_item* selected;
bool ticket;
} delete_title_data; } delete_title_data;
static void action_delete_title_draw_top(ui_view* view, void* data, float x1, float y1, float x2, float y2) { static void action_delete_title_draw_top(ui_view* view, void* data, float x1, float y1, float x2, float y2) {
@ -26,7 +27,11 @@ static void action_delete_title_update(ui_view* view, void* data, float* progres
title_info* info = (title_info*) deleteData->selected->data; title_info* info = (title_info*) deleteData->selected->data;
Result res = AM_DeleteTitle(info->mediaType, info->titleId); Result res = 0;
if(R_SUCCEEDED(res = AM_DeleteTitle(info->mediaType, info->titleId)) && deleteData->ticket) {
res = AM_DeleteTicket(info->titleId);
}
ui_pop(); ui_pop();
info_destroy(view); info_destroy(view);
@ -51,7 +56,7 @@ static void action_delete_title_onresponse(ui_view* view, void* data, bool respo
} }
} }
void action_delete_title(linked_list* items, list_item* selected) { static void action_delete_title_internal(linked_list* items, list_item* selected, const char* message, bool ticket) {
delete_title_data* data = (delete_title_data*) calloc(1, sizeof(delete_title_data)); delete_title_data* data = (delete_title_data*) calloc(1, sizeof(delete_title_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete title data."); error_display(NULL, NULL, "Failed to allocate delete title data.");
@ -61,6 +66,15 @@ void action_delete_title(linked_list* items, list_item* selected) {
data->items = items; data->items = items;
data->selected = selected; data->selected = selected;
data->ticket = ticket;
prompt_display("Confirmation", "Delete the selected title?", COLOR_TEXT, true, data, action_delete_title_draw_top, action_delete_title_onresponse); prompt_display("Confirmation", message, COLOR_TEXT, true, data, action_delete_title_draw_top, action_delete_title_onresponse);
}
void action_delete_title(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title?", false);
}
void action_delete_title_ticket(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title and ticket?", true);
} }

View File

@ -14,6 +14,7 @@
static list_item launch_title = {"Launch Title", COLOR_TEXT, action_launch_title}; static list_item launch_title = {"Launch Title", COLOR_TEXT, action_launch_title};
static list_item delete_title = {"Delete Title", COLOR_TEXT, action_delete_title}; static list_item delete_title = {"Delete Title", COLOR_TEXT, action_delete_title};
static list_item delete_title_ticket = {"Delete Title And Ticket", COLOR_TEXT, action_delete_title_ticket};
static list_item extract_smdh = {"Extract SMDH", COLOR_TEXT, action_extract_smdh}; static list_item extract_smdh = {"Extract SMDH", COLOR_TEXT, action_extract_smdh};
static list_item import_seed = {"Import Seed", COLOR_TEXT, action_import_seed}; static list_item import_seed = {"Import Seed", COLOR_TEXT, action_import_seed};
static list_item browse_save_data = {"Browse Save Data", COLOR_TEXT, action_browse_title_save_data}; static list_item browse_save_data = {"Browse Save Data", COLOR_TEXT, action_browse_title_save_data};
@ -75,6 +76,7 @@ static void titles_action_update(ui_view* view, void* data, linked_list* items,
if(info->mediaType != MEDIATYPE_GAME_CARD) { if(info->mediaType != MEDIATYPE_GAME_CARD) {
linked_list_add(items, &delete_title); linked_list_add(items, &delete_title);
linked_list_add(items, &delete_title_ticket);
} }
if(!info->twl) { if(!info->twl) {