v3.1.8: Logs - Schiebepad für Zeilen, Steuerkreuz für Quellen, Hochblättern sprang nicht mehr zurück
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e9a7bfb712
commit
9ac6167953
+23
-11
@@ -340,7 +340,10 @@ bool logview_finish(void)
|
||||
|
||||
// --- Eingaben --------------------------------------------------------------------------
|
||||
|
||||
static void select_source(int sel)
|
||||
static u64 srcPendingAt; // Quelle mit dem Steuerkreuz gewechselt: kurz warten, dann laden (nicht bei jedem Schritt)
|
||||
|
||||
// Quelle wählen. now = sofort laden (L/R, Antippen), sonst nach einer kurzen Pause (Steuerkreuz)
|
||||
static void select_source(int sel, bool now)
|
||||
{
|
||||
if (sel < 0) sel = sourceCount;
|
||||
if (sel > sourceCount) sel = 0;
|
||||
@@ -349,7 +352,8 @@ static void select_source(int sel)
|
||||
if (srcSel < srcTop) srcTop = srcSel;
|
||||
if (srcSel >= srcTop + SRC_ROWS) srcTop = srcSel - SRC_ROWS + 1;
|
||||
following = true;
|
||||
start_job(JOB_RELOAD);
|
||||
if (now) { srcPendingAt = 0; start_job(JOB_RELOAD); }
|
||||
else srcPendingAt = osGetTime();
|
||||
}
|
||||
|
||||
static bool ask_password(void)
|
||||
@@ -391,25 +395,33 @@ bool logview_update(u32 down, u32 repeat, u32 held)
|
||||
if (down & KEY_A) detail = !detail && lineCount > 0;
|
||||
if (down & KEY_X || (down & KEY_TOUCH && in(btnFilter, tp))) { errorsOnly = !errorsOnly; following = true; start_job(JOB_RELOAD); }
|
||||
if (down & KEY_Y || (down & KEY_TOUCH && in(btnReload, tp))) { following = true; start_job(JOB_RELOAD); }
|
||||
if (down & KEY_R) select_source(srcSel + 1);
|
||||
if (down & KEY_L) select_source(srcSel - 1);
|
||||
if (down & KEY_R) select_source(srcSel + 1, true);
|
||||
if (down & KEY_L) select_source(srcSel - 1, true);
|
||||
// Steuerkreuz (unten): Quellen auf dem unteren Bildschirm
|
||||
if (repeat & KEY_DDOWN) select_source(srcSel + 1, false);
|
||||
if (repeat & KEY_DUP) select_source(srcSel - 1, false);
|
||||
if (srcPendingAt && osGetTime() - srcPendingAt > 400 && !busy && job == JOB_NONE) { srcPendingAt = 0; start_job(JOB_RELOAD); }
|
||||
if (down & KEY_TOUCH && tp.py >= 24 && tp.py < 24 + SRC_ROWS * SRC_ROW_H) {
|
||||
int row = srcTop + (tp.py - 24) / SRC_ROW_H;
|
||||
if (row <= sourceCount) select_source(row);
|
||||
if (row <= sourceCount) select_source(row, true);
|
||||
}
|
||||
|
||||
LightLock_Lock(&lock);
|
||||
int count = lineCount;
|
||||
// Schiebepad (oben): Zeilen auf dem oberen Bildschirm, links/rechts seitenweise
|
||||
bool moved = false;
|
||||
if (!detail) {
|
||||
if (repeat & (KEY_UP | KEY_CPAD_UP)) {
|
||||
if (repeat & KEY_CPAD_UP) {
|
||||
moved = true;
|
||||
if (cursor > 0) cursor--;
|
||||
else if (count && state == LV_READY) start_job(JOB_OLDER); // ganz oben: ältere nachladen
|
||||
}
|
||||
if (repeat & (KEY_DOWN | KEY_CPAD_DOWN)) cursor++;
|
||||
if (repeat & KEY_LEFT) cursor -= ROWS;
|
||||
if (repeat & KEY_RIGHT) cursor += ROWS;
|
||||
if (repeat & KEY_CPAD_DOWN) { cursor++; moved = true; }
|
||||
if (repeat & KEY_CPAD_LEFT) { cursor -= ROWS; moved = true; }
|
||||
if (repeat & KEY_CPAD_RIGHT) { cursor += ROWS; moved = true; }
|
||||
}
|
||||
if (following) cursor = count - 1;
|
||||
// Live mitlaufen nur, solange man nicht selbst blättert (sonst sprang es sofort wieder nach unten)
|
||||
if (following && !moved) cursor = count - 1;
|
||||
if (cursor >= count) cursor = count - 1;
|
||||
if (cursor < 0) cursor = 0;
|
||||
following = count == 0 || cursor == count - 1;
|
||||
@@ -486,7 +498,7 @@ void logview_draw_bottom(void)
|
||||
C2D_DrawRectSolid(0, 0, 0, BOT_W, SCR_H, COL_BG);
|
||||
C2D_DrawRectSolid(0, 0, 0.5f, BOT_W, 22, COL_BG2);
|
||||
ui_text("Quellen", 6, 3, 0.45f, COL_WHITE, 0);
|
||||
ui_text("L/R wechseln · A Details · X Fehler", BOT_W - 6, 5, 0.34f, COL_MUTED, C2D_AlignRight);
|
||||
ui_text("Steuerkreuz/L/R wechseln · A Details", BOT_W - 6, 5, 0.34f, COL_MUTED, C2D_AlignRight);
|
||||
char line[96];
|
||||
LightLock_Lock(&lock);
|
||||
for (int r = 0; r < SRC_ROWS && srcTop + r <= sourceCount; r++) {
|
||||
|
||||
@@ -638,6 +638,7 @@ int main(int argc, char **argv)
|
||||
C3D_RenderTarget *top = C2D_CreateScreenTarget(GFX_TOP, GFX_LEFT);
|
||||
C3D_RenderTarget *bot = C2D_CreateScreenTarget(GFX_BOTTOM, GFX_LEFT);
|
||||
textBuf = C2D_TextBufNew(8192); // Logs brauchen mehr Platz
|
||||
hidSetRepeatParameters(18, 4); // gedrückt halten: nach 0,3 s alle 4 Bilder ein Schritt (Logs blättern)
|
||||
measureBuf = C2D_TextBufNew(1024);
|
||||
nnid_init();
|
||||
frdswitch_init();
|
||||
|
||||
Reference in New Issue
Block a user