diff --git a/include/screens/mainMenu.hpp b/include/screens/mainMenu.hpp index c30db5f..c4105e7 100644 --- a/include/screens/mainMenu.hpp +++ b/include/screens/mainMenu.hpp @@ -39,10 +39,11 @@ public: void Logic(u32 hDown, u32 hHeld, touchPosition touch) override; private: int Selection = 0; - std::vector mainButtons = { - {90, 40, 140, 35, -1}, // ScriptList. - {90, 100, 140, 35, -1}, // Language. - {90, 160, 140, 35, -1}, // Colors. + std::vector mainButtons = { + {10, 75, 140, 35, -1}, // ScriptList. + {170, 75, 140, 35, -1}, // ScriptBrowse. + {10, 140, 140, 35, -1}, // Language. + {170, 140, 140, 35, -1}, // Colors. }; }; diff --git a/include/screens/scriptBrowse.hpp b/include/screens/scriptBrowse.hpp new file mode 100644 index 0000000..268f829 --- /dev/null +++ b/include/screens/scriptBrowse.hpp @@ -0,0 +1,47 @@ +/* +* This file is part of Universal-Updater +* Copyright (C) 2019 VoltZ, Epicpkmn11, Flame, RocketRobz, TotallyNotGuy +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* Additional Terms 7.b and 7.c of GPLv3 apply to this file: +* * Requiring preservation of specified reasonable legal notices or +* author attributions in that material or in the Appropriate Legal +* Notices displayed by works containing it. +* * Prohibiting misrepresentation of the origin of that material, +* or requiring that modified versions of such material be marked in +* reasonable ways as different from the original version. +*/ +#ifndef SCRIPTBROWSE_HPP +#define SCRIPTBROWSE_HPP + +#include "screens/screen.hpp" +#include "screens/screenCommon.hpp" + +#include "utils/fileBrowse.h" + +class ScriptBrowse : public Screen +{ +public: + void Draw(void) const override; + void Logic(u32 hDown, u32 hHeld, touchPosition touch) override; + +private: + std::vector dirContents; + mutable int screenPos = 0; + mutable int selection = 0; + int keyRepeatDelay = 0; + int fastMode = false; +}; +#endif \ No newline at end of file diff --git a/romfs/lang/en/app.json b/romfs/lang/en/app.json index 409dfe0..0892f2a 100644 --- a/romfs/lang/en/app.json +++ b/romfs/lang/en/app.json @@ -34,5 +34,6 @@ "GETTING_SCRIPT_LIST": "Getting Script List...", "B_BACK": "\uE001: Back", - "A_CHOOSE": "\uE000: Choose" + "A_CHOOSE": "\uE000: Choose", + "SCRIPTBROWSE": "Scriptbrowse" } diff --git a/source/screens/mainMenu.cpp b/source/screens/mainMenu.cpp index 53f4f1f..1043b28 100644 --- a/source/screens/mainMenu.cpp +++ b/source/screens/mainMenu.cpp @@ -25,9 +25,12 @@ */ #include "download/download.hpp" + #include "screens/mainMenu.hpp" -#include "screens/settings.hpp" +#include "screens/scriptBrowse.hpp" #include "screens/scriptlist.hpp" +#include "screens/settings.hpp" + #include "utils/config.hpp" @@ -41,7 +44,7 @@ void MainMenu::Draw(void) const { Gui::DrawString(397-Gui::GetStringWidth(0.5f, VERSION_STRING), 237-Gui::GetStringHeight(0.5f, VERSION_STRING), 0.5f, Config::TxtColor, VERSION_STRING); Gui::DrawBottom(); - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 4; i++) { if (Selection == i) { Gui::Draw_Rect(mainButtons[i].x, mainButtons[i].y, mainButtons[i].w, mainButtons[i].h, Config::SelectedColor); } else { @@ -49,9 +52,10 @@ void MainMenu::Draw(void) const { } } - Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("SCRIPTLIST")))/2, mainButtons[0].y+10, 0.6f, Config::TxtColor, Lang::get("SCRIPTLIST"), 140); - Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("LANGUAGE")))/2, mainButtons[1].y+10, 0.6f, Config::TxtColor, Lang::get("LANGUAGE"), 140); - Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("COLORS")))/2, mainButtons[2].y+10, 0.6f, Config::TxtColor, Lang::get("COLORS"), 140); + Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("SCRIPTLIST")))/2-150+70, mainButtons[0].y+10, 0.6f, Config::TxtColor, Lang::get("SCRIPTLIST"), 140); + Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("SCRIPTBROWSE")))/2+150-70, mainButtons[1].y+10, 0.6f, Config::TxtColor, Lang::get("SCRIPTBROWSE"), 140); + Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("LANGUAGE")))/2-150+70, mainButtons[2].y+10, 0.6f, Config::TxtColor, Lang::get("LANGUAGE"), 140); + Gui::DrawString((320-Gui::GetStringWidth(0.6f, Lang::get("COLORS")))/2+150-70, mainButtons[3].y+10, 0.6f, Config::TxtColor, Lang::get("COLORS"), 140); } void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { @@ -59,10 +63,14 @@ void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { exiting = true; } - if (hDown & KEY_UP) { - if(Selection > 0) Selection--; - } else if (hDown & KEY_DOWN) { - if(Selection < 2) Selection++; + if(hDown & KEY_UP) { + if(Selection > 1) Selection -= 2; + } else if(hDown & KEY_DOWN) { + if(Selection < 3 && Selection != 2 && Selection != 3) Selection += 2; + } else if (hDown & KEY_LEFT) { + if (Selection%2) Selection--; + } else if (hDown & KEY_RIGHT) { + if (!(Selection%2)) Selection++; } if (hDown & KEY_A) { @@ -71,10 +79,13 @@ void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { Gui::setScreen(std::make_unique()); break; case 1: + Gui::setScreen(std::make_unique()); + break; + case 2: mode = 0; Gui::setScreen(std::make_unique()); break; - case 2: + case 3: mode = 1; Gui::setScreen(std::make_unique()); break; @@ -85,9 +96,11 @@ void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { if (touching(touch, mainButtons[0])) { Gui::setScreen(std::make_unique()); } else if (touching(touch, mainButtons[1])) { + Gui::setScreen(std::make_unique()); + } else if (touching(touch, mainButtons[2])) { mode = 0; Gui::setScreen(std::make_unique()); - } else if (touching(touch, mainButtons[2])) { + } else if (touching(touch, mainButtons[3])) { mode = 1; Gui::setScreen(std::make_unique()); } diff --git a/source/screens/scriptBrowse.cpp b/source/screens/scriptBrowse.cpp new file mode 100644 index 0000000..13a6657 --- /dev/null +++ b/source/screens/scriptBrowse.cpp @@ -0,0 +1,62 @@ +/* +* This file is part of Universal-Updater +* Copyright (C) 2019 VoltZ, Epicpkmn11, Flame, RocketRobz, TotallyNotGuy +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* Additional Terms 7.b and 7.c of GPLv3 apply to this file: +* * Requiring preservation of specified reasonable legal notices or +* author attributions in that material or in the Appropriate Legal +* Notices displayed by works containing it. +* * Prohibiting misrepresentation of the origin of that material, +* or requiring that modified versions of such material be marked in +* reasonable ways as different from the original version. +*/ + +#include "download/download.hpp" + +#include "screens/mainMenu.hpp" +#include "screens/scriptBrowse.hpp" + +#include "utils/config.hpp" + +#define ENTRIES_PER_SCREEN 2 + +nlohmann::json jsonFileBrowse; +std::string metaFile = "sdmc:/3ds/Universal-Updater/ScriptInfo.json"; + +extern std::string get(nlohmann::json json, const std::string &key, const std::string &key2); + +nlohmann::json openMetaFile() { + FILE* file = fopen(metaFile.c_str(), "rt"); + nlohmann::json jsonFile; + if(file) jsonFile = nlohmann::json::parse(file, nullptr, false); + fclose(file); + return jsonFile; +} + + +void ScriptBrowse::Draw(void) const { + Gui::DrawTop(); + Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, Lang::get("Scriptbrowse"), 400); + Gui::DrawBottom(); +} + + +void ScriptBrowse::Logic(u32 hDown, u32 hHeld, touchPosition touch) { + if (hDown & KEY_B) { + Gui::screenBack(); + return; + } +} \ No newline at end of file