diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 04f3533..a69a98a 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -16,7 +16,7 @@ ], "compilerPath": "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-g++", "cStandard": "c11", - "cppStandard": "c++17", + "cppStandard": "c++20", "intelliSenseMode": "gcc-x64" } ], diff --git a/include/download_cheats_page.hpp b/include/download_cheats_page.hpp index ee7c6a3..710743c 100644 --- a/include/download_cheats_page.hpp +++ b/include/download_cheats_page.hpp @@ -9,7 +9,9 @@ namespace show_cheats { void ShowCheatFiles(uint64_t tid, const std::string& name); - bool CreateCheatList(const std::filesystem::path& path, brls::TabFrame** appView); + void ShowCheatSheet(u64 tid, const std::string& bid, const std::string& name); + bool CreateCheatList(const std::filesystem::path& path, brls::List** cheatsList); + void NoCheatsFoundPopup(); } // namespace show_cheats diff --git a/source/JC_page.cpp b/source/JC_page.cpp index e2b722d..e64bbb7 100644 --- a/source/JC_page.cpp +++ b/source/JC_page.cpp @@ -17,7 +17,7 @@ JCPage::JCPage() : AppletFrame(true, true) list->addView(label); backup = new brls::ListItem("menus/joy_con/backup"_i18n); - backup->getClickEvent()->subscribe([&](brls::View* view) { + backup->getClickEvent()->subscribe([](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/joy_con/label"_i18n); stagedFrame->addStage( @@ -35,7 +35,7 @@ JCPage::JCPage() : AppletFrame(true, true) for (int i = profiles.size() - 1; i >= 0; i--) { std::vector value = profiles[i].second; listItem = new brls::ListItem(profiles[i].first); - listItem->getClickEvent()->subscribe([&, value](brls::View* view) { + listItem->getClickEvent()->subscribe([&value](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/joy_con/label"_i18n); stagedFrame->addStage( diff --git a/source/PC_page.cpp b/source/PC_page.cpp index a80c5f5..c482bd1 100644 --- a/source/PC_page.cpp +++ b/source/PC_page.cpp @@ -16,7 +16,7 @@ PCPage::PCPage() : AppletFrame(true, true) list->addView(label); backup = new brls::ListItem("menus/joy_con/backup"_i18n); - backup->getClickEvent()->subscribe([&](brls::View* view) { + backup->getClickEvent()->subscribe([](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/pro_con/label"_i18n); stagedFrame->addStage( @@ -34,7 +34,7 @@ PCPage::PCPage() : AppletFrame(true, true) for (int i = profiles.size() - 1; i >= 0; i--) { std::vector value = profiles[i].second; listItem = new brls::ListItem(profiles[i].first); - listItem->getClickEvent()->subscribe([&, value](brls::View* view) { + listItem->getClickEvent()->subscribe([&value](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/pro_con/label"_i18n); stagedFrame->addStage( diff --git a/source/ams_tab.cpp b/source/ams_tab.cpp index 62e6c6e..e504829 100644 --- a/source/ams_tab.cpp +++ b/source/ams_tab.cpp @@ -34,10 +34,10 @@ AmsTab::AmsTab(const nlohmann::json& nxlinks, const bool erista, const bool hide listItem = new brls::ListItem("menus/ams_update/get_custom_deepsea"_i18n); listItem->setHeight(LISTITEM_HEIGHT); - listItem->getClickEvent()->subscribe([&](brls::View* view) { + listItem->getClickEvent()->subscribe([this](brls::View* view) { nlohmann::ordered_json modules; download::getRequest(DEEPSEA_META_JSON, modules); - ShowCustomDeepseaBuilder(modules); + this->ShowCustomDeepseaBuilder(modules); }); this->addView(listItem); @@ -71,7 +71,7 @@ void AmsTab::CreateDownloadItems(const nlohmann::ordered_json& cfw_links, bool h std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url); listItem = new brls::ListItem(link.first); listItem->setHeight(LISTITEM_HEIGHT); - listItem->getClickEvent()->subscribe([&, this, text, text_hekate, url, hekate_url, operation, hekate](brls::View* view) { + listItem->getClickEvent()->subscribe([this, &text, &text_hekate, &url, &hekate_url, &operation, hekate](brls::View* view) { if (!erista && !std::filesystem::exists(MARIKO_PAYLOAD_PATH)) { brls::Application::crash("menus/errors/mariko_payload_missing"_i18n); } @@ -180,7 +180,7 @@ void AmsTab::ShowCustomDeepseaBuilder(nlohmann::ordered_json& modules) "menus/common/off"_i18n); } name_map.insert(std::pair(module_value.at("displayName"), module.key())); - deepseaListItem->registerAction("menus/ams_update/show_module_description"_i18n, brls::Key::Y, [this, module_value] { + deepseaListItem->registerAction("menus/ams_update/show_module_description"_i18n, brls::Key::Y, [&module_value] { brls::Dialog* dialog; dialog = new brls::Dialog(fmt::format("{}:\n{}", module_value.at("repo"), module_value.at("description"))); brls::GenericEvent::Callback callback = [dialog](brls::View* view) { @@ -197,7 +197,7 @@ void AmsTab::ShowCustomDeepseaBuilder(nlohmann::ordered_json& modules) appView->addTab(category.key(), list); } - appView->registerAction("menus/ams_update/download_deepsea_package"_i18n, brls::Key::X, [this, lists, name_map] { + appView->registerAction("menus/ams_update/download_deepsea_package"_i18n, brls::Key::X, [this, &lists, &name_map] { std::set desired_modules; for (const auto& list : lists) { for (size_t i = 0; i < list->getViewsCount(); i++) { diff --git a/source/app_page.cpp b/source/app_page.cpp index eaac9dd..e33a3b7 100644 --- a/source/app_page.cpp +++ b/source/app_page.cpp @@ -84,7 +84,7 @@ void AppPage::CreateDownloadAllButton() } text += url; download = new brls::ListItem("menus/cheats/dl_latest"_i18n); - download->getClickEvent()->subscribe([&, url, text](brls::View* view) { + download->getClickEvent()->subscribe([&url, &text](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/cheats/getting_cheats"_i18n); stagedFrame->addStage( @@ -167,7 +167,7 @@ void AppPage_CheatSlips::CreateLabel() void AppPage_CheatSlips::DeclareGameListItem(const std::string& name, u64 tid, NsApplicationControlData** controlData) { - listItem->getClickEvent()->subscribe([&, tid, name](brls::View* view) { brls::Application::pushView(new DownloadCheatsPage_CheatSlips(tid, name)); }); + listItem->getClickEvent()->subscribe([tid, &name](brls::View* view) { brls::Application::pushView(new DownloadCheatsPage_CheatSlips(tid, name)); }); AppPage::DeclareGameListItem(name, tid, controlData); } @@ -186,7 +186,7 @@ void AppPage_Gbatemp::CreateLabel() void AppPage_Gbatemp::DeclareGameListItem(const std::string& name, u64 tid, NsApplicationControlData** controlData) { - listItem->getClickEvent()->subscribe([&, tid, name](brls::View* view) { brls::Application::pushView(new DownloadCheatsPage_GbaTemp(tid, name)); }); + listItem->getClickEvent()->subscribe([tid, &name](brls::View* view) { brls::Application::pushView(new DownloadCheatsPage_GbaTemp(tid, name)); }); AppPage::DeclareGameListItem(name, tid, controlData); } @@ -277,8 +277,8 @@ void AppPage_DownloadedCheats::DeclareGameListItem(const std::string& name, u64 { auto tid_str = util::formatApplicationId(tid); if (titles.find(tid_str) != titles.end()) { - listItem->getClickEvent()->subscribe([this, tid, name](brls::View* view) { show_cheats::ShowCheatFiles(tid, name); }); - listItem->registerAction("menus/cheats/delete_cheats"_i18n, brls::Key::Y, [this, tid_str] { + listItem->getClickEvent()->subscribe([tid, &name](brls::View* view) { show_cheats::ShowCheatFiles(tid, name); }); + listItem->registerAction("menus/cheats/delete_cheats"_i18n, brls::Key::Y, [&tid_str] { brls::Dialog* dialog = new brls::Dialog(extract::removeCheatsDirectory(fmt::format("{}{}", util::getContentsPath(), tid_str)) ? "menus/common/all_done"_i18n : fmt::format("menus/cheats/deletion_error"_i18n, tid_str)); brls::GenericEvent::Callback callback = [dialog](brls::View* view) { dialog->close(); diff --git a/source/changelog_page.cpp b/source/changelog_page.cpp index 368ada2..028d776 100644 --- a/source/changelog_page.cpp +++ b/source/changelog_page.cpp @@ -214,7 +214,7 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true) for (int i = verTitles.size() - 1; i >= 0; i--) { listItem = new brls::ListItem(verTitles[i]); change = changes[i]; - listItem->getClickEvent()->subscribe([&, change](brls::View* view) { + listItem->getClickEvent()->subscribe([&change](brls::View* view) { brls::Dialog* dialog = new brls::Dialog(change); brls::GenericEvent::Callback callback = [dialog](brls::View* view) { dialog->close(); @@ -231,7 +231,7 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true) void ChangelogPage::ShowChangelogContent(const std::string version, const std::string content) { listItem = new brls::ListItem(version); - listItem->getClickEvent()->subscribe([&, content](brls::View* view) { + listItem->getClickEvent()->subscribe([&version, &content](brls::View* view) { brls::AppletFrame* appView = new brls::AppletFrame(true, true); brls::PopupFrame::open(version, appView, "", ""); diff --git a/source/cheats_page.cpp b/source/cheats_page.cpp index e81550f..8447cf8 100644 --- a/source/cheats_page.cpp +++ b/source/cheats_page.cpp @@ -18,20 +18,20 @@ CheatsPage::CheatsPage() : AppletFrame(true, true) list = new brls::List(); view = new brls::ListItem("menus/cheats/view"_i18n); - view->getClickEvent()->subscribe([&](brls::View* view) { + view->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new AppPage_DownloadedCheats()); }); list->addView(view); exclude = new brls::ListItem("menus/cheats/exclude"_i18n); - exclude->getClickEvent()->subscribe([&](brls::View* view) { + exclude->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new AppPage_Exclude()); }); list->addView(exclude); deleteCheats = new brls::ListItem("menus/cheats/delete_existing"_i18n); - deleteCheats->getClickEvent()->subscribe([&](brls::View* view) { - stagedFrame = new brls::StagedAppletFrame(); + deleteCheats->getClickEvent()->subscribe([](brls::View* view) { + brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/cheats/delete_all"_i18n); stagedFrame->addStage( new WorkerPage(stagedFrame, "menus/cheats/deleting"_i18n, []() { extract::removeCheats(); })); @@ -44,7 +44,7 @@ CheatsPage::CheatsPage() : AppletFrame(true, true) std::string cheatsVer = util::downloadFileToString(CHEATS_URL_VERSION); if (cheatsVer != "") { dlAll = new brls::ListItem("menus/cheats/dl_all"_i18n); - dlAll->getClickEvent()->subscribe([&, cheatsVer](brls::View* view) { + dlAll->getClickEvent()->subscribe([&cheatsVer](brls::View* view) { std::string url; switch (CurrentCfw::running_cfw) { case CFW::sxos: diff --git a/source/download_cheats_page.cpp b/source/download_cheats_page.cpp index acbb1a7..68c1a36 100644 --- a/source/download_cheats_page.cpp +++ b/source/download_cheats_page.cpp @@ -16,6 +16,20 @@ using json = nlohmann::json; namespace show_cheats { + void ShowCheatSheet(u64 tid, const std::string& bid, const std::string& name) + { + std::string path = fmt::format("{}{}/cheats/{}.txt", util::getContentsPath(), util::formatApplicationId(tid), bid); + brls::AppletFrame* appView = new brls::AppletFrame(true, true); + brls::List* cheatsList = new brls::List(); + if (std::filesystem::exists(path) && CreateCheatList(path, &cheatsList)) { + appView->setContentView(cheatsList); + brls::PopupFrame::open(name, appView, ""); + } + else { + NoCheatsFoundPopup(); + } + } + void ShowCheatFiles(u64 tid, const std::string& name) { std::string path = util::getContentsPath(); @@ -25,29 +39,37 @@ namespace show_cheats { bool is_populated = false; if (std::filesystem::exists(path)) { for (const auto& cheatFile : std::filesystem::directory_iterator(path)) { - is_populated |= CreateCheatList(cheatFile.path(), &appView); + brls::List* cheatsList = new brls::List(); + is_populated |= CreateCheatList(cheatFile.path(), &cheatsList); + if (is_populated) { + appView->addTab(util::upperCase(cheatFile.path().stem()), cheatsList); + } } } if (is_populated) { brls::PopupFrame::open(name, appView, ""); } else { - brls::Dialog* dialog = new brls::Dialog("menus/cheats/not_found"_i18n); - brls::GenericEvent::Callback callback = [dialog](brls::View* view) { - dialog->close(); - }; - dialog->addButton("menus/common/ok"_i18n, callback); - dialog->setCancelable(true); - dialog->open(); + NoCheatsFoundPopup(); } } - bool CreateCheatList(const std::filesystem::path& path, brls::TabFrame** appView) + void NoCheatsFoundPopup() + { + brls::Dialog* dialog = new brls::Dialog("menus/cheats/not_found"_i18n); + brls::GenericEvent::Callback callback = [dialog](brls::View* view) { + dialog->close(); + }; + dialog->addButton("menus/common/ok"_i18n, callback); + dialog->setCancelable(true); + dialog->open(); + } + + bool CreateCheatList(const std::filesystem::path& path, brls::List** cheatsList) { bool res = false; - brls::List* cheatsList = new brls::List(); if (extract::isBID(path.filename().stem())) { - cheatsList->addView(new brls::Label(brls::LabelStyle::DESCRIPTION, fmt::format("menus/cheats/cheatfile_label"_i18n, path.filename().string()), true)); + (*cheatsList)->addView(new brls::Label(brls::LabelStyle::DESCRIPTION, fmt::format("menus/cheats/cheatfile_label"_i18n, path.filename().string()), true)); std::string str; std::regex cheats_expr(R"(\[.+\]|\{.+\})"); @@ -56,16 +78,13 @@ namespace show_cheats { while (std::getline(in, str)) { if (str.size() > 0) { if (std::regex_search(str, cheats_expr)) { - cheatsList->addView(new brls::ListItem(str)); + (*cheatsList)->addView(new brls::ListItem(str)); res = true; } } } } } - if (res) { - (*appView)->addTab(util::upperCase(path.filename().stem()), cheatsList); - } return res; } } // namespace show_cheats @@ -77,8 +96,8 @@ DownloadCheatsPage::DownloadCheatsPage(uint64_t tid, const std::string& name) : GetBuildID(); this->setTitle(name); this->setFooterText("v" + std::to_string(this->version / 0x10000)); - this->registerAction("menus/cheats/show_existing"_i18n, brls::Key::X, [this, tid, name] { - show_cheats::ShowCheatFiles(tid, name); + this->registerAction("menus/cheats/show_existing"_i18n, brls::Key::X, [this, &name] { + show_cheats::ShowCheatSheet(this->tid, this->bid, name); return true; }); } @@ -172,7 +191,7 @@ DownloadCheatsPage_CheatSlips::DownloadCheatsPage_CheatSlips(uint64_t tid, const //Something else went wrong continue; } - listItem->registerAction("menus/cheats/cheatslips_see_more"_i18n, brls::Key::Y, [this, cheat] { + listItem->registerAction("menus/cheats/cheatslips_see_more"_i18n, brls::Key::Y, [this, &cheat] { if (cheat.find("titles") != cheat.end()) { ShowCheatsContent(cheat.at("titles")); } @@ -325,7 +344,7 @@ DownloadCheatsPage_GbaTemp::DownloadCheatsPage_GbaTemp(uint64_t tid, const std:: for (const auto& p : cheatsJson[this->bid].items()) { json cheat = p.value(); listItem = new ::brls::ListItem(cheat.at("title")); - listItem->registerAction("menus/cheats/gbatemp_dl_cheatcode"_i18n, brls::Key::A, [this, cheat] { + listItem->registerAction("menus/cheats/gbatemp_dl_cheatcode"_i18n, brls::Key::A, [this, &cheat] { WriteCheats(cheat.at("content")); brls::Dialog* dialog = new brls::Dialog(fmt::format("menus/cheats/gbatemp_dl_successful_dl"_i18n, cheat.at("title"))); brls::GenericEvent::Callback callback = [dialog](brls::View* view) { diff --git a/source/download_payload_page.cpp b/source/download_payload_page.cpp index c725e25..a35abac 100644 --- a/source/download_payload_page.cpp +++ b/source/download_payload_page.cpp @@ -25,7 +25,7 @@ DownloadPayloadPage::DownloadPayloadPage(const nlohmann::ordered_json& payloads) std::string path = std::string(BOOTLOADER_PL_PATH) + link.first; std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url); listItem = new brls::ListItem(link.first); - listItem->getClickEvent()->subscribe([&, text, url, path](brls::View* view) { + listItem->getClickEvent()->subscribe([&text, &url, &path](brls::View* view) { fs::createTree(BOOTLOADER_PL_PATH); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/tools/getting_payload"_i18n); @@ -48,7 +48,7 @@ DownloadPayloadPage::DownloadPayloadPage(const nlohmann::ordered_json& payloads) notFound->setHorizontalAlign(NVG_ALIGN_CENTER); list->addView(notFound); brls::ListItem* back = new brls::ListItem("menus/common/back"_i18n); - back->getClickEvent()->subscribe([&](brls::View* view) { + back->getClickEvent()->subscribe([](brls::View* view) { brls::Application::popView(); }); list->addView(back); diff --git a/source/list_download_tab.cpp b/source/list_download_tab.cpp index a9c5f4e..e526244 100644 --- a/source/list_download_tab.cpp +++ b/source/list_download_tab.cpp @@ -59,7 +59,7 @@ void ListDownloadTab::createList(contentType type) std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url); listItem = new brls::ListItem(link.first); listItem->setHeight(LISTITEM_HEIGHT); - listItem->getClickEvent()->subscribe([&, text, url, title, type](brls::View* view) { + listItem->getClickEvent()->subscribe([this, &text, &url, &title, &type](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle(fmt::format("menus/main/getting"_i18n, contentTypeNames[(int)type].data())); stagedFrame->addStage(new ConfirmPage(stagedFrame, text)); @@ -157,7 +157,7 @@ void ListDownloadTab::createCheatSlipItem() this->size += 1; cheatslipsItem = new brls::ListItem("menus/cheats/get_cheatslips"_i18n); cheatslipsItem->setHeight(LISTITEM_HEIGHT); - cheatslipsItem->getClickEvent()->subscribe([&](brls::View* view) { + cheatslipsItem->getClickEvent()->subscribe([](brls::View* view) { if (std::filesystem::exists(TOKEN_PATH)) { brls::Application::pushView(new AppPage_CheatSlips()); return true; @@ -165,8 +165,8 @@ void ListDownloadTab::createCheatSlipItem() else { std::string usr, pwd; //Result rc = swkbdCreate(&kbd, 0); - brls::Swkbd::openForText([&](std::string text) { usr = text; }, "cheatslips.com e-mail", "", 64, "", 0, "Submit", "cheatslips.com e-mail"); - brls::Swkbd::openForText([&](std::string text) { pwd = text; }, "cheatslips.com password", "", 64, "", 0, "Submit", "cheatslips.com password", true); + brls::Swkbd::openForText([&usr](std::string text) { usr = text; }, "cheatslips.com e-mail", "", 64, "", 0, "Submit", "cheatslips.com e-mail"); + brls::Swkbd::openForText([&pwd](std::string text) { pwd = text; }, "cheatslips.com password", "", 64, "", 0, "Submit", "cheatslips.com password", true); std::string body = "{\"email\":\"" + std::string(usr) + "\",\"password\":\"" + std::string(pwd) + "\"}"; nlohmann::ordered_json token; download::getRequest(CHEATSLIPS_TOKEN_URL, token, @@ -201,7 +201,7 @@ void ListDownloadTab::creategbatempItem() this->size += 1; gbatempItem = new brls::ListItem("menus/cheats/get_gbatemp"_i18n); gbatempItem->setHeight(LISTITEM_HEIGHT); - gbatempItem->getClickEvent()->subscribe([&](brls::View* view) { + gbatempItem->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new AppPage_Gbatemp()); return true; }); diff --git a/source/net_page.cpp b/source/net_page.cpp index 661fe74..0a5c697 100644 --- a/source/net_page.cpp +++ b/source/net_page.cpp @@ -35,7 +35,7 @@ NetPage::NetPage() : AppletFrame(true, true) label = new brls::Label(brls::LabelStyle::DESCRIPTION, labelText, true); list->addView(label); cancel = new brls::ListItem("menus/common/go_back"_i18n); - cancel->getClickEvent()->subscribe([&](brls::View* view) { brls::Application::pushView(new MainFrame()); }); + cancel->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new MainFrame()); }); list->addView(cancel); } else { @@ -118,9 +118,9 @@ NetPage::NetPage() : AppletFrame(true, true) listItem = new brls::ListItem(values["name"]); else listItem = new brls::ListItem("Unnamed"); - listItem->getClickEvent()->subscribe([&, values](brls::View* view) { + listItem->getClickEvent()->subscribe([this, &values](brls::View* view) { brls::Dialog* dialog = new brls::Dialog(values.dump(0).substr(1, values.dump(0).size() - 2)); - brls::GenericEvent::Callback callbackOk = [&, dialog, values](brls::View* view) { + brls::GenericEvent::Callback callbackOk = [this, &dialog, &values](brls::View* view) { nifmInitialize(NifmServiceType_Admin); NifmNetworkProfileData profile; nifmGetCurrentNetworkProfile(&profile); diff --git a/source/payload_page.cpp b/source/payload_page.cpp index c895936..4c941ad 100644 --- a/source/payload_page.cpp +++ b/source/payload_page.cpp @@ -20,12 +20,12 @@ PayloadPage::PayloadPage() : AppletFrame(true, true) for (const auto& payload : payloads) { std::string payload_path = payload; listItem = new brls::ListItem(payload_path); - listItem->getClickEvent()->subscribe([&, payload](brls::View* view) { + listItem->getClickEvent()->subscribe([&payload](brls::View* view) { util::rebootToPayload(payload); brls::Application::popView(); }); if (CurrentCfw::running_cfw == CFW::ams) { - listItem->registerAction("menus/payloads/set_reboot_payload"_i18n, brls::Key::X, [this, payload_path] { + listItem->registerAction("menus/payloads/set_reboot_payload"_i18n, brls::Key::X, [&payload_path] { std::string res1; if (fs::copyFile(payload_path, REBOOT_PAYLOAD_PATH)) { res1 += "menus/payloads/copy_success"_i18n + payload_path + "menus/payloads/to"_i18n + std::string(REBOOT_PAYLOAD_PATH) + "'."; @@ -43,7 +43,7 @@ PayloadPage::PayloadPage() : AppletFrame(true, true) return true; }); } - listItem->registerAction("menus/payloads/set_update_bin"_i18n, brls::Key::Y, [this, payload] { + listItem->registerAction("menus/payloads/set_update_bin"_i18n, brls::Key::Y, [&payload] { std::string res2; if (fs::copyFile(payload, UPDATE_BIN_PATH)) { res2 += "menus/payloads/copy_success"_i18n + payload + "menus/payloads/to"_i18n + std::string(UPDATE_BIN_PATH) + "'."; diff --git a/source/tools_tab.cpp b/source/tools_tab.cpp index 6765fce..54c037d 100644 --- a/source/tools_tab.cpp +++ b/source/tools_tab.cpp @@ -30,7 +30,7 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload if (!tag.empty() && tag != AppVersion) { updateApp = new brls::ListItem("menus/tools/update_app"_i18n + tag + ")"); std::string text("menus/tools/dl_app"_i18n + std::string(APP_URL)); - updateApp->getClickEvent()->subscribe([&, text, tag](brls::View* view) { + updateApp->getClickEvent()->subscribe([&text, &tag](brls::View* view) { brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); stagedFrame->setTitle("menus/common/updating"_i18n); stagedFrame->addStage( @@ -48,19 +48,19 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload } cheats = new brls::ListItem("menus/tools/cheats"_i18n); - cheats->getClickEvent()->subscribe([&](brls::View* view) { + cheats->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new CheatsPage()); }); cheats->setHeight(LISTITEM_HEIGHT); JCcolor = new brls::ListItem("menus/tools/joy_cons"_i18n); - JCcolor->getClickEvent()->subscribe([&](brls::View* view) { + JCcolor->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new JCPage()); }); JCcolor->setHeight(LISTITEM_HEIGHT); PCcolor = new brls::ListItem("menus/tools/pro_cons"_i18n); - PCcolor->getClickEvent()->subscribe([&](brls::View* view) { + PCcolor->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new PCPage()); }); PCcolor->setHeight(LISTITEM_HEIGHT); @@ -72,13 +72,13 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload downloadPayload->setHeight(LISTITEM_HEIGHT); */ rebootPayload = new brls::ListItem("menus/tools/inject_payloads"_i18n); - rebootPayload->getClickEvent()->subscribe([&](brls::View* view) { + rebootPayload->getClickEvent()->subscribe([](brls::View* view) { brls::Application::pushView(new PayloadPage()); }); rebootPayload->setHeight(LISTITEM_HEIGHT); /* ntcp = new brls::ListItem("menus/ntcp"_i18n); - ntcp->getClickEvent()->subscribe([&](brls::View* view){ + ntcp->getClickEvent()->subscribe([](brls::View* view){ std::string res = syncTime(); brls::Dialog* dialog = new brls::Dialog(res); brls::GenericEvent::Callback callback = [dialog](brls::View* view) { @@ -93,15 +93,15 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload this->addView(ntcp); */ netSettings = new brls::ListItem("menus/tools/internet_settings"_i18n); - netSettings->getClickEvent()->subscribe([&](brls::View* view) { + netSettings->getClickEvent()->subscribe([](brls::View* view) { brls::PopupFrame::open("menus/tools/internet_settings"_i18n, new NetPage(), "", ""); }); netSettings->setHeight(LISTITEM_HEIGHT); browser = new brls::ListItem("menus/tools/browser"_i18n); - browser->getClickEvent()->subscribe([&](brls::View* view) { + browser->getClickEvent()->subscribe([](brls::View* view) { std::string url; - if (brls::Swkbd::openForText([&](std::string text) { url = text; }, "cheatslips.com e-mail", "", 64, "https://duckduckgo.com", 0, "Submit", "https://website.tld")) { + if (brls::Swkbd::openForText([&url](std::string text) { url = text; }, "cheatslips.com e-mail", "", 64, "https://duckduckgo.com", 0, "Submit", "https://website.tld")) { std::string error = ""; int at = appletGetAppletType(); if (at == AppletType_Application) { // Running as a title @@ -135,7 +135,7 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload browser->setHeight(LISTITEM_HEIGHT); move = new brls::ListItem("menus/tools/batch_copy"_i18n); - move->getClickEvent()->subscribe([&](brls::View* view) { + move->getClickEvent()->subscribe([](brls::View* view) { chdir("/"); std::string error = ""; if (std::filesystem::exists(COPY_FILES_TXT)) { @@ -155,7 +155,7 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload move->setHeight(LISTITEM_HEIGHT); cleanUp = new brls::ListItem("menus/tools/clean_up"_i18n); - cleanUp->getClickEvent()->subscribe([&](brls::View* view) { + cleanUp->getClickEvent()->subscribe([](brls::View* view) { std::filesystem::remove(AMS_ZIP_PATH); std::filesystem::remove(APP_ZIP_PATH); std::filesystem::remove(CFW_ZIP_PATH); @@ -176,7 +176,7 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload cleanUp->setHeight(LISTITEM_HEIGHT); language = new brls::ListItem("menus/tools/language"_i18n); - language->getClickEvent()->subscribe([&](brls::View* view) { + language->getClickEvent()->subscribe([](brls::View* view) { std::vector> languages{ std::make_pair("menus/language/en-US"_i18n, "en-US"), std::make_pair("menus/language/ja"_i18n, "ja"), @@ -194,17 +194,17 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload brls::List* list = new brls::List(); brls::ListItem* listItem; listItem = new brls::ListItem(fmt::format("{} ({})", "menus/language/system_default"_i18n, i18n::getCurrentLocale())); - listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [this] { + listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [] { std::filesystem::remove(LANGUAGE_JSON); brls::Application::quit(); return true; }); list->addView(listItem); - for (auto& l : languages) { - listItem = new brls::ListItem(l.first); - listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [this, l] { + for (auto& language : languages) { + listItem = new brls::ListItem(language.first); + listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [&language] { json updatedLanguage = json::object(); - updatedLanguage["language"] = l.second; + updatedLanguage["language"] = language.second; std::ofstream out(LANGUAGE_JSON); out << updatedLanguage.dump(); brls::Application::quit(); @@ -218,13 +218,13 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload language->setHeight(LISTITEM_HEIGHT); hideTabs = new brls::ListItem("menus/tools/hide_tabs"_i18n); - hideTabs->getClickEvent()->subscribe([&](brls::View* view) { + hideTabs->getClickEvent()->subscribe([](brls::View* view) { brls::PopupFrame::open("menus/tools/hide_tabs"_i18n, new HideTabsPage(), "", ""); }); hideTabs->setHeight(LISTITEM_HEIGHT); changelog = new brls::ListItem("menus/tools/changelog"_i18n); - changelog->getClickEvent()->subscribe([&](brls::View* view) { + changelog->getClickEvent()->subscribe([](brls::View* view) { brls::PopupFrame::open("menus/tools/changelog"_i18n, new ChangelogPage(), "", ""); }); changelog->setHeight(LISTITEM_HEIGHT);