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_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_extract_smdh(linked_list* items, list_item* selected);
void action_import_seed(linked_list* items, list_item* selected);

View File

@ -15,6 +15,7 @@
typedef struct {
linked_list* items;
list_item* selected;
bool ticket;
} delete_title_data;
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;
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();
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));
if(data == NULL) {
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->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 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 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};
@ -75,6 +76,7 @@ static void titles_action_update(ui_view* view, void* data, linked_list* items,
if(info->mediaType != MEDIATYPE_GAME_CARD) {
linked_list_add(items, &delete_title);
linked_list_add(items, &delete_title_ticket);
}
if(!info->twl) {