mirror of
https://github.com/suchmememanyskill/TegraExplorer.git
synced 2024-11-26 13:52:06 +00:00
Add SD mounting/unmounting code + fix menu bugs
This commit is contained in:
parent
ff062a232b
commit
7b0faabf38
4 changed files with 46 additions and 29 deletions
|
@ -10,7 +10,7 @@ void clearscreen(){
|
||||||
gfx_printf("%k%KTegraexplorer%k%K\n", COLOR_DEFAULT, COLOR_WHITE, COLOR_WHITE, COLOR_DEFAULT);
|
gfx_printf("%k%KTegraexplorer%k%K\n", COLOR_DEFAULT, COLOR_WHITE, COLOR_WHITE, COLOR_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void message(char* message, u32 color){
|
int message(char* message, u32 color){
|
||||||
clearscreen();
|
clearscreen();
|
||||||
gfx_printf("%k%s%k", color, message, COLOR_DEFAULT);
|
gfx_printf("%k%s%k", color, message, COLOR_DEFAULT);
|
||||||
return btn_wait();
|
return btn_wait();
|
||||||
|
@ -22,11 +22,19 @@ int makemenu(menu_item menu[], int menuamount){
|
||||||
|
|
||||||
while (1){
|
while (1){
|
||||||
gfx_con_setpos(0, 31);
|
gfx_con_setpos(0, 31);
|
||||||
|
|
||||||
|
if (currentpos == 1){
|
||||||
|
while (currentpos < menuamount && menu[currentpos - 1].property < 0)
|
||||||
|
currentpos++;
|
||||||
|
}
|
||||||
|
if (currentpos == menuamount){
|
||||||
|
while (currentpos > 1 && menu[currentpos - 1].property < 0)
|
||||||
|
currentpos--;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < menuamount; i++){
|
for (i = 0; i < menuamount; i++){
|
||||||
if (menu[i].property < 0) {
|
if (menu[i].property < 0)
|
||||||
i--;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
if (i == currentpos - 1)
|
if (i == currentpos - 1)
|
||||||
gfx_printf("%k%K%s%K\n", COLOR_DEFAULT, COLOR_WHITE, menu[i].name, COLOR_DEFAULT);
|
gfx_printf("%k%K%s%K\n", COLOR_DEFAULT, COLOR_WHITE, menu[i].name, COLOR_DEFAULT);
|
||||||
else
|
else
|
||||||
|
@ -36,16 +44,19 @@ int makemenu(menu_item menu[], int menuamount){
|
||||||
|
|
||||||
res = btn_wait();
|
res = btn_wait();
|
||||||
|
|
||||||
if (res & BTN_VOL_UP)
|
if (res & BTN_VOL_UP && currentpos > 1){
|
||||||
currentpos--;
|
currentpos--;
|
||||||
else if (res & BTN_VOL_DOWN)
|
while(menu[currentpos - 1].property < 0 && currentpos > 1)
|
||||||
|
currentpos--;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (res & BTN_VOL_DOWN && currentpos < menuamount){
|
||||||
currentpos++;
|
currentpos++;
|
||||||
|
while(menu[currentpos - 1].property < 0 && currentpos < menuamount)
|
||||||
|
currentpos++;
|
||||||
|
}
|
||||||
|
|
||||||
else if (res & BTN_POWER)
|
else if (res & BTN_POWER)
|
||||||
return menu[currentpos - 1].internal_function;
|
return menu[currentpos - 1].internal_function;
|
||||||
|
|
||||||
if (currentpos > menuamount)
|
|
||||||
currentpos = menuamount;
|
|
||||||
else if (currentpos < 1)
|
|
||||||
currentpos = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
int makemenu(menu_item menu[], int menuamount);
|
int makemenu(menu_item menu[], int menuamount);
|
||||||
void message(char* message, u32 color);
|
int message(char* message, u32 color);
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
extern bool sd_mount();
|
extern bool sd_mount();
|
||||||
extern void sd_unmount();
|
extern void sd_unmount();
|
||||||
|
bool sd_mounted = false;
|
||||||
|
|
||||||
menu_item mainmenu[MAINMENU_AMOUNT] = {
|
menu_item mainmenu[MAINMENU_AMOUNT] = {
|
||||||
{"[SD:/] SD CARD", COLOR_GREEN, 1, 0},
|
{"[SD:/] SD CARD", COLOR_GREEN, 1, 0},
|
||||||
|
@ -23,32 +24,26 @@ menu_item shutdownmenu[4] = {
|
||||||
{"Back", COLOR_WHITE, 4, 0}
|
{"Back", COLOR_WHITE, 4, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
int calcmenuitems(){
|
|
||||||
int amount = 0, i;
|
|
||||||
|
|
||||||
for (i = 0; i < MAINMENU_AMOUNT; i++)
|
|
||||||
if (mainmenu[i].property >= 0)
|
|
||||||
amount++;
|
|
||||||
|
|
||||||
return amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fillmainmenu(){
|
void fillmainmenu(){
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < MAINMENU_AMOUNT; i++){
|
for (i = 0; i < MAINMENU_AMOUNT; i++){
|
||||||
switch (i + 1) {
|
switch (i + 1) {
|
||||||
case 1:
|
case 1:
|
||||||
if (sd_mount)
|
if (sd_mounted)
|
||||||
mainmenu[i].property = 1;
|
mainmenu[i].property = 1;
|
||||||
else
|
else
|
||||||
mainmenu[i].property = -1;
|
mainmenu[i].property = -1;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (sd_mount)
|
if (sd_mounted){
|
||||||
mainmenu[i].property = 1;
|
mainmenu[i].property = 1;
|
||||||
else
|
strcpy(mainmenu[i].name, "Unmount SD");
|
||||||
mainmenu[i].property = -1;
|
}
|
||||||
|
else {
|
||||||
|
mainmenu[i].property = 0;
|
||||||
|
strcpy(mainmenu[i].name, "Mount SD");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,12 +52,23 @@ void fillmainmenu(){
|
||||||
void te_main(){
|
void te_main(){
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
sd_mounted = sd_mount();
|
||||||
|
|
||||||
while (1){
|
while (1){
|
||||||
fillmainmenu();
|
fillmainmenu();
|
||||||
res = makemenu(mainmenu, calcmenuitems());
|
res = makemenu(mainmenu, MAINMENU_AMOUNT);
|
||||||
|
|
||||||
|
if (res == 3){
|
||||||
|
if (sd_mounted){
|
||||||
|
sd_mounted = false;
|
||||||
|
sd_unmount();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sd_mounted = sd_mount();
|
||||||
|
}
|
||||||
|
|
||||||
if (res == 5)
|
if (res == 5)
|
||||||
message(CREDITS_MESSAGE, COLOR_GREEN);
|
message(CREDITS_MESSAGE, COLOR_WHITE);
|
||||||
|
|
||||||
if (res == 6){
|
if (res == 6){
|
||||||
res = makemenu(shutdownmenu, 4);
|
res = makemenu(shutdownmenu, 4);
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "../utils/types.h"
|
#include "../utils/types.h"
|
||||||
|
|
||||||
#define MAINMENU_AMOUNT 6
|
#define MAINMENU_AMOUNT 6
|
||||||
#define CREDITS_MESSAGE "Tegraexplorer, made by:\nSuch Meme, Many Skill\n\nProject based on:\nLockpick_RCM\nHekate\n\nCool people:\nshchmue\ndennthecafebabe\nDax"
|
#define CREDITS_MESSAGE "\nTegraexplorer, made by:\nSuch Meme, Many Skill\n\nProject based on:\nLockpick_RCM\nHekate\n\nCool people:\nshchmue\ndennthecafebabe\nDax"
|
||||||
|
|
||||||
typedef struct _menu_item {
|
typedef struct _menu_item {
|
||||||
char name[50];
|
char name[50];
|
||||||
|
|
Loading…
Reference in a new issue