diff options
Diffstat (limited to 'uisimulator')
-rw-r--r-- | uisimulator/app.c | 3 | ||||
-rw-r--r-- | uisimulator/tree.c | 55 |
2 files changed, 50 insertions, 8 deletions
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) | |||
88 | menu_init(); | 88 | menu_init(); |
89 | break; | 89 | break; |
90 | case (LINE_BROWSE * LINE_HEIGHT): | 90 | case (LINE_BROWSE * LINE_HEIGHT): |
91 | lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); | ||
92 | dirbrowse("/"); | 91 | dirbrowse("/"); |
93 | lcd_update(); | ||
94 | while((!button_get())); | ||
95 | lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); | 92 | lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); |
96 | menu_init(); | 93 | menu_init(); |
97 | break; | 94 | 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 @@ | |||
19 | 19 | ||
20 | #include <dir.h> | 20 | #include <dir.h> |
21 | #include <types.h> | 21 | #include <types.h> |
22 | #include <lcd.h> | ||
23 | #include <button.h> | ||
22 | 24 | ||
23 | #define TREE_MAX_LEN 15 | 25 | #define TREE_MAX_LEN 15 |
26 | #define TREE_MAX_ON_SCREEN 7 | ||
27 | |||
28 | int dircursor=0; | ||
24 | 29 | ||
25 | bool dirbrowse(char *root) | 30 | bool dirbrowse(char *root) |
26 | { | 31 | { |
27 | DIR *dir = opendir(root); | 32 | DIR *dir = opendir(root); |
28 | int i; | 33 | int i; |
29 | struct dirent *entry; | 34 | struct dirent *entry; |
30 | char buffer[20]; | 35 | char buffer[TREE_MAX_ON_SCREEN][20]; |
31 | 36 | ||
32 | if(!dir) | 37 | if(!dir) |
33 | return TRUE; /* failure */ | 38 | return TRUE; /* failure */ |
34 | 39 | ||
40 | lcd_clearrect(0, 0, LCD_WIDTH, LCD_HEIGHT); | ||
41 | |||
42 | lcd_puts(0,0, "[Browse]", 0); | ||
43 | |||
35 | i=0; | 44 | i=0; |
36 | while((entry = readdir(dir))) { | 45 | while((entry = readdir(dir))) { |
37 | strncpy(buffer, entry->d_name, TREE_MAX_LEN); | 46 | strncpy(buffer[i], entry->d_name, TREE_MAX_LEN); |
38 | buffer[TREE_MAX_LEN]=0; | 47 | buffer[i][TREE_MAX_LEN]=0; |
39 | lcd_puts(0, i*8, buffer, 0); | 48 | lcd_puts(6, 8+i*8, buffer[i], 0); |
40 | 49 | ||
41 | if(++i > 8) | 50 | if(++i > TREE_MAX_ON_SCREEN) |
42 | break; | 51 | break; |
43 | } | 52 | } |
44 | 53 | ||
45 | closedir(dir); | 54 | closedir(dir); |
46 | 55 | ||
56 | lcd_puts(0, 8+dircursor, "-", 0); | ||
57 | |||
58 | lcd_update(); | ||
59 | |||
60 | while(1) { | ||
61 | int key = button_get(); | ||
62 | |||
63 | if(!key) { | ||
64 | sleep(1); | ||
65 | continue; | ||
66 | } | ||
67 | switch(key) { | ||
68 | case BUTTON_OFF: | ||
69 | case BUTTON_LEFT: | ||
70 | return FALSE; | ||
71 | break; | ||
72 | |||
73 | case BUTTON_UP: | ||
74 | if(dircursor) { | ||
75 | lcd_puts(0, 8+dircursor, " ", 0); | ||
76 | dircursor -= 8; | ||
77 | lcd_puts(0, 8+dircursor, "-", 0); | ||
78 | lcd_update(); | ||
79 | } | ||
80 | break; | ||
81 | case BUTTON_DOWN: | ||
82 | if(dircursor < (8 * TREE_MAX_ON_SCREEN)) { | ||
83 | lcd_puts(0, 8+dircursor, " ", 0); | ||
84 | dircursor += 8; | ||
85 | lcd_puts(0, 8+dircursor, "-", 0); | ||
86 | lcd_update(); | ||
87 | } | ||
88 | break; | ||
89 | } | ||
90 | } | ||
91 | |||
47 | return FALSE; | 92 | return FALSE; |
48 | } | 93 | } |