mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Improved marking behaviour
This commit is contained in:
parent
087eed8592
commit
264c354c11
@ -103,6 +103,7 @@ u32 GodMode() {
|
|||||||
static DirStruct* clipboard = (DirStruct*)0x21080000;
|
static DirStruct* clipboard = (DirStruct*)0x21080000;
|
||||||
char current_path[256] = { 0x00 };
|
char current_path[256] = { 0x00 };
|
||||||
|
|
||||||
|
int mark_setting = -1;
|
||||||
u32 cursor = 0;
|
u32 cursor = 0;
|
||||||
|
|
||||||
ClearScreenF(true, true, COLOR_BLACK);
|
ClearScreenF(true, true, COLOR_BLACK);
|
||||||
@ -114,35 +115,47 @@ u32 GodMode() {
|
|||||||
DrawUserInterface(current_path, ¤t_dir->entry[cursor]); // no need to fully do this everytime!
|
DrawUserInterface(current_path, ¤t_dir->entry[cursor]); // no need to fully do this everytime!
|
||||||
DrawDirContents(current_dir, cursor);
|
DrawDirContents(current_dir, cursor);
|
||||||
u32 pad_state = InputWait();
|
u32 pad_state = InputWait();
|
||||||
if (pad_state & BUTTON_DOWN) {
|
if (pad_state & BUTTON_DOWN) { // cursor up
|
||||||
cursor++;
|
cursor++;
|
||||||
if (cursor >= current_dir->n_entries)
|
if (cursor >= current_dir->n_entries)
|
||||||
cursor = current_dir->n_entries - 1;
|
cursor = current_dir->n_entries - 1;
|
||||||
} else if ((pad_state & BUTTON_UP) && cursor) {
|
} else if ((pad_state & BUTTON_UP) && cursor) { // cursor down
|
||||||
cursor--;
|
cursor--;
|
||||||
} else if (pad_state & BUTTON_RIGHT) {
|
} else if ((pad_state & BUTTON_RIGHT) && (mark_setting < 0)) { // cursor down (quick)
|
||||||
cursor += quick_stp;
|
cursor += quick_stp;
|
||||||
if (cursor >= current_dir->n_entries)
|
if (cursor >= current_dir->n_entries)
|
||||||
cursor = current_dir->n_entries - 1;
|
cursor = current_dir->n_entries - 1;
|
||||||
} else if (pad_state & BUTTON_LEFT) {
|
} else if ((pad_state & BUTTON_LEFT) && (mark_setting < 0)) { // curor up (quick)
|
||||||
cursor = (cursor >= quick_stp) ? cursor - quick_stp : 0;
|
cursor = (cursor >= quick_stp) ? cursor - quick_stp : 0;
|
||||||
} else if ((pad_state & BUTTON_L1) && *current_path) {
|
} else if (pad_state & BUTTON_RIGHT) { // mark all entries
|
||||||
|
for (u32 c = 0; c < current_dir->n_entries; c++) current_dir->entry[c].marked = 1;
|
||||||
|
} else if (pad_state & BUTTON_LEFT) { // unmark all entries
|
||||||
|
for (u32 c = 0; c < current_dir->n_entries; c++) current_dir->entry[c].marked = 0;
|
||||||
|
} else if ((pad_state & BUTTON_L1) && *current_path) { // switch marking for single entry
|
||||||
|
if (mark_setting >= 0) {
|
||||||
|
current_dir->entry[cursor].marked = mark_setting;
|
||||||
|
} else {
|
||||||
current_dir->entry[cursor].marked ^= 0x1;
|
current_dir->entry[cursor].marked ^= 0x1;
|
||||||
} else if ((pad_state & BUTTON_A) && (current_dir->entry[cursor].type != T_FAT_FILE)) {
|
mark_setting = current_dir->entry[cursor].marked;
|
||||||
|
}
|
||||||
|
} else if ((pad_state & BUTTON_A) && (current_dir->entry[cursor].type != T_FAT_FILE)) { // one level up
|
||||||
strncpy(current_path, current_dir->entry[cursor].path, 256);
|
strncpy(current_path, current_dir->entry[cursor].path, 256);
|
||||||
GetDirContents(current_dir, current_path);
|
GetDirContents(current_dir, current_path);
|
||||||
cursor = 0;
|
cursor = 0;
|
||||||
ClearScreenF(true, true, COLOR_STD_BG); // not really required
|
ClearScreenF(true, true, COLOR_STD_BG); // not really required
|
||||||
} else if (pad_state & BUTTON_B) {
|
} else if (pad_state & BUTTON_B) { // one level down
|
||||||
char* last_slash = strrchr(current_path, '/');
|
char* last_slash = strrchr(current_path, '/');
|
||||||
if (last_slash) *last_slash = '\0';
|
if (last_slash) *last_slash = '\0';
|
||||||
else *current_path = '\0';
|
else *current_path = '\0';
|
||||||
GetDirContents(current_dir, current_path);
|
GetDirContents(current_dir, current_path);
|
||||||
cursor = 0;
|
cursor = 0;
|
||||||
ClearScreenF(true, true, COLOR_STD_BG); // not really required
|
ClearScreenF(true, true, COLOR_STD_BG); // not really required
|
||||||
} else if (pad_state & BUTTON_X) {
|
} else if (pad_state & BUTTON_X) { // create a screenshot
|
||||||
CreateScreenshot();
|
CreateScreenshot();
|
||||||
}
|
}
|
||||||
|
if (!(pad_state & BUTTON_L1)) {
|
||||||
|
mark_setting = -1;
|
||||||
|
}
|
||||||
if (pad_state & BUTTON_START) {
|
if (pad_state & BUTTON_START) {
|
||||||
exit_mode = (pad_state & BUTTON_LEFT) ? GODMODE_EXIT_POWEROFF : GODMODE_EXIT_REBOOT;
|
exit_mode = (pad_state & BUTTON_LEFT) ? GODMODE_EXIT_POWEROFF : GODMODE_EXIT_REBOOT;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user