2020/08/19 : Zithair - last update

This commit is contained in:
Rintim 2020-08-19 23:08:03 +08:00
parent 37a628f5a9
commit 1d25c5f0a9
16 changed files with 98 additions and 98 deletions

View File

@ -63,7 +63,7 @@ static Result action_delete_pending_titles_restore(void* data, u32 index) {
} }
static bool action_delete_pending_titles_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_delete_pending_titles_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_delete_pending_titles_draw_top, res, "Failed to delete pending title."); *errorView = error_display_res(data, action_delete_pending_titles_draw_top, res, "無法刪除待裝程式");
return true; return true;
} }
@ -84,7 +84,7 @@ static void action_delete_pending_titles_update(ui_view* view, void* data, float
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(deleteData->deleteInfo.result)) { if(R_SUCCEEDED(deleteData->deleteInfo.result)) {
prompt_display_notify("Success", "Pending title(s) deleted.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("成功", "待裝程式已刪除", COLOR_TEXT, NULL, NULL, NULL);
} }
action_delete_pending_titles_free_data(deleteData); action_delete_pending_titles_free_data(deleteData);
@ -106,9 +106,9 @@ static void action_delete_pending_titles_onresponse(ui_view* view, void* data, u
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
Result res = task_data_op(&deleteData->deleteInfo); Result res = task_data_op(&deleteData->deleteInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Deleting Pending Title(s)", "Press B to cancel.", true, data, action_delete_pending_titles_update, action_delete_pending_titles_draw_top); info_display("刪除待裝程式中", "按B鍵取消", true, data, action_delete_pending_titles_update, action_delete_pending_titles_draw_top);
} else { } else {
error_display_res(NULL, NULL, res, "Failed to initiate delete operation."); error_display_res(NULL, NULL, res, "無法初始化刪除操作");
action_delete_pending_titles_free_data(deleteData); action_delete_pending_titles_free_data(deleteData);
} }

View File

@ -28,12 +28,12 @@ static void action_delete_system_save_data_update(ui_view* view, void* data, flo
info_destroy(view); info_destroy(view);
if(R_FAILED(res)) { if(R_FAILED(res)) {
error_display_res(info, task_draw_system_save_data_info, res, "Failed to delete system save data."); error_display_res(info, task_draw_system_save_data_info, res, "Failed to delete 系統儲存數據");
} else { } else {
linked_list_remove(deleteData->items, deleteData->selected); linked_list_remove(deleteData->items, deleteData->selected);
task_free_system_save_data(deleteData->selected); task_free_system_save_data(deleteData->selected);
prompt_display_notify("Success", "System save data deleted.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("成功", "系統儲存數據已刪除", COLOR_TEXT, NULL, NULL, NULL);
} }
free(data); free(data);
@ -41,7 +41,7 @@ static void action_delete_system_save_data_update(ui_view* view, void* data, flo
static void action_delete_system_save_data_onresponse(ui_view* view, void* data, u32 response) { static void action_delete_system_save_data_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Deleting System Save Data", "", false, data, action_delete_system_save_data_update, action_delete_system_save_data_draw_top); info_display("正在刪除系統儲存數據中", "", false, data, action_delete_system_save_data_update, action_delete_system_save_data_draw_top);
} else { } else {
free(data); free(data);
} }
@ -50,7 +50,7 @@ static void action_delete_system_save_data_onresponse(ui_view* view, void* data,
void action_delete_system_save_data(linked_list* items, list_item* selected) { void action_delete_system_save_data(linked_list* items, list_item* selected) {
delete_system_save_data_data* data = (delete_system_save_data_data*) calloc(1, sizeof(delete_system_save_data_data)); delete_system_save_data_data* data = (delete_system_save_data_data*) calloc(1, sizeof(delete_system_save_data_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete system save data data."); error_display(NULL, NULL, "無法分配刪除系統儲存數據的數據");
return; return;
} }
@ -58,5 +58,5 @@ void action_delete_system_save_data(linked_list* items, list_item* selected) {
data->items = items; data->items = items;
data->selected = selected; data->selected = selected;
prompt_display_yes_no("Confirmation", "Delete the selected system save data?", COLOR_TEXT, data, action_delete_system_save_data_draw_top, action_delete_system_save_data_onresponse); prompt_display_yes_no("確認", "即將刪除選定的系統儲存數據,是否繼續?", COLOR_TEXT, data, action_delete_system_save_data_draw_top, action_delete_system_save_data_onresponse);
} }

View File

@ -59,7 +59,7 @@ static Result action_delete_tickets_restore(void* data, u32 index) {
} }
static bool action_delete_tickets_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_delete_tickets_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_delete_tickets_draw_top, res, "Failed to delete ticket(s)."); *errorView = error_display_res(data, action_delete_tickets_draw_top, res, "無法刪除憑據");
return true; return true;
} }
@ -80,7 +80,7 @@ static void action_delete_tickets_update(ui_view* view, void* data, float* progr
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(deleteData->deleteInfo.result)) { if(R_SUCCEEDED(deleteData->deleteInfo.result)) {
prompt_display_notify("Success", "Ticket(s) deleted.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("成功", "憑據已刪除", COLOR_TEXT, NULL, NULL, NULL);
} }
action_delete_tickets_free_data(deleteData); action_delete_tickets_free_data(deleteData);
@ -102,9 +102,9 @@ static void action_delete_tickets_onresponse(ui_view* view, void* data, u32 resp
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
Result res = task_data_op(&deleteData->deleteInfo); Result res = task_data_op(&deleteData->deleteInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Deleting", "Press B to cancel.", true, data, action_delete_tickets_update, action_delete_tickets_draw_top); info_display("正在刪除中", "按B鍵取消", true, data, action_delete_tickets_update, action_delete_tickets_draw_top);
} else { } else {
error_display_res(NULL, NULL, res, "Failed to initiate delete operation."); error_display_res(NULL, NULL, res, "無法初始化刪除操作");
action_delete_tickets_free_data(deleteData); action_delete_tickets_free_data(deleteData);
} }
@ -148,9 +148,9 @@ static void action_delete_tickets_loading_update(ui_view* view, void* data, floa
loadingData->deleteData->deleteInfo.total = linked_list_size(&loadingData->deleteData->contents); loadingData->deleteData->deleteInfo.total = linked_list_size(&loadingData->deleteData->contents);
loadingData->deleteData->deleteInfo.processed = loadingData->deleteData->deleteInfo.total; loadingData->deleteData->deleteInfo.processed = loadingData->deleteData->deleteInfo.total;
prompt_display_yes_no("Confirmation", loadingData->message, COLOR_TEXT, loadingData->deleteData, action_delete_tickets_draw_top, action_delete_tickets_onresponse); prompt_display_yes_no("確認", loadingData->message, COLOR_TEXT, loadingData->deleteData, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
} else { } else {
error_display_res(NULL, NULL, loadingData->popData.result, "Failed to populate ticket list."); error_display_res(NULL, NULL, loadingData->popData.result, "無法列舉憑據目錄");
action_delete_tickets_free_data(loadingData->deleteData); action_delete_tickets_free_data(loadingData->deleteData);
} }
@ -163,13 +163,13 @@ static void action_delete_tickets_loading_update(ui_view* view, void* data, floa
svcSignalEvent(loadingData->popData.cancelEvent); svcSignalEvent(loadingData->popData.cancelEvent);
} }
snprintf(text, PROGRESS_TEXT_MAX, "Fetching ticket list..."); snprintf(text, PROGRESS_TEXT_MAX, "正在獲取憑據目錄中......");
} }
static void action_delete_tickets_internal(linked_list* items, list_item* selected, const char* message, bool unused) { static void action_delete_tickets_internal(linked_list* items, list_item* selected, const char* message, bool unused) {
delete_tickets_data* data = (delete_tickets_data*) calloc(1, sizeof(delete_tickets_data)); delete_tickets_data* data = (delete_tickets_data*) calloc(1, sizeof(delete_tickets_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate delete data."); error_display(NULL, NULL, "無法分配刪除數據");
return; return;
} }
@ -195,7 +195,7 @@ static void action_delete_tickets_internal(linked_list* items, list_item* select
if(unused) { if(unused) {
delete_tickets_loading_data* loadingData = (delete_tickets_loading_data*) calloc(1, sizeof(delete_tickets_loading_data)); delete_tickets_loading_data* loadingData = (delete_tickets_loading_data*) calloc(1, sizeof(delete_tickets_loading_data));
if(loadingData == NULL) { if(loadingData == NULL) {
error_display(NULL, NULL, "Failed to allocate loading data."); error_display(NULL, NULL, "無法分配讀取數據");
action_delete_tickets_free_data(data); action_delete_tickets_free_data(data);
return; return;
@ -208,28 +208,28 @@ static void action_delete_tickets_internal(linked_list* items, list_item* select
Result listRes = task_populate_tickets(&loadingData->popData); Result listRes = task_populate_tickets(&loadingData->popData);
if(R_FAILED(listRes)) { if(R_FAILED(listRes)) {
error_display_res(NULL, NULL, listRes, "Failed to initiate ticket list population."); error_display_res(NULL, NULL, listRes, "無法初始化憑據目錄結構");
free(loadingData); free(loadingData);
action_delete_tickets_free_data(data); action_delete_tickets_free_data(data);
return; return;
} }
info_display("Loading", "Press B to cancel.", false, loadingData, action_delete_tickets_loading_update, action_delete_tickets_loading_draw_top); info_display("正在讀取中", "按B鍵取消", false, loadingData, action_delete_tickets_loading_update, action_delete_tickets_loading_draw_top);
} else { } else {
linked_list_add(&data->contents, selected); linked_list_add(&data->contents, selected);
data->deleteInfo.total = 1; data->deleteInfo.total = 1;
data->deleteInfo.processed = data->deleteInfo.total; data->deleteInfo.processed = data->deleteInfo.total;
prompt_display_yes_no("Confirmation", message, COLOR_TEXT, data, action_delete_tickets_draw_top, action_delete_tickets_onresponse); prompt_display_yes_no("確認", message, COLOR_TEXT, data, action_delete_tickets_draw_top, action_delete_tickets_onresponse);
} }
} }
void action_delete_ticket(linked_list* items, list_item* selected) { void action_delete_ticket(linked_list* items, list_item* selected) {
action_delete_tickets_internal(items, selected, "Delete the selected ticket?", false); action_delete_tickets_internal(items, selected, "即將刪除所選的憑據,是否繼續?", false);
} }
void action_delete_tickets_unused(linked_list* items, list_item* selected) { void action_delete_tickets_unused(linked_list* items, list_item* selected) {
action_delete_tickets_internal(items, selected, "Delete all unused tickets?", true); action_delete_tickets_internal(items, selected, "即將刪除所有未使用的憑據,是否繼續?", true);
} }

View File

@ -32,12 +32,12 @@ static void action_delete_title_update(ui_view* view, void* data, float* progres
info_destroy(view); info_destroy(view);
if(R_FAILED(res)) { if(R_FAILED(res)) {
error_display_res(info, task_draw_title_info, res, "Failed to delete title."); error_display_res(info, task_draw_title_info, res, "無法刪除程式");
} else { } else {
linked_list_remove(deleteData->items, deleteData->selected); linked_list_remove(deleteData->items, deleteData->selected);
task_free_title(deleteData->selected); task_free_title(deleteData->selected);
prompt_display_notify("Success", "Title deleted.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("成功", "程式已刪除", COLOR_TEXT, NULL, NULL, NULL);
} }
free(data); free(data);
@ -45,7 +45,7 @@ static void action_delete_title_update(ui_view* view, void* data, float* progres
static void action_delete_title_onresponse(ui_view* view, void* data, u32 response) { static void action_delete_title_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Deleting Title", "", false, data, action_delete_title_update, action_delete_title_draw_top); info_display("正在刪除程式中", "", false, data, action_delete_title_update, action_delete_title_draw_top);
} else { } else {
free(data); free(data);
} }
@ -54,7 +54,7 @@ static void action_delete_title_onresponse(ui_view* view, void* data, u32 respon
static void action_delete_title_internal(linked_list* items, list_item* selected, const char* message, bool ticket) { 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, "無法分配程式刪除數據");
return; return;
} }
@ -63,13 +63,13 @@ static void action_delete_title_internal(linked_list* items, list_item* selected
data->selected = selected; data->selected = selected;
data->ticket = ticket; data->ticket = ticket;
prompt_display_yes_no("Confirmation", message, COLOR_TEXT, data, action_delete_title_draw_top, action_delete_title_onresponse); prompt_display_yes_no("確認", message, COLOR_TEXT, data, action_delete_title_draw_top, action_delete_title_onresponse);
} }
void action_delete_title(linked_list* items, list_item* selected) { void action_delete_title(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title?", false); action_delete_title_internal(items, selected, "即將刪除所選的程式,是否繼續?", false);
} }
void action_delete_title_ticket(linked_list* items, list_item* selected) { void action_delete_title_ticket(linked_list* items, list_item* selected) {
action_delete_title_internal(items, selected, "Delete the selected title and ticket?", true); action_delete_title_internal(items, selected, "即將刪除所選的程式及憑據,是否繼續?", true);
} }

View File

@ -75,7 +75,7 @@ static Result action_erase_twl_save_restore(void* data, u32 index) {
} }
static bool action_erase_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_erase_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((erase_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to erase save."); *errorView = error_display_res(((erase_twl_save_data*) data)->title, task_draw_title_info, res, "無法清楚儲存數據");
return true; return true;
} }
@ -87,7 +87,7 @@ static void action_erase_twl_save_update(ui_view* view, void* data, float* progr
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(eraseData->eraseInfo.result)) { if(R_SUCCEEDED(eraseData->eraseInfo.result)) {
prompt_display_notify("Success", "Save erased.", COLOR_TEXT, eraseData->title, task_draw_title_info, NULL); prompt_display_notify("成功", "儲存數據已清理", COLOR_TEXT, eraseData->title, task_draw_title_info, NULL);
} }
free(data); free(data);
@ -116,9 +116,9 @@ static void action_erase_twl_save_onresponse(ui_view* view, void* data, u32 resp
Result res = task_data_op(&eraseData->eraseInfo); Result res = task_data_op(&eraseData->eraseInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Erasing Save", "Press B to cancel.", true, data, action_erase_twl_save_update, action_erase_twl_save_draw_top); info_display("正在清理存儲數據中", "按B鍵取消", true, data, action_erase_twl_save_update, action_erase_twl_save_draw_top);
} else { } else {
error_display_res(eraseData->title, task_draw_title_info, res, "Failed to initiate save erase."); error_display_res(eraseData->title, task_draw_title_info, res, "無法初始化清理儲存數據");
free(data); free(data);
} }
} else { } else {
@ -129,7 +129,7 @@ static void action_erase_twl_save_onresponse(ui_view* view, void* data, u32 resp
void action_erase_twl_save(linked_list* items, list_item* selected) { void action_erase_twl_save(linked_list* items, list_item* selected) {
erase_twl_save_data* data = (erase_twl_save_data*) calloc(1, sizeof(erase_twl_save_data)); erase_twl_save_data* data = (erase_twl_save_data*) calloc(1, sizeof(erase_twl_save_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate erase TWL save data."); error_display(NULL, NULL, "無法分配清理DSi儲存數據");
return; return;
} }
@ -164,5 +164,5 @@ void action_erase_twl_save(linked_list* items, list_item* selected) {
data->eraseInfo.finished = true; data->eraseInfo.finished = true;
prompt_display_yes_no("Confirmation", "Erase the save of the selected title?", COLOR_TEXT, data, action_erase_twl_save_draw_top, action_erase_twl_save_onresponse); prompt_display_yes_no("確認", "即將清理所選程式的儲存數據,是否繼續?", COLOR_TEXT, data, action_erase_twl_save_draw_top, action_erase_twl_save_onresponse);
} }

View File

@ -19,7 +19,7 @@ static void action_export_secure_value_update(ui_view* view, void* data, float*
ui_pop(); ui_pop();
info_destroy(view); info_destroy(view);
prompt_display_notify("Failure", "Secure value not set.", COLOR_TEXT, info, task_draw_title_info, NULL); prompt_display_notify("失敗", "安全值未設置", COLOR_TEXT, info, task_draw_title_info, NULL);
return; return;
} }
@ -53,18 +53,18 @@ static void action_export_secure_value_update(ui_view* view, void* data, float*
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Secure value exported.", COLOR_TEXT, info, task_draw_title_info, NULL); prompt_display_notify("成功", "已導出安全值", COLOR_TEXT, info, task_draw_title_info, NULL);
} else { } else {
error_display_res(info, task_draw_title_info, res, "Failed to export secure value."); error_display_res(info, task_draw_title_info, res, "無法導出安全值");
} }
} }
static void action_export_secure_value_onresponse(ui_view* view, void* data, u32 response) { static void action_export_secure_value_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Exporting Secure Value", "", false, data, action_export_secure_value_update, task_draw_title_info); info_display("正在導出安全值中", "", false, data, action_export_secure_value_update, task_draw_title_info);
} }
} }
void action_export_secure_value(linked_list* items, list_item* selected) { void action_export_secure_value(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Export the secure value of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_export_secure_value_onresponse); prompt_display_yes_no("確認", "即將導出所選程式的安全值,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_export_secure_value_onresponse);
} }

