Просмотр исходного кода

use left and right buttons on some menu options

Cathy Nguyen 3 лет назад
Родитель
Сommit
0b508b74ef
1 измененных файлов с 69 добавлено и 13 удалено
  1. 69 13
      tama_p1.c

+ 69 - 13
tama_p1.c

@@ -12,8 +12,13 @@ TamaApp* g_ctx;
 FuriMutex* g_state_mutex;
 FuriMutex* g_state_mutex;
 bool portrait_mode = false;
 bool portrait_mode = false;
 bool in_menu = false;
 bool in_menu = false;
+
 int speed = 1;
 int speed = 1;
+const int speed_options[] = {1, 2, 4};
+const int min_speed = 1;
 const int max_speed = 4;
 const int max_speed = 4;
+const int speed_options_size = 3;
+// = sizeof(speed_options) / sizeof(speed_options[0]);
 
 
 int menu_cursor = 0;
 int menu_cursor = 0;
 const int menu_items = 4;
 const int menu_items = 4;
@@ -170,7 +175,7 @@ static void draw_menu_landscape(Canvas* const canvas) {
         canvas_draw_triangle(canvas, 4, 35, 6, 6, CanvasDirectionLeftToRight);
         canvas_draw_triangle(canvas, 4, 35, 6, 6, CanvasDirectionLeftToRight);
         break;
         break;
     case menu_items - 1:
     case menu_items - 1:
-        canvas_draw_triangle(canvas, 4, 45, 6, 6, CanvasDirectionLeftToRight);
+        canvas_draw_triangle(canvas, 4, 55, 6, 6, CanvasDirectionLeftToRight);
         break;
         break;
     }
     }
     canvas_draw_str(canvas, 12, 20, "A+C (mute/change time)");
     canvas_draw_str(canvas, 12, 20, "A+C (mute/change time)");
@@ -179,7 +184,7 @@ static void draw_menu_landscape(Canvas* const canvas) {
     } else {
     } else {
         canvas_draw_str(canvas, 12, 30, "Orientation: Landscape");
         canvas_draw_str(canvas, 12, 30, "Orientation: Landscape");
     }
     }
-    switch(speed) {
+    switch(speed) { // match with speed_options
     case 0: // freeze menu too
     case 0: // freeze menu too
         canvas_draw_str(canvas, 12, 40, "Speed: 0x");
         canvas_draw_str(canvas, 12, 40, "Speed: 0x");
         break;
         break;
@@ -192,15 +197,51 @@ static void draw_menu_landscape(Canvas* const canvas) {
     case 3:
     case 3:
         canvas_draw_str(canvas, 12, 40, "Speed: 3x");
         canvas_draw_str(canvas, 12, 40, "Speed: 3x");
         break;
         break;
-    case max_speed:
+    case 4:
         canvas_draw_str(canvas, 12, 40, "Speed: 4x (max)");
         canvas_draw_str(canvas, 12, 40, "Speed: 4x (max)");
         break;
         break;
+    // case 8: // can't handle 8x
+    //     canvas_draw_str(canvas, 12, 40, "Speed: 8x (max)");
+    //     break;
     default:
     default:
-        canvas_draw_str(canvas, 12, 40, "Speed ?x");
+        canvas_draw_str(canvas, 12, 40, "Speed ??x");
         break;
         break;
     }
     }
 
 
-    canvas_draw_str(canvas, 12, 50, "Close menu");
+    canvas_draw_str(canvas, 12, 60, "Close menu");
+}
+
+static void speed_up() {
+    switch(speed) {
+    case max_speed:
+        speed = speed_options[0];
+        break;
+    default:
+        for(int i = 0; i < speed_options_size - 1; i++) {
+            if(speed == speed_options[i]) {
+                speed = speed_options[i + 1];
+                break;
+            }
+        }
+        break;
+    }
+    tamalib_set_speed(speed);
+}
+static void speed_down() {
+    switch(speed) {
+    case min_speed:
+        speed = speed_options[speed_options_size - 1];
+        break;
+    default:
+        for(int i = speed_options_size - 1; i > 0; i--) {
+            if(speed == speed_options[i]) {
+                speed = speed_options[i - 1];
+                break;
+            }
+        }
+        break;
+    }
+    tamalib_set_speed(speed);
 }
 }
 
 
 static void tama_p1_draw_callback(Canvas* const canvas, void* cb_ctx) {
 static void tama_p1_draw_callback(Canvas* const canvas, void* cb_ctx) {
@@ -623,6 +664,28 @@ int32_t tama_p1_app(void* p) {
                         } else {
                         } else {
                             menu_cursor = 0;
                             menu_cursor = 0;
                         }
                         }
+                    } else if(event.input.key == InputKeyLeft && event.input.type == InputTypePress) {
+                        switch(menu_cursor) {
+                        case 1:
+                            portrait_mode = !portrait_mode;
+                            break;
+                        case 2:
+                            speed_down();
+                            break;
+                        default:
+                            break;
+                        }
+                    } else if(event.input.key == InputKeyRight && event.input.type == InputTypePress) {
+                        switch(menu_cursor) {
+                        case 1:
+                            portrait_mode = !portrait_mode;
+                            break;
+                        case 2:
+                            speed_up();
+                            break;
+                        default:
+                            break;
+                        }
                     } else if(event.input.key == InputKeyOk) {
                     } else if(event.input.key == InputKeyOk) {
                         switch(menu_cursor) {
                         switch(menu_cursor) {
                         case 0:
                         case 0:
@@ -636,14 +699,7 @@ int32_t tama_p1_app(void* p) {
                             break;
                             break;
                         case 2:
                         case 2:
                             if(event.input.type == InputTypePress) {
                             if(event.input.type == InputTypePress) {
-                                if(speed == 2) { // skip 3x
-                                    speed = 4;
-                                } else if(speed < max_speed) {
-                                    speed++;
-                                } else {
-                                    speed = 1;
-                                }
-                                tamalib_set_speed(speed);
+                                speed_up();
                             }
                             }
                             break;
                             break;
                         case menu_items - 1:
                         case menu_items - 1: