Procházet zdrojové kódy

add "Save & Exit" to menu

Cathy Nguyen před 3 roky
rodič
revize
9542f6464e
1 změnil soubory, kde provedl 40 přidání a 13 odebrání
  1. 40 13
      tama_p1.c

+ 40 - 13
tama_p1.c

@@ -20,8 +20,9 @@ const int max_speed = 4;
 const int speed_options_size = 3;
 // = sizeof(speed_options) / sizeof(speed_options[0]);
 
-int menu_cursor = 0; // 1: A+C; 2: layout mode; 3: speed
-const int menu_items = 4;
+int menu_cursor = 0; // 0: A+C; 1: layout mode; 2: speed
+const int menu_items = 4; // 3: Close menu, Save & Exit
+bool menu_cursor3 = true;
 
 static const Icon* icons_list[] = {
     &I_icon_0,
@@ -162,11 +163,11 @@ static void draw_portrait_left(Canvas* const canvas) {
     // FURI_LOG_D(TAG, "Drawing frame");
     // Calculate positioning
     // uint16_t canv_width = canvas_width(canvas);
-    uint16_t canv_height = canvas_height(canvas);
+    // uint16_t canv_height = canvas_height(canvas);
     uint16_t lcd_matrix_scaled_width = 32 * TAMA_SCREEN_SCALE_FACTOR;
-    uint16_t lcd_matrix_scaled_height = 16 * TAMA_SCREEN_SCALE_FACTOR;
+    // uint16_t lcd_matrix_scaled_height = 16 * TAMA_SCREEN_SCALE_FACTOR;
     // uint16_t lcd_matrix_top = 0;
-    uint16_t lcd_matrix_top = (canv_height - lcd_matrix_scaled_height) / 2;
+    // uint16_t lcd_matrix_top = (canv_height - lcd_matrix_scaled_height) / 2;
     // uint16_t lcd_matrix_left = (canv_width - lcd_matrix_scaled_width) / 2;
     uint16_t lcd_matrix_left = 0;
     uint16_t lcd_icon_upper_left = lcd_matrix_left;
@@ -221,22 +222,28 @@ static void draw_portrait_left(Canvas* const canvas) {
 
 // static void draw_menu_portrait(Canvas* const canvas, void* cb_ctx) {}
 
-static void draw_menu_landscape(Canvas* const canvas) {
+// static void draw_menu_landscape(Canvas* const canvas)
+
+static void draw_menu(Canvas* const canvas) {
     canvas_draw_frame(canvas, 0, 0, 128, 64);
     canvas_draw_str_aligned(canvas, 64, 6, AlignCenter, AlignCenter, "Menu");
     canvas_draw_line(canvas, 0, 10, 128, 10);
     switch(menu_cursor) {
     case 0:
-        canvas_draw_triangle(canvas, 4, 15, 6, 6, CanvasDirectionLeftToRight);
+        canvas_draw_triangle(canvas, 4, 16, 6, 6, CanvasDirectionLeftToRight);
         break;
     case 1:
-        canvas_draw_triangle(canvas, 4, 25, 6, 6, CanvasDirectionLeftToRight);
+        canvas_draw_triangle(canvas, 4, 26, 6, 6, CanvasDirectionLeftToRight);
         break;
     case 2:
-        canvas_draw_triangle(canvas, 4, 35, 6, 6, CanvasDirectionLeftToRight);
+        canvas_draw_triangle(canvas, 4, 36, 6, 6, CanvasDirectionLeftToRight);
         break;
     case menu_items - 1:
-        canvas_draw_triangle(canvas, 4, 55, 6, 6, CanvasDirectionLeftToRight);
+        if(menu_cursor3) {
+            canvas_draw_triangle(canvas, 4, 56, 6, 6, CanvasDirectionLeftToRight);
+        } else {
+            canvas_draw_triangle(canvas, 65, 56, 6, 6, CanvasDirectionLeftToRight);
+        }
         break;
     }
     canvas_draw_str(canvas, 12, 20, "A+C (mute/change time)");
@@ -277,8 +284,8 @@ static void draw_menu_landscape(Canvas* const canvas) {
         canvas_draw_str(canvas, 12, 40, "Speed ??x");
         break;
     }
-
     canvas_draw_str(canvas, 12, 60, "Close menu");
+    canvas_draw_str(canvas, 75, 60, "Save & Exit");
 }
 
 static void speed_up() {
@@ -329,7 +336,8 @@ static void tama_p1_draw_callback(Canvas* const canvas, void* cb_ctx) {
     } else {
         if(in_menu) {
             // switch(layout_mode)
-            draw_menu_landscape(canvas);
+            // draw_menu_landscape(canvas);
+            draw_menu(canvas);
         } else {
             switch(layout_mode) {
             case 0:
@@ -757,6 +765,9 @@ int32_t tama_p1_app(void* p) {
                         case 2:
                             speed_down();
                             break;
+                        case menu_items - 1:
+                            menu_cursor3 = !menu_cursor3;
+                            break;
                         default:
                             break;
                         }
@@ -778,6 +789,9 @@ int32_t tama_p1_app(void* p) {
                         case 2:
                             speed_up();
                             break;
+                        case menu_items - 1:
+                            menu_cursor3 = !menu_cursor3;
+                            break;
                         default:
                             break;
                         }
@@ -810,11 +824,24 @@ int32_t tama_p1_app(void* p) {
                             break;
                         case menu_items - 1:
                         default:
-                            in_menu = false;
+                            if(menu_cursor3) {
+                                in_menu = false;
+                                menu_cursor3 = true;
+                            } else {
+                                if(speed != 1) {
+                                    speed = 1;
+                                    tamalib_set_speed(speed);
+                                }
+                                furi_timer_stop(timer);
+                                running = false;
+                                tama_p1_save_state();
+                            }
+
                             break;
                         }
                     } else if(event.input.key == InputKeyBack) {
                         in_menu = false;
+                        menu_cursor3 = true;
                     }
                 } else { // out of menu
                     if(input_type == InputTypePress || input_type == InputTypeRelease) {