summaryrefslogtreecommitdiff
path: root/uisimulator
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator')
-rw-r--r--uisimulator/app.c3
-rw-r--r--uisimulator/tree.c55
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
28int dircursor=0;
24 29
25bool dirbrowse(char *root) 30bool 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}