Eric Betts 8 месяцев назад
Родитель
Сommit
3e62a4f753
3 измененных файлов с 59 добавлено и 0 удалено
  1. 1 0
      scenes/passy_scene_config.h
  2. 47 0
      scenes/passy_scene_known_issues.c
  3. 11 0
      scenes/passy_scene_main_menu.c

+ 1 - 0
scenes/passy_scene_config.h

@@ -8,3 +8,4 @@ ADD_SCENE(passy, doe_input, DoEInput)
 ADD_SCENE(passy, delete, Delete)
 ADD_SCENE(passy, delete_success, DeleteSuccess)
 ADD_SCENE(passy, advanced_menu, AdvancedMenu)
+ADD_SCENE(passy, known_issues, KnownIssues)

+ 47 - 0
scenes/passy_scene_known_issues.c

@@ -0,0 +1,47 @@
+#include "../passy_i.h"
+
+static const char* known_issues_text = "Passy only uses BAC, not PACE for auth\n"
+                                       "PACE-only:\n"
+                                       "  - German Personalausweis\n"
+                                       "  - German Aufenthaltstitel post 2015\n";
+
+void passy_scene_known_issues_widget_callback(GuiButtonType result, InputType type, void* context) {
+    Passy* passy = context;
+    if(type == InputTypeShort) {
+        view_dispatcher_send_custom_event(passy->view_dispatcher, result);
+    }
+}
+
+void passy_scene_known_issues_on_enter(void* context) {
+    Passy* passy = context;
+
+    furi_string_reset(passy->text_box_store);
+
+    FuriString* str = passy->text_box_store;
+    furi_string_cat_printf(str, "%s\n", known_issues_text);
+
+    text_box_set_font(passy->text_box, TextBoxFontText);
+    text_box_set_text(passy->text_box, furi_string_get_cstr(passy->text_box_store));
+    view_dispatcher_switch_to_view(passy->view_dispatcher, PassyViewTextBox);
+}
+
+bool passy_scene_known_issues_on_event(void* context, SceneManagerEvent event) {
+    Passy* passy = context;
+    bool consumed = false;
+
+    if(event.type == SceneManagerEventTypeCustom) {
+        if(event.event == GuiButtonTypeLeft) {
+            consumed = scene_manager_previous_scene(passy->scene_manager);
+        }
+    } else if(event.type == SceneManagerEventTypeBack) {
+        consumed = scene_manager_previous_scene(passy->scene_manager);
+    }
+    return consumed;
+}
+
+void passy_scene_known_issues_on_exit(void* context) {
+    Passy* passy = context;
+
+    // Clear views
+    text_box_reset(passy->text_box);
+}

+ 11 - 0
scenes/passy_scene_main_menu.c

@@ -7,6 +7,7 @@ enum SubmenuIndex {
     SubmenuIndexReadDG1,
     SubmenuIndexReadDG2,
     SubmenuIndexReadAdvanced,
+    SubmenuIndexKnownIssues,
     SubmenuIndexDeleteMRZInfo,
 };
 
@@ -48,6 +49,13 @@ void passy_scene_main_menu_on_enter(void* context) {
             SubmenuIndexReadAdvanced,
             passy_scene_main_menu_submenu_callback,
             passy);
+        submenu_add_item(
+            submenu,
+            "Known Issues",
+            SubmenuIndexKnownIssues,
+            passy_scene_main_menu_submenu_callback,
+            passy);
+
         submenu_add_item(
             submenu,
             "Delete MRZ Info",
@@ -85,6 +93,9 @@ bool passy_scene_main_menu_on_event(void* context, SceneManagerEvent event) {
             passy->read_type = PassyReadCOM;
             scene_manager_next_scene(passy->scene_manager, PassySceneRead);
             consumed = true;
+        } else if(event.event == SubmenuIndexKnownIssues) {
+            scene_manager_next_scene(passy->scene_manager, PassySceneKnownIssues);
+            consumed = true;
         }
     } else if(event.type == SceneManagerEventTypeBack) {
         while(scene_manager_previous_scene(passy->scene_manager))