From 25ca8f2a56a8e22268f2e022eb3a00dcbaf7a327 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 30 Apr 2002 13:37:28 +0000 Subject: expanded the browser with a little cursor to move git-svn-id: svn://svn.rockbox.org/rockbox/trunk@331 a1c6a512-1295-4272-9138-f99709370657 --- uisimulator/app.c | 3 --- uisimulator/tree.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 8 deletions(-) (limited to 'uisimulator') diff --git a/uisimulator/app.c b/uisimulator/app.c index bb0c831729..a263810c7e 100644 --- a/uisimulator/app.c +++ b/uisimulator/app.c @@ -88,10 +88,7 @@ void app_main(void) menu_init(); break; case (LINE_BROWSE * LINE_HEIGHT): - lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); dirbrowse("/"); - lcd_update(); - while((!button_get())); lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); menu_init(); break; diff --git a/uisimulator/tree.c b/uisimulator/tree.c index f9d2af4439..4cd5f2a209 100644 --- a/uisimulator/tree.c +++ b/uisimulator/tree.c @@ -19,30 +19,75 @@ #include #include +#include +#include #define TREE_MAX_LEN 15 +#define TREE_MAX_ON_SCREEN 7 + +int dircursor=0; bool dirbrowse(char *root) { DIR *dir = opendir(root); int i; struct dirent *entry; - char buffer[20]; + char buffer[TREE_MAX_ON_SCREEN][20]; if(!dir) return TRUE; /* failure */ + lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); + + lcd_puts(0,0, "[Browse]", 0); + i=0; while((entry = readdir(dir))) { - strncpy(buffer, entry->d_name, TREE_MAX_LEN); - buffer[TREE_MAX_LEN]=0; - lcd_puts(0, i*8, buffer, 0); + strncpy(buffer[i], entry->d_name, TREE_MAX_LEN); + buffer[i][TREE_MAX_LEN]=0; + lcd_puts(6, 8+i*8, buffer[i], 0); - if(++i > 8) + if(++i > TREE_MAX_ON_SCREEN) break; } closedir(dir); + lcd_puts(0, 8+dircursor, "-", 0); + + lcd_update(); + + while(1) { + int key = button_get(); + + if(!key) { + sleep(1); + continue; + } + switch(key) { + case BUTTON_OFF: + case BUTTON_LEFT: + return FALSE; + break; + + case BUTTON_UP: + if(dircursor) { + lcd_puts(0, 8+dircursor, " ", 0); + dircursor -= 8; + lcd_puts(0, 8+dircursor, "-", 0); + lcd_update(); + } + break; + case BUTTON_DOWN: + if(dircursor < (8 * TREE_MAX_ON_SCREEN)) { + lcd_puts(0, 8+dircursor, " ", 0); + dircursor += 8; + lcd_puts(0, 8+dircursor, "-", 0); + lcd_update(); + } + break; + } + } + return FALSE; } -- cgit v1.2.3