diff --git a/inc/menu.h b/inc/menu.h index 698c739..476ba67 100644 --- a/inc/menu.h +++ b/inc/menu.h @@ -7,12 +7,6 @@ #include "gfx.h" #include "miscui.h" -enum menuTouch -{ - MENU_NOTHING, - MENU_DOUBLE_REL -}; - namespace ui { class menu @@ -32,9 +26,6 @@ namespace ui //Returns selected option int getSelected() { return selected; } - //Returns touch event from buttons - int getTouchEvent() { return retEvent; } - //Draws the menu at x and y. rectWidth is the width of the rectangle drawn under the selected void draw(const clr& textClr); @@ -53,7 +44,7 @@ namespace ui //Options vector std::vector opt; //Selected + frame counting for auto-scroll - int selected = 0, fc = 0, start = 0, retEvent = MENU_NOTHING; + int selected = 0, fc = 0, start = 0; //How much we shift the color of the rectangle uint8_t clrSh = 0; bool clrAdd = true; diff --git a/inc/uistrmap.h b/inc/uistrmap.h new file mode 100644 index 0000000..e5861cf --- /dev/null +++ b/inc/uistrmap.h @@ -0,0 +1,42 @@ +#ifndef UISTRMAP_H +#define UISTRMAP_H + +#include +//This is only included in UI so I don't have a nasty if else if else if else if else if +//Might be a shitty way to pull this off, but meh +static std::unordered_map uistrdef; + +inline void transLoadInit() +{ + uistrdef["author"] = 0; + uistrdef["userHelp"] = 1; + uistrdef["titleHelp"] = 2; + uistrdef["folderHelp"] = 3; + uistrdef["optHelp"] = 4; + uistrdef["yt"] = 5; + uistrdef["nt"] = 6; + uistrdef["on"] = 7; + uistrdef["off"] = 8; + uistrdef["confirmBlacklist"] = 9; + uistrdef["confirmOverwrite"] = 10; + uistrdef["confirmRestore"] = 11; + uistrdef["confirmDelete"] = 12; + uistrdef["confirmCopy"] = 13; + uistrdef["confirmEraseNand"] = 14; + uistrdef["confirmEraseFolder"] = 15; + uistrdef["confirmHead"] = 16; + uistrdef["copyHead"] = 17; + uistrdef["noSavesFound"] = 18; + uistrdef["advMenu"] = 19; + uistrdef["extMenu"] = 20; + uistrdef["optMenu"] = 21; + uistrdef["optMenuExp"] = 22; + uistrdef["holdingText"] = 23; +} + +inline void transLoadExit() +{ + uistrdef.clear(); +} + +#endif diff --git a/src/data.cpp b/src/data.cpp index 3dd607d..f888c38 100644 --- a/src/data.cpp +++ b/src/data.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include diff --git a/src/gfx.c b/src/gfx.c index 8cd7ecb..bb4d281 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -369,7 +369,6 @@ size_t textGetWidth(const char *str, const font *f, int sz) width += slot->advance.x >> 6; } - return width; } diff --git a/src/ui.cpp b/src/ui.cpp index 2516deb..5ed355e 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -10,6 +10,9 @@ #include "util.h" #include "file.h" +//for ui translation loading +#include "uistrmap.h" + #define VER_STRING "v. 06.07.2020" //text mode @@ -120,77 +123,129 @@ static void loadTrans() } } + transLoadInit(); fs::dataFile lang(file); while(lang.readNextLine(true)) { - std::string varName = lang.getName(); - //Holy shit this'll be fun - if(varName == "author") - author = lang.getNextValueStr(); - else if(varName == "userHelp") - ui::userHelp = lang.getNextValueStr(); - else if(varName == "titleHelp") - ui::titleHelp = lang.getNextValueStr(); - else if(varName == "folderHelp") - ui::folderHelp = lang.getNextValueStr(); - else if(varName == "optHelp") - ui::optHelp = lang.getNextValueStr(); - else if(varName == "yt") - ui::yt = lang.getNextValueStr(); - else if(varName == "nt") - ui::nt = lang.getNextValueStr(); - else if(varName == "on") - ui::on = lang.getNextValueStr(); - else if(varName == "off") - ui::off = lang.getNextValueStr(); - else if(varName == "confirmBlacklist") - ui::confBlacklist = lang.getNextValueStr(); - else if(varName == "confirmOverwrite") - ui::confOverwrite = lang.getNextValueStr(); - else if(varName == "confirmRestore") - ui::confRestore = lang.getNextValueStr(); - else if(varName == "confirmDelete") - ui::confDel = lang.getNextValueStr(); - else if(varName == "confirmCopy") - ui::confCopy = lang.getNextValueStr(); - else if(varName == "confirmEraseNand") - ui::confEraseNand = lang.getNextValueStr(); - else if(varName == "confirmEraseFolder") - ui::confEraseFolder = lang.getNextValueStr(); - else if(varName == "confirmHead") - ui::confirmHead = lang.getNextValueStr(); - else if(varName == "copyHead") - ui::copyHead = lang.getNextValueStr(); - else if(varName == "noSavesFound") - ui::noSavesFound = lang.getNextValueStr(); - else if(varName == "advMenu") + switch(uistrdef[lang.getName()]) { - int ind = lang.getNextValueInt(); - ui::advMenuStr[ind] = lang.getNextValueStr(); + case 0: + author = lang.getNextValueStr(); + break; + + case 1: + ui::userHelp = lang.getNextValueStr(); + break; + + case 2: + ui::titleHelp = lang.getNextValueStr(); + break; + + case 3: + ui::folderHelp = lang.getNextValueStr(); + break; + + case 4: + ui::optHelp = lang.getNextValueStr(); + break; + + case 5: + ui::yt = lang.getNextValueStr(); + break; + + case 6: + ui::nt = lang.getNextValueStr(); + break; + + case 7: + ui::on = lang.getNextValueStr(); + break; + + case 8: + ui::off = lang.getNextValueStr(); + break; + + case 9: + ui::confBlacklist = lang.getNextValueStr(); + break; + + case 10: + ui::confOverwrite = lang.getNextValueStr(); + break; + + case 11: + ui::confRestore = lang.getNextValueStr(); + break; + + case 12: + ui::confDel = lang.getNextValueStr(); + break; + + case 13: + ui::confCopy = lang.getNextValueStr(); + break; + + case 14: + ui::confEraseNand = lang.getNextValueStr(); + break; + + case 15: + ui::confEraseFolder = lang.getNextValueStr(); + break; + + case 16: + ui::confirmHead = lang.getNextValueStr(); + break; + + case 17: + ui::copyHead = lang.getNextValueStr(); + break; + + case 18: + ui::noSavesFound = lang.getNextValueStr(); + break; + + case 19: + { + int ind = lang.getNextValueInt(); + ui::advMenuStr[ind] = lang.getNextValueStr(); + } + break; + + case 20: + { + int ind = lang.getNextValueInt(); + ui::exMenuStr[ind] = lang.getNextValueStr(); + } + break; + + case 21: + { + int ind = lang.getNextValueInt(); + ui::optMenuStr[ind] = lang.getNextValueStr(); + } + break; + + case 22: + { + int ind = lang.getNextValueInt(); + ui::optMenuExp[ind] = lang.getNextValueStr(); + } + break; + + case 23: + { + int ind = lang.getNextValueInt(); + ui::holdingText[ind] = lang.getNextValueStr(); + } + break; + + default: + ui::showMessage("*Translation File Error:*", "On Line: %s\n*%s* is not a known or valid string name.", lang.getLine(), lang.getName()); + break; } - else if(varName == "extMenu") - { - int ind = lang.getNextValueInt(); - ui::exMenuStr[ind] = lang.getNextValueStr(); - } - else if(varName == "optMenu") - { - int ind = lang.getNextValueInt(); - ui::optMenuStr[ind] = lang.getNextValueStr(); - } - else if(varName == "optMenuExp") - { - int ind = lang.getNextValueInt(); - ui::optMenuExp[ind] = lang.getNextValueStr(); - } - else if(varName == "holdingText") - { - int ind = lang.getNextValueInt(); - ui::holdingText[ind] = lang.getNextValueStr(); - } - else - ui::showMessage("*Translation File Error:*", "On Line: %s\n*%s* is not a known or valid string name.", lang.getLine(), varName.c_str()); } + transLoadExit(); } void ui::initTheme() diff --git a/src/ui/advmode.cpp b/src/ui/advmode.cpp index db40e61..e3a7d13 100644 --- a/src/ui/advmode.cpp +++ b/src/ui/advmode.cpp @@ -149,9 +149,7 @@ void performCopyMenuOps() std::remove(delPath.c_str()); } if(commit) - { fsdevCommitDevice(dev.c_str()); - }; } } break; @@ -354,6 +352,7 @@ void ui::advModePrep(const std::string& svDev, const FsSaveDataType& _type, bool { commit = commitOnWrite; type = _type; + saveMenu.setParams(30, 98, 602); sdMenu.setParams(648, 98, 602); copyMenu.setParams(472, 278, 304); diff --git a/src/ui/menu.cpp b/src/ui/menu.cpp index 7850991..add862c 100644 --- a/src/ui/menu.cpp +++ b/src/ui/menu.cpp @@ -8,7 +8,6 @@ static const clr menuColorLight = clrCreateU32(0xFFF05032), menuColorDark = clrCreateU32(0xFFC5FF00); - void ui::menu::setParams(const unsigned& _x, const unsigned& _y, const unsigned& _rW) { x = _x; diff --git a/src/ui/txtui.cpp b/src/ui/txtui.cpp index 8f40bc3..3773ddb 100644 --- a/src/ui/txtui.cpp +++ b/src/ui/txtui.cpp @@ -159,9 +159,9 @@ void ui::textFolderMenuUpdate(const uint64_t& down, const uint64_t& held) else overwriteBackup(folderMenu.getSelected() - 1); } - else if(down & KEY_Y) + else if(down & KEY_Y && folderMenu.getSelected() > 0) restoreBackup(folderMenu.getSelected() - 1); - else if(down & KEY_X) + else if(down & KEY_X && folderMenu.getSelected() > 0) deleteBackup(folderMenu.getSelected() - 1); else if(down & KEY_MINUS) {