mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-04-06 03:58:02 +08:00
Make use of new ctrcommon UI functions.
This commit is contained in:
parent
f86ae08244
commit
f98e28e16c
@ -8,87 +8,6 @@ typedef enum {
|
||||
DELETE
|
||||
} Mode;
|
||||
|
||||
bool ui_display_install_progress(int progress) {
|
||||
std::stringstream stream;
|
||||
stream << "Installing: [";
|
||||
int progressBars = progress / 4;
|
||||
for(int i = 0; i < 25; i++) {
|
||||
if(i < progressBars) {
|
||||
stream << '|';
|
||||
} else {
|
||||
stream << ' ';
|
||||
}
|
||||
}
|
||||
|
||||
std::ios state(NULL);
|
||||
state.copyfmt(stream);
|
||||
stream << "] " << std::setfill('0') << std::setw(3) << progress;
|
||||
stream.copyfmt(state);
|
||||
stream << "%" << "\n";
|
||||
stream << "Press B to cancel." << "\n";
|
||||
|
||||
std::string str = stream.str();
|
||||
|
||||
screen_begin_draw(TOP_SCREEN);
|
||||
screen_clear(0, 0, 0);
|
||||
screen_draw_string(str, (screen_get_width() - screen_get_str_width(str)) / 2, (screen_get_height() - screen_get_str_height(str)) / 2, 255, 255, 255);
|
||||
screen_end_draw();
|
||||
screen_swap_buffers_quick();;
|
||||
|
||||
input_poll();
|
||||
return !input_is_pressed(BUTTON_B);
|
||||
}
|
||||
|
||||
void ui_display_deleting() {
|
||||
std::string msg = "Deleting title...";
|
||||
screen_begin_draw(TOP_SCREEN);
|
||||
screen_clear(0, 0, 0);
|
||||
screen_draw_string(msg, (screen_get_width() - screen_get_str_width(msg)) / 2, (screen_get_height() - screen_get_str_height(msg)) / 2, 255, 255, 255);
|
||||
screen_end_draw();
|
||||
screen_swap_buffers();
|
||||
}
|
||||
|
||||
void ui_display_result(bool install, bool state) {
|
||||
std::string msg = install ? (state ? "Install succeeded! Press start." : "Install failed! Press start.") : (state ? "Delete succeeded! Press start." : "Delete failed! Press start.");
|
||||
while(platform_is_running()) {
|
||||
input_poll();
|
||||
if(input_is_pressed(BUTTON_START)) {
|
||||
break;
|
||||
}
|
||||
|
||||
screen_begin_draw(TOP_SCREEN);
|
||||
screen_clear(0, 0, 0);
|
||||
screen_draw_string(msg, (screen_get_width() - screen_get_str_width(msg)) / 2, (screen_get_height() - screen_get_str_height(msg)) / 2, 255, 255, 255);
|
||||
screen_end_draw();
|
||||
screen_swap_buffers();
|
||||
}
|
||||
}
|
||||
|
||||
bool ui_prompt_operation(Mode mode) {
|
||||
std::stringstream stream;
|
||||
stream << (mode == INSTALL ? "Install" : "Delete") << " the selected title?" << "\n";
|
||||
stream << "Press A to confirm, B to cancel." << "\n";
|
||||
std::string str = stream.str();
|
||||
while(platform_is_running()) {
|
||||
input_poll();
|
||||
if(input_is_pressed(BUTTON_A)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(input_is_pressed(BUTTON_B)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
screen_begin_draw(TOP_SCREEN);
|
||||
screen_clear(0, 0, 0);
|
||||
screen_draw_string(str, (screen_get_width() - screen_get_str_width(str)) / 2, (screen_get_height() - screen_get_str_height(str)) / 2, 255, 255, 255);
|
||||
screen_end_draw();
|
||||
screen_swap_buffers();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if(!platform_init()) {
|
||||
return 0;
|
||||
@ -136,6 +55,12 @@ int main(int argc, char **argv) {
|
||||
return breakLoop;
|
||||
};
|
||||
|
||||
auto onProgress = [&](int progress) {
|
||||
ui_display_progress("Installing", "Press B to cancel.", true, progress);
|
||||
input_poll();
|
||||
return !input_is_pressed(BUTTON_B);
|
||||
};
|
||||
|
||||
while(platform_is_running()) {
|
||||
std::string targetInstall;
|
||||
App targetDelete;
|
||||
@ -148,13 +73,13 @@ int main(int argc, char **argv) {
|
||||
|
||||
if(obtained) {
|
||||
if(mode == INSTALL) {
|
||||
if(ui_prompt_operation(mode)) {
|
||||
ui_display_result(true, app_install(destination, targetInstall, &ui_display_install_progress));
|
||||
if(ui_prompt("Install the selected title?", true)) {
|
||||
ui_prompt(app_install(destination, targetInstall, onProgress) ? "Install succeeded!" : "Install failed!", false);
|
||||
}
|
||||
} else if(mode == DELETE) {
|
||||
if(ui_prompt_operation(mode)) {
|
||||
ui_display_deleting();
|
||||
ui_display_result(false, app_delete(targetDelete));
|
||||
if(ui_prompt("Delete the selected title?", true)) {
|
||||
ui_display_message("Deleting title...");
|
||||
ui_prompt(app_delete(targetDelete) ? "Delete succeeded!" : "Delete failed!", false);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user