fix list seeking, add autoload option
authornotaz <notasas@gmail.com>
Fri, 30 Aug 2013 21:49:52 +0000 (00:49 +0300)
committernotaz <notasas@gmail.com>
Fri, 30 Aug 2013 21:49:52 +0000 (00:49 +0300)
input.c
menu.c
menu.h

diff --git a/input.c b/input.c
index 362f3ce..8d2d552 100644 (file)
--- a/input.c
+++ b/input.c
@@ -428,6 +428,7 @@ finish:
 int in_menu_wait_any(char *charcode, int timeout_ms)
 {
        int keys_old = menu_key_state;
+       int ret;
 
        while (1)
        {
@@ -443,7 +444,9 @@ int in_menu_wait_any(char *charcode, int timeout_ms)
                }
        }
 
-       return menu_key_state;
+       ret = menu_key_state;
+       menu_key_state &= ~PBTN_CHAR;
+       return ret;
 }
 
 /* wait for menu input, do autorepeat */
diff --git a/menu.c b/menu.c
index 04c0410..eb728da 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -34,6 +34,8 @@ void *g_menubg_ptr;
 int g_menuscreen_w;\r
 int g_menuscreen_h;\r
 \r
+int g_autostateld_opt;\r
+\r
 static unsigned char *menu_font_data = NULL;\r
 static int menu_text_color = 0xfffe; // default to white\r
 static int menu_sel_color = -1; // disabled\r
@@ -896,10 +898,16 @@ static void draw_dirlist(char *curdir, struct dirent **namelist,
 \r
                snprintf(buff, sizeof(buff), "%s - select, %s - back",\r
                        in_get_key_name(-1, -PBTN_MOK), in_get_key_name(-1, -PBTN_MBACK));\r
-               smalltext_out16(x, g_menuscreen_h - me_sfont_h * 2 - 2, buff, 0xe78c);\r
+               smalltext_out16(x, g_menuscreen_h - me_sfont_h * 3 - 2, buff, 0xe78c);\r
+\r
                snprintf(buff, sizeof(buff), g_menu_filter_off ?\r
                         "%s - hide unknown files" : "%s - show all files",\r
                        in_get_key_name(-1, -PBTN_MA3));\r
+               smalltext_out16(x, g_menuscreen_h - me_sfont_h * 2 - 2, buff, 0xe78c);\r
+\r
+               snprintf(buff, sizeof(buff), g_autostateld_opt ?\r
+                        "%s - autoload save is ON" : "%s - autoload save is OFF",\r
+                       in_get_key_name(-1, -PBTN_MA2));\r
                smalltext_out16(x, g_menuscreen_h - me_sfont_h * 1 - 2, buff, 0xe78c);\r
        }\r
 \r
@@ -1049,19 +1057,19 @@ rescan:
                inp = in_menu_wait(PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT\r
                        | PBTN_L|PBTN_R|PBTN_MA2|PBTN_MA3|PBTN_MOK|PBTN_MBACK\r
                        | PBTN_MENU|PBTN_CHAR, &cinp, 33);\r
-               if (inp & PBTN_UP  )  { sel--;   if (sel < 0)   sel = n-2; }\r
-               if (inp & PBTN_DOWN)  { sel++;   if (sel > n-2) sel = 0; }\r
-               if (inp & PBTN_LEFT)  { sel-=10; if (sel < 0)   sel = 0; }\r
-               if (inp & PBTN_L)     { sel-=24; if (sel < 0)   sel = 0; }\r
-               if (inp & PBTN_RIGHT) { sel+=10; if (sel > n-2) sel = n-2; }\r
-               if (inp & PBTN_R)     { sel+=24; if (sel > n-2) sel = n-2; }\r
-               if (inp & PBTN_CHAR)  sel = dirent_seek_char(namelist, n, sel, cinp);\r
                if (inp & PBTN_MA3)   {\r
                        g_menu_filter_off = !g_menu_filter_off;\r
                        snprintf(sel_fname, sizeof(sel_fname), "%s",\r
                                namelist[sel+1]->d_name);\r
                        goto rescan;\r
                }\r
+               if (inp & PBTN_UP  )  { sel--;   if (sel < 0)   sel = n-2; }\r
+               if (inp & PBTN_DOWN)  { sel++;   if (sel > n-2) sel = 0; }\r
+               if (inp & PBTN_LEFT)  { sel-=10; if (sel < 0)   sel = 0; }\r
+               if (inp & PBTN_L)     { sel-=24; if (sel < 0)   sel = 0; }\r
+               if (inp & PBTN_RIGHT) { sel+=10; if (sel > n-2) sel = n-2; }\r
+               if (inp & PBTN_R)     { sel+=24; if (sel > n-2) sel = n-2; }\r
+\r
                if ((inp & PBTN_MOK) || (inp & (PBTN_MENU|PBTN_MA2)) == (PBTN_MENU|PBTN_MA2))\r
                {\r
                        again:\r
@@ -1121,6 +1129,15 @@ rescan:
                                }\r
                        }\r
                }\r
+               else if (inp & PBTN_MA2) {\r
+                       g_autostateld_opt = !g_autostateld_opt;\r
+                       show_help = 3;\r
+               }\r
+               else if (inp & PBTN_CHAR) {\r
+                       // must be last\r
+                       sel = dirent_seek_char(namelist, n, sel, cinp);\r
+               }\r
+\r
                if (inp & PBTN_MBACK)\r
                        break;\r
 \r
diff --git a/menu.h b/menu.h
index 531db6d..4dfe130 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -118,6 +118,8 @@ extern void *g_menuscreen_ptr;
 extern int g_menuscreen_w;
 extern int g_menuscreen_h;
 
+extern int g_autostateld_opt;
+
 void menu_init_base(void);
 void menu_update_msg(const char *msg);
 void text_out16(int x, int y, const char *texto, ...);