Simulate a progressbar. (For testing purpose) ( ͡° ͜ʖ ͡°)

Press Select in the MainMenu, to show the progressbar. This will get removed after the download progressbar is implemented.
This commit is contained in:
VoltZ
2019-11-15 19:13:41 +01:00
parent bb2cecc622
commit bd25846c4d
2 changed files with 128 additions and 65 deletions
+7
View File
@@ -38,7 +38,14 @@ public:
void Draw(void) const override; void Draw(void) const override;
void Logic(u32 hDown, u32 hHeld, touchPosition touch) override; void Logic(u32 hDown, u32 hHeld, touchPosition touch) override;
private: private:
void DrawMainMenu(void) const;
void DisplayTestbar(void) const;
void ProgressBarLogic(u32 hDown, u32 hHeld);
int keyRepeatDelay = 3;
int mode = 0;
int Selection = 0; int Selection = 0;
std::vector<Structs::ButtonPos> mainButtons = { std::vector<Structs::ButtonPos> mainButtons = {
{10, 40, 140, 35, -1}, // Scriptlist. {10, 40, 140, 35, -1}, // Scriptlist.
{170, 40, 140, 35, -1}, // ScriptBrowse. {170, 40, 140, 35, -1}, // ScriptBrowse.
+121 -65
View File
@@ -40,10 +40,21 @@ extern bool exiting;
extern bool touching(touchPosition touch, Structs::ButtonPos button); extern bool touching(touchPosition touch, Structs::ButtonPos button);
extern bool checkWifiStatus(void); extern bool checkWifiStatus(void);
u64 current = 0;
u64 total = 100;
// This is for the Script Creator, so no one can access it for now, until it is stable or so. // This is for the Script Creator, so no one can access it for now, until it is stable or so.
bool isTesting = false; bool isTesting = false;
void MainMenu::Draw(void) const { void MainMenu::Draw(void) const {
if (mode == 0) {
DrawMainMenu();
} else if (mode == 1) {
DisplayTestbar();
}
}
void MainMenu::DrawMainMenu(void) const {
Gui::DrawTop(); Gui::DrawTop();
Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, "Universal-Updater", 400); Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, "Universal-Updater", 400);
Gui::DrawString(397-Gui::GetStringWidth(0.5f, V_STRING), 237-Gui::GetStringHeight(0.5f, V_STRING), 0.5f, Config::TxtColor, V_STRING); Gui::DrawString(397-Gui::GetStringWidth(0.5f, V_STRING), 237-Gui::GetStringHeight(0.5f, V_STRING), 0.5f, Config::TxtColor, V_STRING);
@@ -65,97 +76,142 @@ void MainMenu::Draw(void) const {
Gui::DrawString((320-Gui::GetStringWidth(0.6f, "FTP"))/2+150-70, mainButtons[5].y+10, 0.6f, Config::TxtColor, "FTP", 140); Gui::DrawString((320-Gui::GetStringWidth(0.6f, "FTP"))/2+150-70, mainButtons[5].y+10, 0.6f, Config::TxtColor, "FTP", 140);
} }
void MainMenu::DisplayTestbar(void) const {
Gui::DrawTop();
Gui::DrawStringCentered(0, 2, 0.7f, Config::TxtColor, "Downloading <Filename> . <Extension>...", 400);
std::string progressDownload = std::to_string(current);
progressDownload += " KB / ";
progressDownload += std::to_string(total);
progressDownload += " KB downloaded.";
Gui::DrawStringCentered(0, 80, 0.6f, Config::TxtColor, progressDownload, 400);
Gui::Draw_Rect(30, 120, 340, 30, BLACK);
Gui::Draw_Rect(31, 121, (((double)current/(double)total) * 338.0), 28, WHITE);
Gui::DrawBottom();
}
void MainMenu::ProgressBarLogic(u32 hDown, u32 hHeld) {
if (keyRepeatDelay) keyRepeatDelay--;
if (hHeld & KEY_LEFT && !keyRepeatDelay) {
if (current > 0) {
current--;
} else {
current = total;
}
}
if (hHeld & KEY_RIGHT && !keyRepeatDelay) {
if (current < total) {
current++;
} else {
current = 0;
}
}
if (hDown & KEY_SELECT) {
mode = 0;
}
}
void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) { void MainMenu::Logic(u32 hDown, u32 hHeld, touchPosition touch) {
if (hDown & KEY_START) { if (mode == 1) {
exiting = true; ProgressBarLogic(hDown, hHeld);
} } else {
if (hDown & KEY_SELECT) {
mode = 1;
}
if (hDown & KEY_UP) { if (hDown & KEY_START) {
if(Selection > 1) Selection -= 2; exiting = true;
} }
if (hDown & KEY_DOWN) { if (hDown & KEY_UP) {
if(Selection < 4) Selection += 2; if(Selection > 1) Selection -= 2;
} }
if (hDown & KEY_LEFT) { if (hDown & KEY_DOWN) {
if (Selection%2) Selection--; if(Selection < 4) Selection += 2;
} }
if (hDown & KEY_RIGHT) { if (hDown & KEY_LEFT) {
if (!(Selection%2)) Selection++; if (Selection%2) Selection--;
} }
if (hDown & KEY_A) { if (hDown & KEY_RIGHT) {
switch(Selection) { if (!(Selection%2)) Selection++;
case 0: }
if (hDown & KEY_A) {
switch(Selection) {
case 0:
Gui::setScreen(std::make_unique<ScriptList>());
break;
case 1:
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<ScriptBrowse>());
} else {
notConnectedMsg();
}
break;
case 2:
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<TinyDB>());
} else {
notConnectedMsg();
}
break;
case 3:
if (isTesting == true) {
Gui::setScreen(std::make_unique<ScriptCreator>());
}
break;
case 4:
Gui::setScreen(std::make_unique<Settings>());
break;
case 5:
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<FTPScreen>());
} else {
notConnectedMsg();
}
break;
}
}
if (hDown & KEY_X) {
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<FTPScreen>());
}
}
if (hDown & KEY_TOUCH) {
if (touching(touch, mainButtons[0])) {
Gui::setScreen(std::make_unique<ScriptList>()); Gui::setScreen(std::make_unique<ScriptList>());
break; } else if (touching(touch, mainButtons[1])) {
case 1:
if (checkWifiStatus() == true) { if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<ScriptBrowse>()); Gui::setScreen(std::make_unique<ScriptBrowse>());
} else { } else {
notConnectedMsg(); notConnectedMsg();
} }
break;
case 2: } else if (touching(touch, mainButtons[2])) {
if (checkWifiStatus() == true) { if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<TinyDB>()); Gui::setScreen(std::make_unique<TinyDB>());
} else { } else {
notConnectedMsg(); notConnectedMsg();
} }
break; } else if (touching(touch, mainButtons[3])) {
case 3:
if (isTesting == true) { if (isTesting == true) {
Gui::setScreen(std::make_unique<ScriptCreator>()); Gui::setScreen(std::make_unique<ScriptCreator>());
} }
break; } else if (touching(touch, mainButtons[4])) {
case 4:
Gui::setScreen(std::make_unique<Settings>()); Gui::setScreen(std::make_unique<Settings>());
break; } else if (touching(touch, mainButtons[5])) {
case 5:
if (checkWifiStatus() == true) { if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<FTPScreen>()); Gui::setScreen(std::make_unique<FTPScreen>());
} else { } else {
notConnectedMsg(); notConnectedMsg();
} }
break;
}
}
if (hDown & KEY_X) {
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<FTPScreen>());
}
}
if (hDown & KEY_TOUCH) {
if (touching(touch, mainButtons[0])) {
Gui::setScreen(std::make_unique<ScriptList>());
} else if (touching(touch, mainButtons[1])) {
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<ScriptBrowse>());
} else {
notConnectedMsg();
}
} else if (touching(touch, mainButtons[2])) {
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<TinyDB>());
} else {
notConnectedMsg();
}
} else if (touching(touch, mainButtons[3])) {
if (isTesting == true) {
Gui::setScreen(std::make_unique<ScriptCreator>());
}
} else if (touching(touch, mainButtons[4])) {
Gui::setScreen(std::make_unique<Settings>());
} else if (touching(touch, mainButtons[5])) {
if (checkWifiStatus() == true) {
Gui::setScreen(std::make_unique<FTPScreen>());
} else {
notConnectedMsg();
} }
} }
} }