View File

@ -97,7 +97,7 @@ static Result action_export_twl_save_restore(void* data, u32 index) {
} }
static bool action_export_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_export_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((export_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to export save."); *errorView = error_display_res(((export_twl_save_data*) data)->title, task_draw_title_info, res, "無法導出儲存數據");
return true; return true;
} }
@ -109,7 +109,7 @@ static void action_export_twl_save_update(ui_view* view, void* data, float* prog
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(exportData->exportInfo.result)) { if(R_SUCCEEDED(exportData->exportInfo.result)) {
prompt_display_notify("Success", "Save exported.", COLOR_TEXT, exportData->title, task_draw_title_info, NULL); prompt_display_notify("成功", "儲存數據已導出", COLOR_TEXT, exportData->title, task_draw_title_info, NULL);
} }
free(data); free(data);
@ -138,9 +138,9 @@ static void action_export_twl_save_onresponse(ui_view* view, void* data, u32 res
Result res = task_data_op(&exportData->exportInfo); Result res = task_data_op(&exportData->exportInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Exporting Save", "Press B to cancel.", true, data, action_export_twl_save_update, action_export_twl_save_draw_top); info_display("正在導出儲存數據中", "按B鍵取消", true, data, action_export_twl_save_update, action_export_twl_save_draw_top);
} else { } else {
error_display_res(exportData->title, task_draw_title_info, res, "Failed to initiate save export."); error_display_res(exportData->title, task_draw_title_info, res, "無法初始化導出儲存數據");
free(data); free(data);
} }
} else { } else {
@ -151,7 +151,7 @@ static void action_export_twl_save_onresponse(ui_view* view, void* data, u32 res
void action_export_twl_save(linked_list* items, list_item* selected) { void action_export_twl_save(linked_list* items, list_item* selected) {
export_twl_save_data* data = (export_twl_save_data*) calloc(1, sizeof(export_twl_save_data)); export_twl_save_data* data = (export_twl_save_data*) calloc(1, sizeof(export_twl_save_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate export TWL save data."); error_display(NULL, NULL, "無法分配導出DSi儲存數據");
return; return;
} }
@ -186,5 +186,5 @@ void action_export_twl_save(linked_list* items, list_item* selected) {
data->exportInfo.finished = true; data->exportInfo.finished = true;
prompt_display_yes_no("Confirmation", "Export the save of the selected title?", COLOR_TEXT, data, action_export_twl_save_draw_top, action_export_twl_save_onresponse); prompt_display_yes_no("確認", "即將導出所選程式的儲存數據,是否繼續?", COLOR_TEXT, data, action_export_twl_save_draw_top, action_export_twl_save_onresponse);
} }

View File

@ -61,18 +61,18 @@ static void action_extract_smdh_update(ui_view* view, void* data, float* progres
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "SMDH extracted.", COLOR_TEXT, info, task_draw_title_info, NULL); prompt_display_notify("成功", "SMDH 已提取", COLOR_TEXT, info, task_draw_title_info, NULL);
} else { } else {
error_display_res(info, task_draw_title_info, res, "Failed to extract SMDH."); error_display_res(info, task_draw_title_info, res, "無法提取 SMDH.");
} }
} }
static void action_extract_smdh_onresponse(ui_view* view, void* data, u32 response) { static void action_extract_smdh_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Extracting SMDH", "", false, data, action_extract_smdh_update, task_draw_title_info); info_display("正在提取 SMDH 中", "", false, data, action_extract_smdh_update, task_draw_title_info);
} }
} }
void action_extract_smdh(linked_list* items, list_item* selected) { void action_extract_smdh(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Extract the SMDH of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_extract_smdh_onresponse); prompt_display_yes_no("確認", "即將提取所選程式的 SMDH是否繼續", COLOR_TEXT, selected->data, task_draw_title_info, action_extract_smdh_onresponse);
} }

