mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-04-24 18:36:51 +08:00
Add action for deleting a title and its ticket at the same time.
This commit is contained in:
parent
77cbab16a5
commit
d8abb42a1c
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user