Roman Belyakovsky 2 лет назад
Родитель
Сommit
ee9327b5ce
1 измененных файлов с 15 добавлено и 7 удалено
  1. 15 7
      base_pack/hid_app/views/hid_ptt.c

+ 15 - 7
base_pack/hid_app/views/hid_ptt.c

@@ -21,6 +21,7 @@ typedef struct {
     bool muted;
     bool muted;
     bool ptt_pressed;
     bool ptt_pressed;
     bool connected;
     bool connected;
+    bool is_mac_os;
     HidTransport transport;
     HidTransport transport;
 } HidPttModel;
 } HidPttModel;
 
 
@@ -44,14 +45,16 @@ static void hid_ptt_draw_callback(Canvas* canvas, void* context) {
     canvas_draw_icon(canvas, 3, 96, &I_ButtonDown_7x4);
     canvas_draw_icon(canvas, 3, 96, &I_ButtonDown_7x4);
 
 
     // OS selection
     // OS selection
-    elements_slightly_rounded_box(canvas, 0, 106, 21, 11);
-    canvas_set_color(canvas, ColorWhite);
+    elements_slightly_rounded_box(canvas, model->is_mac_os ? 0 : 26, 106, model->is_mac_os ? 21 : 26, 11);
+    canvas_set_color(canvas, model->is_mac_os ? ColorWhite : ColorBlack);
     elements_multiline_text_aligned(canvas, 2, 108, AlignLeft, AlignTop, "Mac");
     elements_multiline_text_aligned(canvas, 2, 108, AlignLeft, AlignTop, "Mac");
     canvas_set_color(canvas, ColorBlack);
     canvas_set_color(canvas, ColorBlack);
-    elements_multiline_text_aligned(canvas, 24, 108, AlignLeft, AlignTop, "|");
+    elements_multiline_text_aligned(canvas, 23, 108, AlignLeft, AlignTop, "|");
+    canvas_set_color(canvas, model->is_mac_os ? ColorBlack : ColorWhite);
     elements_multiline_text_aligned(canvas, 28, 108, AlignLeft, AlignTop, "Linux");
     elements_multiline_text_aligned(canvas, 28, 108, AlignLeft, AlignTop, "Linux");
     canvas_set_color(canvas, ColorBlack);
     canvas_set_color(canvas, ColorBlack);
 
 
+    // Exit label
     canvas_draw_icon(canvas, 3, 121, &I_ButtonLeft_4x7);
     canvas_draw_icon(canvas, 3, 121, &I_ButtonLeft_4x7);
     elements_multiline_text_aligned(canvas, 9, 121, AlignLeft, AlignTop, "Hold to exit");
     elements_multiline_text_aligned(canvas, 9, 121, AlignLeft, AlignTop, "Hold to exit");
 
 
@@ -192,13 +195,16 @@ static void hid_ptt_process(HidPtt* hid_ptt, InputEvent* event) {
             } else if(event->type == InputTypeShort) {
             } else if(event->type == InputTypeShort) {
                 if(event->key == InputKeyOk && !model->ptt_pressed ) { // no changes if PTT is pressed
                 if(event->key == InputKeyOk && !model->ptt_pressed ) { // no changes if PTT is pressed
                     model->muted = !model->muted;
                     model->muted = !model->muted;
-                    //  + d
                     hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_D);
                     hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_D);
                     hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_D);
                     hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_D);
                 } else if(event->key == InputKeyRight) {
                 } else if(event->key == InputKeyRight) {
-                    //  + d
-                    hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_E);
-                    hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_E);
+                    if (!model->ptt_pressed){
+                        hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_E);
+                        hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | HID_KEYBOARD_E);
+                    } else {
+                        model->is_mac_os = !model->is_mac_os;
+                        notification_message(hid_ptt->hid->notifications, &sequence_single_vibro);
+                    }
                 }
                 }
             } else if(event->type == InputTypeLong) {
             } else if(event->type == InputTypeLong) {
                 if(event->key == InputKeyLeft) {
                 if(event->key == InputKeyLeft) {
@@ -210,6 +216,7 @@ static void hid_ptt_process(HidPtt* hid_ptt, InputEvent* event) {
                 } else if(event->key == InputKeyOk && !model->ptt_pressed ) { // no changes if PTT is pressed
                 } else if(event->key == InputKeyOk && !model->ptt_pressed ) { // no changes if PTT is pressed
                     // Change local mic status
                     // Change local mic status
                     model->muted = !model->muted;
                     model->muted = !model->muted;
+                    notification_message(hid_ptt->hid->notifications, &sequence_single_vibro);
                 }
                 }
             }
             }
             //LED
             //LED
@@ -244,6 +251,7 @@ HidPtt* hid_ptt_alloc(Hid* hid) {
         hid_ptt->view, HidPttModel * model, {
         hid_ptt->view, HidPttModel * model, {
             model->transport = hid->transport;
             model->transport = hid->transport;
             model->muted = false; // assume we're not muted
             model->muted = false; // assume we're not muted
+            model->is_mac_os = true;
         }, true);
         }, true);
     return hid_ptt;
     return hid_ptt;
 }
 }