From 483b2b3ce0e8bf980a7da64da04043ec6263ae91 Mon Sep 17 00:00:00 2001 From: ITotalJustice <47043333+ITotalJustice@users.noreply.github.com> Date: Sat, 21 Dec 2024 20:36:59 +0000 Subject: [PATCH] add option to restart sphaira upon installing an update --- sphaira/include/app.hpp | 4 +--- sphaira/source/app.cpp | 5 +++++ sphaira/source/ui/menus/main_menu.cpp | 10 +++++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/sphaira/include/app.hpp b/sphaira/include/app.hpp index df15b97..4566021 100644 --- a/sphaira/include/app.hpp +++ b/sphaira/include/app.hpp @@ -42,6 +42,7 @@ public: void Loop(); static void Exit(); + static void ExitRestart(); static auto GetVg() -> NVGcontext*; static void Push(std::shared_ptr); @@ -89,9 +90,6 @@ public: void Update(); void Poll(); - void DrawBackground(); - void DrawTouch(); - // void DrawElement(float x, float y, float w, float h, ui::ThemeEntryID id); auto LoadElementImage(std::string_view value) -> ElementEntry; auto LoadElementColour(std::string_view value) -> ElementEntry; diff --git a/sphaira/source/app.cpp b/sphaira/source/app.cpp index 578de27..9d5c603 100644 --- a/sphaira/source/app.cpp +++ b/sphaira/source/app.cpp @@ -505,6 +505,11 @@ void App::Exit() { g_app->m_quit = true; } +void App::ExitRestart() { + nro_launch(GetExePath()); + Exit(); +} + void App::Poll() { m_controller.Reset(); diff --git a/sphaira/source/ui/menus/main_menu.cpp b/sphaira/source/ui/menus/main_menu.cpp index 13fa8d3..6823738 100644 --- a/sphaira/source/ui/menus/main_menu.cpp +++ b/sphaira/source/ui/menus/main_menu.cpp @@ -205,7 +205,6 @@ MainMenu::MainMenu() { auto options = std::make_shared("Menu Options"_i18n, "v" APP_VERSION_HASH, Sidebar::Side::LEFT); ON_SCOPE_EXIT(App::Push(options)); - SidebarEntryArray::Items language_items; language_items.push_back("Auto"_i18n); language_items.push_back("English"_i18n); @@ -261,6 +260,15 @@ MainMenu::MainMenu() { }, [this](bool success){ if (success) { m_update_state = UpdateState::None; + App::Notify("Updated to "_i18n + m_update_version); + App::Push(std::make_shared( + "Restart Sphaira?"_i18n, + "Back"_i18n, "Restart"_i18n, 1, [this](auto op_index){ + if (op_index && *op_index) { + App::ExitRestart(); + } + } + )); } else { App::Push(std::make_shared(MAKERESULT(351, 1), "Failed to download update"_i18n)); }