1
0
Fork 0
mirror of https://github.com/HamletDuFromage/aio-switch-updater.git synced 2024-09-16 20:13:35 +01:00

show cheatsheet for the right BID in download cheats page, code clean up

This commit is contained in:
flb 2021-10-01 19:22:52 +02:00
parent 4304dff045
commit 86d0a2fddb
14 changed files with 95 additions and 74 deletions

View file

@ -16,7 +16,7 @@
], ],
"compilerPath": "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-g++", "compilerPath": "${DEVKITPRO}/devkitA64/bin/aarch64-none-elf-g++",
"cStandard": "c11", "cStandard": "c11",
"cppStandard": "c++17", "cppStandard": "c++20",
"intelliSenseMode": "gcc-x64" "intelliSenseMode": "gcc-x64"
} }
], ],

View file

@ -9,7 +9,9 @@
namespace show_cheats { namespace show_cheats {
void ShowCheatFiles(uint64_t tid, const std::string& name); 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 } // namespace show_cheats

View file

@ -17,7 +17,7 @@ JCPage::JCPage() : AppletFrame(true, true)
list->addView(label); list->addView(label);
backup = new brls::ListItem("menus/joy_con/backup"_i18n); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/joy_con/label"_i18n); stagedFrame->setTitle("menus/joy_con/label"_i18n);
stagedFrame->addStage( stagedFrame->addStage(
@ -35,7 +35,7 @@ JCPage::JCPage() : AppletFrame(true, true)
for (int i = profiles.size() - 1; i >= 0; i--) { for (int i = profiles.size() - 1; i >= 0; i--) {
std::vector<int> value = profiles[i].second; std::vector<int> value = profiles[i].second;
listItem = new brls::ListItem(profiles[i].first); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/joy_con/label"_i18n); stagedFrame->setTitle("menus/joy_con/label"_i18n);
stagedFrame->addStage( stagedFrame->addStage(

View file

@ -16,7 +16,7 @@ PCPage::PCPage() : AppletFrame(true, true)
list->addView(label); list->addView(label);
backup = new brls::ListItem("menus/joy_con/backup"_i18n); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/pro_con/label"_i18n); stagedFrame->setTitle("menus/pro_con/label"_i18n);
stagedFrame->addStage( stagedFrame->addStage(
@ -34,7 +34,7 @@ PCPage::PCPage() : AppletFrame(true, true)
for (int i = profiles.size() - 1; i >= 0; i--) { for (int i = profiles.size() - 1; i >= 0; i--) {
std::vector<int> value = profiles[i].second; std::vector<int> value = profiles[i].second;
listItem = new brls::ListItem(profiles[i].first); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/pro_con/label"_i18n); stagedFrame->setTitle("menus/pro_con/label"_i18n);
stagedFrame->addStage( stagedFrame->addStage(

View file

@ -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 = new brls::ListItem("menus/ams_update/get_custom_deepsea"_i18n);
listItem->setHeight(LISTITEM_HEIGHT); listItem->setHeight(LISTITEM_HEIGHT);
listItem->getClickEvent()->subscribe([&](brls::View* view) { listItem->getClickEvent()->subscribe([this](brls::View* view) {
nlohmann::ordered_json modules; nlohmann::ordered_json modules;
download::getRequest(DEEPSEA_META_JSON, modules); download::getRequest(DEEPSEA_META_JSON, modules);
ShowCustomDeepseaBuilder(modules); this->ShowCustomDeepseaBuilder(modules);
}); });
this->addView(listItem); 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); std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url);
listItem = new brls::ListItem(link.first); listItem = new brls::ListItem(link.first);
listItem->setHeight(LISTITEM_HEIGHT); 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)) { if (!erista && !std::filesystem::exists(MARIKO_PAYLOAD_PATH)) {
brls::Application::crash("menus/errors/mariko_payload_missing"_i18n); brls::Application::crash("menus/errors/mariko_payload_missing"_i18n);
} }
@ -180,7 +180,7 @@ void AmsTab::ShowCustomDeepseaBuilder(nlohmann::ordered_json& modules)
"menus/common/off"_i18n); "menus/common/off"_i18n);
} }
name_map.insert(std::pair(module_value.at("displayName"), module.key())); 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; brls::Dialog* dialog;
dialog = new brls::Dialog(fmt::format("{}:\n{}", module_value.at("repo"), module_value.at("description"))); dialog = new brls::Dialog(fmt::format("{}:\n{}", module_value.at("repo"), module_value.at("description")));
brls::GenericEvent::Callback callback = [dialog](brls::View* view) { 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->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<std::string> desired_modules; std::set<std::string> desired_modules;
for (const auto& list : lists) { for (const auto& list : lists) {
for (size_t i = 0; i < list->getViewsCount(); i++) { for (size_t i = 0; i < list->getViewsCount(); i++) {

View file

@ -84,7 +84,7 @@ void AppPage::CreateDownloadAllButton()
} }
text += url; text += url;
download = new brls::ListItem("menus/cheats/dl_latest"_i18n); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/cheats/getting_cheats"_i18n); stagedFrame->setTitle("menus/cheats/getting_cheats"_i18n);
stagedFrame->addStage( stagedFrame->addStage(
@ -167,7 +167,7 @@ void AppPage_CheatSlips::CreateLabel()
void AppPage_CheatSlips::DeclareGameListItem(const std::string& name, u64 tid, NsApplicationControlData** controlData) 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); 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) 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); AppPage::DeclareGameListItem(name, tid, controlData);
} }
@ -277,8 +277,8 @@ void AppPage_DownloadedCheats::DeclareGameListItem(const std::string& name, u64
{ {
auto tid_str = util::formatApplicationId(tid); auto tid_str = util::formatApplicationId(tid);
if (titles.find(tid_str) != titles.end()) { if (titles.find(tid_str) != titles.end()) {
listItem->getClickEvent()->subscribe([this, tid, name](brls::View* view) { show_cheats::ShowCheatFiles(tid, name); }); listItem->getClickEvent()->subscribe([tid, &name](brls::View* view) { show_cheats::ShowCheatFiles(tid, name); });
listItem->registerAction("menus/cheats/delete_cheats"_i18n, brls::Key::Y, [this, tid_str] { 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::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) { brls::GenericEvent::Callback callback = [dialog](brls::View* view) {
dialog->close(); dialog->close();

View file

@ -214,7 +214,7 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true)
for (int i = verTitles.size() - 1; i >= 0; i--) { for (int i = verTitles.size() - 1; i >= 0; i--) {
listItem = new brls::ListItem(verTitles[i]); listItem = new brls::ListItem(verTitles[i]);
change = changes[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::Dialog* dialog = new brls::Dialog(change);
brls::GenericEvent::Callback callback = [dialog](brls::View* view) { brls::GenericEvent::Callback callback = [dialog](brls::View* view) {
dialog->close(); dialog->close();
@ -231,7 +231,7 @@ ChangelogPage::ChangelogPage() : AppletFrame(true, true)
void ChangelogPage::ShowChangelogContent(const std::string version, const std::string content) void ChangelogPage::ShowChangelogContent(const std::string version, const std::string content)
{ {
listItem = new brls::ListItem(version); 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::AppletFrame* appView = new brls::AppletFrame(true, true);
brls::PopupFrame::open(version, appView, "", ""); brls::PopupFrame::open(version, appView, "", "");

View file

@ -18,20 +18,20 @@ CheatsPage::CheatsPage() : AppletFrame(true, true)
list = new brls::List(); list = new brls::List();
view = new brls::ListItem("menus/cheats/view"_i18n); 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()); brls::Application::pushView(new AppPage_DownloadedCheats());
}); });
list->addView(view); list->addView(view);
exclude = new brls::ListItem("menus/cheats/exclude"_i18n); 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()); brls::Application::pushView(new AppPage_Exclude());
}); });
list->addView(exclude); list->addView(exclude);
deleteCheats = new brls::ListItem("menus/cheats/delete_existing"_i18n); deleteCheats = new brls::ListItem("menus/cheats/delete_existing"_i18n);
deleteCheats->getClickEvent()->subscribe([&](brls::View* view) { deleteCheats->getClickEvent()->subscribe([](brls::View* view) {
stagedFrame = new brls::StagedAppletFrame(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/cheats/delete_all"_i18n); stagedFrame->setTitle("menus/cheats/delete_all"_i18n);
stagedFrame->addStage( stagedFrame->addStage(
new WorkerPage(stagedFrame, "menus/cheats/deleting"_i18n, []() { extract::removeCheats(); })); 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); std::string cheatsVer = util::downloadFileToString(CHEATS_URL_VERSION);
if (cheatsVer != "") { if (cheatsVer != "") {
dlAll = new brls::ListItem("menus/cheats/dl_all"_i18n); 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; std::string url;
switch (CurrentCfw::running_cfw) { switch (CurrentCfw::running_cfw) {
case CFW::sxos: case CFW::sxos:

View file

@ -16,6 +16,20 @@ using json = nlohmann::json;
namespace show_cheats { 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) void ShowCheatFiles(u64 tid, const std::string& name)
{ {
std::string path = util::getContentsPath(); std::string path = util::getContentsPath();
@ -25,29 +39,37 @@ namespace show_cheats {
bool is_populated = false; bool is_populated = false;
if (std::filesystem::exists(path)) { if (std::filesystem::exists(path)) {
for (const auto& cheatFile : std::filesystem::directory_iterator(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) { if (is_populated) {
brls::PopupFrame::open(name, appView, ""); brls::PopupFrame::open(name, appView, "");
} }
else { else {
brls::Dialog* dialog = new brls::Dialog("menus/cheats/not_found"_i18n); NoCheatsFoundPopup();
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::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; bool res = false;
brls::List* cheatsList = new brls::List();
if (extract::isBID(path.filename().stem())) { 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::string str;
std::regex cheats_expr(R"(\[.+\]|\{.+\})"); std::regex cheats_expr(R"(\[.+\]|\{.+\})");
@ -56,16 +78,13 @@ namespace show_cheats {
while (std::getline(in, str)) { while (std::getline(in, str)) {
if (str.size() > 0) { if (str.size() > 0) {
if (std::regex_search(str, cheats_expr)) { if (std::regex_search(str, cheats_expr)) {
cheatsList->addView(new brls::ListItem(str)); (*cheatsList)->addView(new brls::ListItem(str));
res = true; res = true;
} }
} }
} }
} }
} }
if (res) {
(*appView)->addTab(util::upperCase(path.filename().stem()), cheatsList);
}
return res; return res;
} }
} // namespace show_cheats } // namespace show_cheats
@ -77,8 +96,8 @@ DownloadCheatsPage::DownloadCheatsPage(uint64_t tid, const std::string& name) :
GetBuildID(); GetBuildID();
this->setTitle(name); this->setTitle(name);
this->setFooterText("v" + std::to_string(this->version / 0x10000)); this->setFooterText("v" + std::to_string(this->version / 0x10000));
this->registerAction("menus/cheats/show_existing"_i18n, brls::Key::X, [this, tid, name] { this->registerAction("menus/cheats/show_existing"_i18n, brls::Key::X, [this, &name] {
show_cheats::ShowCheatFiles(tid, name); show_cheats::ShowCheatSheet(this->tid, this->bid, name);
return true; return true;
}); });
} }
@ -172,7 +191,7 @@ DownloadCheatsPage_CheatSlips::DownloadCheatsPage_CheatSlips(uint64_t tid, const
//Something else went wrong //Something else went wrong
continue; 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()) { if (cheat.find("titles") != cheat.end()) {
ShowCheatsContent(cheat.at("titles")); 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()) { for (const auto& p : cheatsJson[this->bid].items()) {
json cheat = p.value(); json cheat = p.value();
listItem = new ::brls::ListItem(cheat.at("title")); 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")); WriteCheats(cheat.at("content"));
brls::Dialog* dialog = new brls::Dialog(fmt::format("menus/cheats/gbatemp_dl_successful_dl"_i18n, cheat.at("title"))); 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) { brls::GenericEvent::Callback callback = [dialog](brls::View* view) {

View file

@ -25,7 +25,7 @@ DownloadPayloadPage::DownloadPayloadPage(const nlohmann::ordered_json& payloads)
std::string path = std::string(BOOTLOADER_PL_PATH) + link.first; std::string path = std::string(BOOTLOADER_PL_PATH) + link.first;
std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url); std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url);
listItem = new brls::ListItem(link.first); 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); fs::createTree(BOOTLOADER_PL_PATH);
brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/tools/getting_payload"_i18n); stagedFrame->setTitle("menus/tools/getting_payload"_i18n);
@ -48,7 +48,7 @@ DownloadPayloadPage::DownloadPayloadPage(const nlohmann::ordered_json& payloads)
notFound->setHorizontalAlign(NVG_ALIGN_CENTER); notFound->setHorizontalAlign(NVG_ALIGN_CENTER);
list->addView(notFound); list->addView(notFound);
brls::ListItem* back = new brls::ListItem("menus/common/back"_i18n); 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(); brls::Application::popView();
}); });
list->addView(back); list->addView(back);

View file

@ -59,7 +59,7 @@ void ListDownloadTab::createList(contentType type)
std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url); std::string text("menus/common/download"_i18n + link.first + "menus/common/from"_i18n + url);
listItem = new brls::ListItem(link.first); listItem = new brls::ListItem(link.first);
listItem->setHeight(LISTITEM_HEIGHT); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle(fmt::format("menus/main/getting"_i18n, contentTypeNames[(int)type].data())); stagedFrame->setTitle(fmt::format("menus/main/getting"_i18n, contentTypeNames[(int)type].data()));
stagedFrame->addStage(new ConfirmPage(stagedFrame, text)); stagedFrame->addStage(new ConfirmPage(stagedFrame, text));
@ -157,7 +157,7 @@ void ListDownloadTab::createCheatSlipItem()
this->size += 1; this->size += 1;
cheatslipsItem = new brls::ListItem("menus/cheats/get_cheatslips"_i18n); cheatslipsItem = new brls::ListItem("menus/cheats/get_cheatslips"_i18n);
cheatslipsItem->setHeight(LISTITEM_HEIGHT); cheatslipsItem->setHeight(LISTITEM_HEIGHT);
cheatslipsItem->getClickEvent()->subscribe([&](brls::View* view) { cheatslipsItem->getClickEvent()->subscribe([](brls::View* view) {
if (std::filesystem::exists(TOKEN_PATH)) { if (std::filesystem::exists(TOKEN_PATH)) {
brls::Application::pushView(new AppPage_CheatSlips()); brls::Application::pushView(new AppPage_CheatSlips());
return true; return true;
@ -165,8 +165,8 @@ void ListDownloadTab::createCheatSlipItem()
else { else {
std::string usr, pwd; std::string usr, pwd;
//Result rc = swkbdCreate(&kbd, 0); //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([&usr](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([&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) + "\"}"; std::string body = "{\"email\":\"" + std::string(usr) + "\",\"password\":\"" + std::string(pwd) + "\"}";
nlohmann::ordered_json token; nlohmann::ordered_json token;
download::getRequest(CHEATSLIPS_TOKEN_URL, token, download::getRequest(CHEATSLIPS_TOKEN_URL, token,
@ -201,7 +201,7 @@ void ListDownloadTab::creategbatempItem()
this->size += 1; this->size += 1;
gbatempItem = new brls::ListItem("menus/cheats/get_gbatemp"_i18n); gbatempItem = new brls::ListItem("menus/cheats/get_gbatemp"_i18n);
gbatempItem->setHeight(LISTITEM_HEIGHT); gbatempItem->setHeight(LISTITEM_HEIGHT);
gbatempItem->getClickEvent()->subscribe([&](brls::View* view) { gbatempItem->getClickEvent()->subscribe([](brls::View* view) {
brls::Application::pushView(new AppPage_Gbatemp()); brls::Application::pushView(new AppPage_Gbatemp());
return true; return true;
}); });

View file

@ -35,7 +35,7 @@ NetPage::NetPage() : AppletFrame(true, true)
label = new brls::Label(brls::LabelStyle::DESCRIPTION, labelText, true); label = new brls::Label(brls::LabelStyle::DESCRIPTION, labelText, true);
list->addView(label); list->addView(label);
cancel = new brls::ListItem("menus/common/go_back"_i18n); 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); list->addView(cancel);
} }
else { else {
@ -118,9 +118,9 @@ NetPage::NetPage() : AppletFrame(true, true)
listItem = new brls::ListItem(values["name"]); listItem = new brls::ListItem(values["name"]);
else else
listItem = new brls::ListItem("Unnamed"); 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::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); nifmInitialize(NifmServiceType_Admin);
NifmNetworkProfileData profile; NifmNetworkProfileData profile;
nifmGetCurrentNetworkProfile(&profile); nifmGetCurrentNetworkProfile(&profile);

View file

@ -20,12 +20,12 @@ PayloadPage::PayloadPage() : AppletFrame(true, true)
for (const auto& payload : payloads) { for (const auto& payload : payloads) {
std::string payload_path = payload; std::string payload_path = payload;
listItem = new brls::ListItem(payload_path); listItem = new brls::ListItem(payload_path);
listItem->getClickEvent()->subscribe([&, payload](brls::View* view) { listItem->getClickEvent()->subscribe([&payload](brls::View* view) {
util::rebootToPayload(payload); util::rebootToPayload(payload);
brls::Application::popView(); brls::Application::popView();
}); });
if (CurrentCfw::running_cfw == CFW::ams) { 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; std::string res1;
if (fs::copyFile(payload_path, REBOOT_PAYLOAD_PATH)) { 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) + "'."; 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; 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; std::string res2;
if (fs::copyFile(payload, UPDATE_BIN_PATH)) { if (fs::copyFile(payload, UPDATE_BIN_PATH)) {
res2 += "menus/payloads/copy_success"_i18n + payload + "menus/payloads/to"_i18n + std::string(UPDATE_BIN_PATH) + "'."; res2 += "menus/payloads/copy_success"_i18n + payload + "menus/payloads/to"_i18n + std::string(UPDATE_BIN_PATH) + "'.";

View file

@ -30,7 +30,7 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload
if (!tag.empty() && tag != AppVersion) { if (!tag.empty() && tag != AppVersion) {
updateApp = new brls::ListItem("menus/tools/update_app"_i18n + tag + ")"); updateApp = new brls::ListItem("menus/tools/update_app"_i18n + tag + ")");
std::string text("menus/tools/dl_app"_i18n + std::string(APP_URL)); 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(); brls::StagedAppletFrame* stagedFrame = new brls::StagedAppletFrame();
stagedFrame->setTitle("menus/common/updating"_i18n); stagedFrame->setTitle("menus/common/updating"_i18n);
stagedFrame->addStage( 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 = new brls::ListItem("menus/tools/cheats"_i18n);
cheats->getClickEvent()->subscribe([&](brls::View* view) { cheats->getClickEvent()->subscribe([](brls::View* view) {
brls::Application::pushView(new CheatsPage()); brls::Application::pushView(new CheatsPage());
}); });
cheats->setHeight(LISTITEM_HEIGHT); cheats->setHeight(LISTITEM_HEIGHT);
JCcolor = new brls::ListItem("menus/tools/joy_cons"_i18n); 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()); brls::Application::pushView(new JCPage());
}); });
JCcolor->setHeight(LISTITEM_HEIGHT); JCcolor->setHeight(LISTITEM_HEIGHT);
PCcolor = new brls::ListItem("menus/tools/pro_cons"_i18n); 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()); brls::Application::pushView(new PCPage());
}); });
PCcolor->setHeight(LISTITEM_HEIGHT); PCcolor->setHeight(LISTITEM_HEIGHT);
@ -72,13 +72,13 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload
downloadPayload->setHeight(LISTITEM_HEIGHT); */ downloadPayload->setHeight(LISTITEM_HEIGHT); */
rebootPayload = new brls::ListItem("menus/tools/inject_payloads"_i18n); 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()); brls::Application::pushView(new PayloadPage());
}); });
rebootPayload->setHeight(LISTITEM_HEIGHT); rebootPayload->setHeight(LISTITEM_HEIGHT);
/* ntcp = new brls::ListItem("menus/ntcp"_i18n); /* ntcp = new brls::ListItem("menus/ntcp"_i18n);
ntcp->getClickEvent()->subscribe([&](brls::View* view){ ntcp->getClickEvent()->subscribe([](brls::View* view){
std::string res = syncTime(); std::string res = syncTime();
brls::Dialog* dialog = new brls::Dialog(res); brls::Dialog* dialog = new brls::Dialog(res);
brls::GenericEvent::Callback callback = [dialog](brls::View* view) { 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); */ this->addView(ntcp); */
netSettings = new brls::ListItem("menus/tools/internet_settings"_i18n); 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(), "", ""); brls::PopupFrame::open("menus/tools/internet_settings"_i18n, new NetPage(), "", "");
}); });
netSettings->setHeight(LISTITEM_HEIGHT); netSettings->setHeight(LISTITEM_HEIGHT);
browser = new brls::ListItem("menus/tools/browser"_i18n); browser = new brls::ListItem("menus/tools/browser"_i18n);
browser->getClickEvent()->subscribe([&](brls::View* view) { browser->getClickEvent()->subscribe([](brls::View* view) {
std::string url; 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 = ""; std::string error = "";
int at = appletGetAppletType(); int at = appletGetAppletType();
if (at == AppletType_Application) { // Running as a title 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); browser->setHeight(LISTITEM_HEIGHT);
move = new brls::ListItem("menus/tools/batch_copy"_i18n); move = new brls::ListItem("menus/tools/batch_copy"_i18n);
move->getClickEvent()->subscribe([&](brls::View* view) { move->getClickEvent()->subscribe([](brls::View* view) {
chdir("/"); chdir("/");
std::string error = ""; std::string error = "";
if (std::filesystem::exists(COPY_FILES_TXT)) { 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); move->setHeight(LISTITEM_HEIGHT);
cleanUp = new brls::ListItem("menus/tools/clean_up"_i18n); 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(AMS_ZIP_PATH);
std::filesystem::remove(APP_ZIP_PATH); std::filesystem::remove(APP_ZIP_PATH);
std::filesystem::remove(CFW_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); cleanUp->setHeight(LISTITEM_HEIGHT);
language = new brls::ListItem("menus/tools/language"_i18n); language = new brls::ListItem("menus/tools/language"_i18n);
language->getClickEvent()->subscribe([&](brls::View* view) { language->getClickEvent()->subscribe([](brls::View* view) {
std::vector<std::pair<std::string, std::string>> languages{ std::vector<std::pair<std::string, std::string>> languages{
std::make_pair("menus/language/en-US"_i18n, "en-US"), std::make_pair("menus/language/en-US"_i18n, "en-US"),
std::make_pair("menus/language/ja"_i18n, "ja"), 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::List* list = new brls::List();
brls::ListItem* listItem; brls::ListItem* listItem;
listItem = new brls::ListItem(fmt::format("{} ({})", "menus/language/system_default"_i18n, i18n::getCurrentLocale())); 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); std::filesystem::remove(LANGUAGE_JSON);
brls::Application::quit(); brls::Application::quit();
return true; return true;
}); });
list->addView(listItem); list->addView(listItem);
for (auto& l : languages) { for (auto& language : languages) {
listItem = new brls::ListItem(l.first); listItem = new brls::ListItem(language.first);
listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [this, l] { listItem->registerAction("menus/tools/language"_i18n, brls::Key::A, [&language] {
json updatedLanguage = json::object(); json updatedLanguage = json::object();
updatedLanguage["language"] = l.second; updatedLanguage["language"] = language.second;
std::ofstream out(LANGUAGE_JSON); std::ofstream out(LANGUAGE_JSON);
out << updatedLanguage.dump(); out << updatedLanguage.dump();
brls::Application::quit(); brls::Application::quit();
@ -218,13 +218,13 @@ ToolsTab::ToolsTab(const std::string& tag, const nlohmann::ordered_json& payload
language->setHeight(LISTITEM_HEIGHT); language->setHeight(LISTITEM_HEIGHT);
hideTabs = new brls::ListItem("menus/tools/hide_tabs"_i18n); 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(), "", ""); brls::PopupFrame::open("menus/tools/hide_tabs"_i18n, new HideTabsPage(), "", "");
}); });
hideTabs->setHeight(LISTITEM_HEIGHT); hideTabs->setHeight(LISTITEM_HEIGHT);
changelog = new brls::ListItem("menus/tools/changelog"_i18n); 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(), "", ""); brls::PopupFrame::open("menus/tools/changelog"_i18n, new ChangelogPage(), "", "");
}); });
changelog->setHeight(LISTITEM_HEIGHT); changelog->setHeight(LISTITEM_HEIGHT);