View File

@ -37,18 +37,18 @@ static void action_import_secure_value_update(ui_view* view, void* data, float*
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Secure value imported.", COLOR_TEXT, info, task_draw_title_info, NULL); prompt_display_notify("成功", "已導入安全值", COLOR_TEXT, info, task_draw_title_info, NULL);
} else { } else {
error_display_res(info, task_draw_title_info, res, "Failed to import secure value."); error_display_res(info, task_draw_title_info, res, "無法導入安全值");
} }
} }
static void action_import_secure_value_onresponse(ui_view* view, void* data, u32 response) { static void action_import_secure_value_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Importing Secure Value", "", false, data, action_import_secure_value_update, task_draw_title_info); info_display("正在導入安全值中", "", false, data, action_import_secure_value_update, task_draw_title_info);
} }
} }
void action_import_secure_value(linked_list* items, list_item* selected) { void action_import_secure_value(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Import the secure value of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_secure_value_onresponse); prompt_display_yes_no("確認", "即將導入所選的安全值到所選的程式中,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_secure_value_onresponse);
} }

View File

@ -16,7 +16,7 @@ static void action_import_seed_update(ui_view* view, void* data, float* progress
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
prompt_display_notify("Success", "Seed imported.", COLOR_TEXT, info, task_draw_title_info, NULL); prompt_display_notify("成功", "已導入 Seed.", COLOR_TEXT, info, task_draw_title_info, NULL);
} else { } else {
error_display_res(info, task_draw_title_info, res, "Failed to import seed."); error_display_res(info, task_draw_title_info, res, "Failed to import seed.");
} }
@ -24,10 +24,10 @@ static void action_import_seed_update(ui_view* view, void* data, float* progress
static void action_import_seed_onresponse(ui_view* view, void* data, u32 response) { static void action_import_seed_onresponse(ui_view* view, void* data, u32 response) {
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
info_display("Importing Seed", "", false, data, action_import_seed_update, task_draw_title_info); info_display("正在導入 Seed 中", "", false, data, action_import_seed_update, task_draw_title_info);
} }
} }
void action_import_seed(linked_list* items, list_item* selected) { void action_import_seed(linked_list* items, list_item* selected) {
prompt_display_yes_no("Confirmation", "Import the seed of the selected title?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_seed_onresponse); prompt_display_yes_no("確認", "即將導入所選的 Seed 到所選的程式中,是否繼續?", COLOR_TEXT, selected->data, task_draw_title_info, action_import_seed_onresponse);
} }

View File

@ -83,7 +83,7 @@ static Result action_import_twl_save_restore(void* data, u32 index) {
} }
static bool action_import_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_import_twl_save_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(((import_twl_save_data*) data)->title, task_draw_title_info, res, "Failed to import save."); *errorView = error_display_res(((import_twl_save_data*) data)->title, task_draw_title_info, res, "無法導入儲存數據");
return true; return true;
} }
@ -95,7 +95,7 @@ static void action_import_twl_save_update(ui_view* view, void* data, float* prog
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(importData->importInfo.result)) { if(R_SUCCEEDED(importData->importInfo.result)) {
prompt_display_notify("Success", "Save imported.", COLOR_TEXT, importData->title, task_draw_title_info, NULL); prompt_display_notify("成功", "已導入儲存數據", COLOR_TEXT, importData->title, task_draw_title_info, NULL);
} }
free(data); free(data);
@ -124,9 +124,9 @@ static void action_import_twl_save_onresponse(ui_view* view, void* data, u32 res
Result res = task_data_op(&importData->importInfo); Result res = task_data_op(&importData->importInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Importing Save", "Press B to cancel.", true, data, action_import_twl_save_update, action_import_twl_save_draw_top); info_display("正在導入儲存數據中", "按B鍵取消", true, data, action_import_twl_save_update, action_import_twl_save_draw_top);
} else { } else {
error_display_res(importData->title, task_draw_title_info, res, "Failed to initiate save import."); error_display_res(importData->title, task_draw_title_info, res, "無法初始化儲存數據導入");
free(data); free(data);
} }
} else { } else {
@ -137,7 +137,7 @@ static void action_import_twl_save_onresponse(ui_view* view, void* data, u32 res
void action_import_twl_save(linked_list* items, list_item* selected) { void action_import_twl_save(linked_list* items, list_item* selected) {
import_twl_save_data* data = (import_twl_save_data*) calloc(1, sizeof(import_twl_save_data)); import_twl_save_data* data = (import_twl_save_data*) calloc(1, sizeof(import_twl_save_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate import TWL save data."); error_display(NULL, NULL, "無法分配DSi儲存數據導入");
return; return;
} }
@ -172,5 +172,5 @@ void action_import_twl_save(linked_list* items, list_item* selected) {
data->importInfo.finished = true; data->importInfo.finished = true;
prompt_display_yes_no("Confirmation", "Import the save of the selected title?", COLOR_TEXT, data, action_import_twl_save_draw_top, action_import_twl_save_onresponse); prompt_display_yes_no("確認", "即將導入所選儲存數據到所選程式中,是否繼續?", COLOR_TEXT, data, action_import_twl_save_draw_top, action_import_twl_save_onresponse);
} }

View File

@ -129,7 +129,7 @@ static Result action_install_tickets_restore(void* data, u32 index) {
} }
static bool action_install_tickets_error(void* data, u32 index, Result res, ui_view** errorView) { static bool action_install_tickets_error(void* data, u32 index, Result res, ui_view** errorView) {
*errorView = error_display_res(data, action_install_tickets_draw_top, res, "Failed to install ticket."); *errorView = error_display_res(data, action_install_tickets_draw_top, res, "無法安裝憑據");
return true; return true;
} }
@ -158,7 +158,7 @@ static void action_install_tickets_update(ui_view* view, void* data, float* prog
info_destroy(view); info_destroy(view);
if(R_SUCCEEDED(installData->installInfo.result)) { if(R_SUCCEEDED(installData->installInfo.result)) {
prompt_display_notify("Success", "Install finished.", COLOR_TEXT, NULL, NULL, NULL); prompt_display_notify("成功", "已成功安裝", COLOR_TEXT, NULL, NULL, NULL);
} }
action_install_tickets_free_data(installData); action_install_tickets_free_data(installData);
@ -171,7 +171,7 @@ static void action_install_tickets_update(ui_view* view, void* data, float* prog
} }
*progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0; *progress = installData->installInfo.currTotal != 0 ? (float) ((double) installData->installInfo.currProcessed / (double) installData->installInfo.currTotal) : 0;
snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s, ETA %s", installData->installInfo.processed, installData->installInfo.total, snprintf(text, PROGRESS_TEXT_MAX, "%lu / %lu\n%.2f %s / %.2f %s\n%.2f %s/s, 剩餘 %s", installData->installInfo.processed, installData->installInfo.total,
ui_get_display_size(installData->installInfo.currProcessed), ui_get_display_size(installData->installInfo.currProcessed),
ui_get_display_size_units(installData->installInfo.currProcessed), ui_get_display_size_units(installData->installInfo.currProcessed),
ui_get_display_size(installData->installInfo.currTotal), ui_get_display_size(installData->installInfo.currTotal),
@ -187,9 +187,9 @@ static void action_install_tickets_onresponse(ui_view* view, void* data, u32 res
if(response == PROMPT_YES) { if(response == PROMPT_YES) {
Result res = task_data_op(&installData->installInfo); Result res = task_data_op(&installData->installInfo);
if(R_SUCCEEDED(res)) { if(R_SUCCEEDED(res)) {
info_display("Installing ticket(s)", "Press B to cancel.", true, data, action_install_tickets_update, action_install_tickets_draw_top); info_display("正在安裝憑據中", "按B鍵取消", true, data, action_install_tickets_update, action_install_tickets_draw_top);
} else { } else {
error_display_res(NULL, NULL, res, "Failed to initiate ticket installation."); error_display_res(NULL, NULL, res, "無法初始化憑據安裝");
action_install_tickets_free_data(installData); action_install_tickets_free_data(installData);
} }
@ -222,9 +222,9 @@ static void action_install_tickets_loading_update(ui_view* view, void* data, flo
loadingData->installData->installInfo.total = linked_list_size(&loadingData->installData->contents); loadingData->installData->installInfo.total = linked_list_size(&loadingData->installData->contents);
loadingData->installData->installInfo.processed = loadingData->installData->installInfo.total; loadingData->installData->installInfo.processed = loadingData->installData->installInfo.total;
prompt_display_yes_no("Confirmation", loadingData->message, COLOR_TEXT, loadingData->installData, action_install_tickets_draw_top, action_install_tickets_onresponse); prompt_display_yes_no("確認", loadingData->message, COLOR_TEXT, loadingData->installData, action_install_tickets_draw_top, action_install_tickets_onresponse);
} else { } else {
error_display_res(NULL, NULL, loadingData->popData.result, "Failed to populate ticket list."); error_display_res(NULL, NULL, loadingData->popData.result, "無法列舉憑據目錄");
action_install_tickets_free_data(loadingData->installData); action_install_tickets_free_data(loadingData->installData);
} }
@ -237,13 +237,13 @@ static void action_install_tickets_loading_update(ui_view* view, void* data, flo
svcSignalEvent(loadingData->popData.cancelEvent); svcSignalEvent(loadingData->popData.cancelEvent);
} }
snprintf(text, PROGRESS_TEXT_MAX, "Fetching ticket list..."); snprintf(text, PROGRESS_TEXT_MAX, "獲取憑據目錄......");
} }
static void action_install_tickets_internal(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData, const char* message, bool delete) { static void action_install_tickets_internal(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData, const char* message, bool delete) {
install_tickets_data* data = (install_tickets_data*) calloc(1, sizeof(install_tickets_data)); install_tickets_data* data = (install_tickets_data*) calloc(1, sizeof(install_tickets_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "Failed to allocate install tickets data."); error_display(NULL, NULL, "無法分配憑據安裝數據");
return; return;
} }
@ -253,7 +253,7 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
file_info* targetInfo = (file_info*) selected->data; file_info* targetInfo = (file_info*) selected->data;
Result targetCreateRes = task_create_file_item(&data->targetItem, targetInfo->archive, targetInfo->path, targetInfo->attributes, true); Result targetCreateRes = task_create_file_item(&data->targetItem, targetInfo->archive, targetInfo->path, targetInfo->attributes, true);
if(R_FAILED(targetCreateRes)) { if(R_FAILED(targetCreateRes)) {
error_display_res(NULL, NULL, targetCreateRes, "Failed to create target file item."); error_display_res(NULL, NULL, targetCreateRes, "無法創建目標档案");
action_install_tickets_free_data(data); action_install_tickets_free_data(data);
return; return;
@ -293,7 +293,7 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
install_tickets_loading_data* loadingData = (install_tickets_loading_data*) calloc(1, sizeof(install_tickets_loading_data)); install_tickets_loading_data* loadingData = (install_tickets_loading_data*) calloc(1, sizeof(install_tickets_loading_data));
if(loadingData == NULL) { if(loadingData == NULL) {
error_display(NULL, NULL, "Failed to allocate loading data."); error_display(NULL, NULL, "無法分配讀取數據");
action_install_tickets_free_data(data); action_install_tickets_free_data(data);
return; return;
@ -316,28 +316,28 @@ static void action_install_tickets_internal(linked_list* items, list_item* selec
Result listRes = task_populate_files(&loadingData->popData); Result listRes = task_populate_files(&loadingData->popData);
if(R_FAILED(listRes)) { if(R_FAILED(listRes)) {
error_display_res(NULL, NULL, listRes, "Failed to initiate ticket list population."); error_display_res(NULL, NULL, listRes, "無法初始化憑據目錄結構");
free(loadingData); free(loadingData);
action_install_tickets_free_data(data); action_install_tickets_free_data(data);
return; return;
} }
info_display("Loading", "Press B to cancel.", false, loadingData, action_install_tickets_loading_update, action_install_tickets_loading_draw_top); info_display("正在讀取中", "按B鍵取消", false, loadingData, action_install_tickets_loading_update, action_install_tickets_loading_draw_top);
} }
void action_install_ticket(linked_list* items, list_item* selected) { void action_install_ticket(linked_list* items, list_item* selected) {
action_install_tickets_internal(items, selected, NULL, NULL, "Install the selected ticket?", false); action_install_tickets_internal(items, selected, NULL, NULL, "即將安裝所選的憑據,是否繼續?", false);
} }
void action_install_ticket_delete(linked_list* items, list_item* selected) { void action_install_ticket_delete(linked_list* items, list_item* selected) {
action_install_tickets_internal(items, selected, NULL, NULL, "Install and delete the selected ticket?", true); action_install_tickets_internal(items, selected, NULL, NULL, "即將安裝並刪除所選的憑據,是否繼續?", true);
} }
void action_install_tickets(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) { void action_install_tickets(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) {
action_install_tickets_internal(items, selected, filter, filterData, "Install all tickets in the current directory?", false); action_install_tickets_internal(items, selected, filter, filterData, "即將安裝當前資料夾中所有的憑據,是否繼續?", false);
} }
void action_install_tickets_delete(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) { void action_install_tickets_delete(linked_list* items, list_item* selected, bool (*filter)(void* data, const char* name, u32 attributes), void* filterData) {
action_install_tickets_internal(items, selected, filter, filterData, "Install and delete all tickets in the current directory?", true); action_install_tickets_internal(items, selected, filter, filterData, "即將安裝並刪除當前資料夾中所有的憑據,是否繼續?", true);
} }

View File

@ -11,7 +11,7 @@
#include "../core/core.h" #include "../core/core.h"
static list_item browse_user_save_data = {"瀏覽使用者儲存資料", COLOR_TEXT, action_browse_user_ext_save_data}; static list_item browse_user_save_data = {"瀏覽使用者儲存資料", COLOR_TEXT, action_browse_user_ext_save_data};
static list_item browse_spotpass_save_data = {"瀏覽SpotPass儲存資料", COLOR_TEXT, action_browse_boss_ext_save_data}; static list_item browse_spotpass_save_data = {"瀏覽悄然連接儲存資料", COLOR_TEXT, action_browse_boss_ext_save_data};
static list_item delete_save_data = {"刪除儲存資料", COLOR_TEXT, action_delete_ext_save_data}; static list_item delete_save_data = {"刪除儲存資料", COLOR_TEXT, action_delete_ext_save_data};
typedef struct { typedef struct {
@ -69,7 +69,7 @@ static void extsavedata_action_update(ui_view* view, void* data, linked_list* it
static void extsavedata_action_open(linked_list* items, list_item* selected) { static void extsavedata_action_open(linked_list* items, list_item* selected) {
extsavedata_action_data* data = (extsavedata_action_data*) calloc(1, sizeof(extsavedata_action_data)); extsavedata_action_data* data = (extsavedata_action_data*) calloc(1, sizeof(extsavedata_action_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "無法分配額外儲存數據操作的數據."); error_display(NULL, NULL, "無法分配追加儲存數據操作的數據.");
return; return;
} }
@ -77,7 +77,7 @@ static void extsavedata_action_open(linked_list* items, list_item* selected) {
data->items = items; data->items = items;
data->selected = selected; data->selected = selected;
list_display("額外儲存數據操作", "A: 選擇, B: 返回", data, extsavedata_action_update, extsavedata_action_draw_top); list_display("追加儲存數據操作", "A: 選擇, B: 返回", data, extsavedata_action_update, extsavedata_action_draw_top);
} }
static void extsavedata_options_add_entry(linked_list* items, const char* name, bool* val) { static void extsavedata_options_add_entry(linked_list* items, const char* name, bool* val) {
@ -188,14 +188,14 @@ static void extsavedata_update(ui_view* view, void* data, linked_list* items, li
listData->populateData.items = items; listData->populateData.items = items;
Result res = task_populate_ext_save_data(&listData->populateData); Result res = task_populate_ext_save_data(&listData->populateData);
if(R_FAILED(res)) { if(R_FAILED(res)) {
error_display_res(NULL, NULL, res, "無法初始化額外儲存數據目錄結構"); error_display_res(NULL, NULL, res, "無法初始化追加儲存數據目錄結構");
} }
listData->populated = true; listData->populated = true;
} }
if(listData->populateData.finished && R_FAILED(listData->populateData.result)) { if(listData->populateData.finished && R_FAILED(listData->populateData.result)) {
error_display_res(NULL, NULL, listData->populateData.result, "無法列舉額外儲存數據目錄"); error_display_res(NULL, NULL, listData->populateData.result, "無法列舉追加儲存數據目錄");
listData->populateData.result = 0; listData->populateData.result = 0;
} }
@ -255,7 +255,7 @@ static int extsavedata_compare(void* data, const void* p1, const void* p2) {
void extsavedata_open() { void extsavedata_open() {
extsavedata_data* data = (extsavedata_data*) calloc(1, sizeof(extsavedata_data)); extsavedata_data* data = (extsavedata_data*) calloc(1, sizeof(extsavedata_data));
if(data == NULL) { if(data == NULL) {
error_display(NULL, NULL, "無法分配額外儲存數據數據"); error_display(NULL, NULL, "無法分配追加儲存數據數據");
return; return;
} }
@ -271,7 +271,7 @@ void extsavedata_open() {
data->sortById = false; data->sortById = false;
data->sortByName = true; data->sortByName = true;
list_display("額外儲存數據", "A: 選擇, B: 返回, X: 刷新, Select: 選項", data, extsavedata_update, extsavedata_draw_top); list_display("追加儲存數據", "A: 選擇, B: 返回, X: 刷新, Select: 選項", data, extsavedata_update, extsavedata_draw_top);
} }
// オケー // オケー

View File

@ -25,7 +25,7 @@ static list_item install_and_delete_ticket = {"安裝並刪除憑據", COLOR_TEX
static list_item delete_dir = {"刪除", COLOR_TEXT, action_delete_dir}; static list_item delete_dir = {"刪除", COLOR_TEXT, action_delete_dir};
static list_item copy_all_contents = {"拷貝所有档案", COLOR_TEXT, NULL}; static list_item copy_all_contents = {"拷貝所有档案", COLOR_TEXT, NULL};
static list_item delete_all_contents = {"刪除所有档案", COLOR_TEXT, action_delete_dir_contents}; static list_item delete_all_contents = {"刪除所有档案", COLOR_TEXT, action_delete_dir_contents};
static list_item new_folder = {"資料夾", COLOR_TEXT, action_new_folder}; static list_item new_folder = {"資料夾", COLOR_TEXT, action_new_folder};
static list_item install_all_cias = {"安裝所有3DS可導入档案", COLOR_TEXT, action_install_cias}; static list_item install_all_cias = {"安裝所有3DS可導入档案", COLOR_TEXT, action_install_cias};
static list_item install_and_delete_all_cias = {"安裝並刪除所有3DS可導入档案", COLOR_TEXT, action_install_cias_delete}; static list_item install_and_delete_all_cias = {"安裝並刪除所有3DS可導入档案", COLOR_TEXT, action_install_cias_delete};

View File

@ -19,7 +19,7 @@ static list_item tickets = {"憑據", COLOR_TEXT, tickets_open};
static list_item ext_save_data = {"追加儲存數據", COLOR_TEXT, extsavedata_open}; static list_item ext_save_data = {"追加儲存數據", COLOR_TEXT, extsavedata_open};
static list_item system_save_data = {"系統儲存數據", COLOR_TEXT, systemsavedata_open}; static list_item system_save_data = {"系統儲存數據", COLOR_TEXT, systemsavedata_open};
static list_item remote_install = {"遠程安裝", COLOR_TEXT, remoteinstall_open}; static list_item remote_install = {"遠程安裝", COLOR_TEXT, remoteinstall_open};
static list_item update = {"升級", COLOR_TEXT, update_open}; static list_item update = {"升級至最新Latest Not Releases", COLOR_TEXT, update_open};
static void mainmenu_draw_top(ui_view* view, void* data, float x1, float y1, float x2, float y2, list_item* selected) { static void mainmenu_draw_top(ui_view* view, void* data, float x1, float y1, float x2, float y2, list_item* selected) {
u32 logoWidth; u32 logoWidth;

View File

@ -13,8 +13,8 @@
static list_item launch_title = {"啓動程式", COLOR_TEXT, action_launch_title}; static list_item launch_title = {"啓動程式", COLOR_TEXT, action_launch_title};
static list_item delete_title = {"刪除程式", COLOR_TEXT, action_delete_title}; static list_item delete_title = {"刪除程式", COLOR_TEXT, action_delete_title};
static list_item delete_title_ticket = {"刪除程式和儲存數據", COLOR_TEXT, action_delete_title_ticket}; static list_item delete_title_ticket = {"刪除程式和儲存數據", COLOR_TEXT, action_delete_title_ticket};
static list_item extract_smdh = {"提取SMDH", COLOR_TEXT, action_extract_smdh}; static list_item extract_smdh = {"提取 SMDH", COLOR_TEXT, action_extract_smdh};
static list_item import_seed = {"導入Seed", COLOR_TEXT, action_import_seed}; static list_item import_seed = {"導入 Seed", COLOR_TEXT, action_import_seed};
static list_item browse_save_data = {"瀏覽儲存文件", COLOR_TEXT, action_browse_title_save_data}; static list_item browse_save_data = {"瀏覽儲存文件", COLOR_TEXT, action_browse_title_save_data};
static list_item import_save_data = {"導入儲存文件", COLOR_TEXT, action_import_twl_save}; static list_item import_save_data = {"導入儲存文件", COLOR_TEXT, action_import_twl_save};
static list_item export_save_data = {"導出儲存文件", COLOR_TEXT, action_export_twl_save}; static list_item export_save_data = {"導出儲存文件", COLOR_TEXT, action_export_twl_save};
@ -176,10 +176,10 @@ static void titles_options_update(ui_view* view, void* data, linked_list* items,
} }
if(linked_list_size(items) == 0) { if(linked_list_size(items) == 0) {
titles_options_add_entry(items, "顯示遊戲Card", &listData->showGameCard); titles_options_add_entry(items, "顯示遊戲 Card", &listData->showGameCard);
titles_options_add_entry(items, "顯示SD Card程式", &listData->showSD); titles_options_add_entry(items, "顯示 SD Card 程式", &listData->showSD);
titles_options_add_entry(items, "顯示NAND程式", &listData->showNAND); titles_options_add_entry(items, "顯示 NAND 程式", &listData->showNAND);
titles_options_add_entry(items, "ID排列", &listData->sortById); titles_options_add_entry(items, " ID 排列", &listData->sortById);
titles_options_add_entry(items, "按名稱排列", &listData->sortByName); titles_options_add_entry(items, "按名稱排列", &listData->sortByName);
titles_options_add_entry(items, "按大小排列", &listData->sortBySize); titles_options_add_entry(items, "按大小排列", &listData->sortBySize);
} }
@ -231,14 +231,14 @@ static void titles_update(ui_view* view, void* data, linked_list* items, list_it
listData->populateData.items = items; listData->populateData.items = items;
Result res = task_populate_titles(&listData->populateData); Result res = task_populate_titles(&listData->populateData);
if(R_FAILED(res)) { if(R_FAILED(res)) {
error_display_res(NULL, NULL, res, "無法初始化程式列表"); error_display_res(NULL, NULL, res, "無法初始化程式目錄結構");
} }
listData->populated = true; listData->populated = true;
} }
if(listData->populateData.finished && R_FAILED(listData->populateData.result)) { if(listData->populateData.finished && R_FAILED(listData->populateData.result)) {
error_display_res(NULL, NULL, listData->populateData.result, "無法填充程式列表"); error_display_res(NULL, NULL, listData->populateData.result, "無法列舉程式目錄");
listData->populateData.result = 0; listData->populateData.result = 0;
} }