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

Show failure in UI if usb not setup

Eric Betts 11 месяцев назад
Родитель
Сommit
467c9b8515
1 измененных файлов с 30 добавлено и 21 удалено
  1. 30 21
      scenes/pof_scene_main.c

+ 30 - 21
scenes/pof_scene_main.c

@@ -25,28 +25,33 @@ void pof_scene_main_on_update(void* context) {
     Submenu* submenu = pof->submenu;
     submenu_reset(pof->submenu);
 
-    int count = 0;
-    for(int i = 0; i < POF_TOKEN_LIMIT; i++) {
-        if(virtual_portal->tokens[i]->loaded) {
-            PoFToken* pof_token = virtual_portal->tokens[i];
-            // Unload figure
+    if(pof->pof_usb) {
+        int count = 0;
+        for(int i = 0; i < POF_TOKEN_LIMIT; i++) {
+            if(virtual_portal->tokens[i]->loaded) {
+                PoFToken* pof_token = virtual_portal->tokens[i];
+                // Unload figure
+                submenu_add_item(
+                    submenu,
+                    pof_token->dev_name,
+                    SubmenuIndexFigure1 + i,
+                    pof_scene_main_submenu_callback,
+                    pof);
+                count++;
+            }
+        }
+
+        if(count < POF_TOKEN_LIMIT) {
             submenu_add_item(
-                submenu,
-                pof_token->dev_name,
-                SubmenuIndexFigure1 + i,
-                pof_scene_main_submenu_callback,
-                pof);
-            count++;
+                submenu, "<Load figure>", SubmenuIndexLoad, pof_scene_main_submenu_callback, pof);
         }
-    }
 
-    if(count < POF_TOKEN_LIMIT) {
+        submenu_set_selected_item(
+            submenu, scene_manager_get_scene_state(pof->scene_manager, PoFSceneMain));
+    } else {
         submenu_add_item(
-            submenu, "<Load figure>", SubmenuIndexLoad, pof_scene_main_submenu_callback, pof);
+            submenu, "Failed to start", SubmenuIndexLoad, pof_scene_main_submenu_callback, pof);
     }
-
-    submenu_set_selected_item(
-        submenu, scene_manager_get_scene_state(pof->scene_manager, PoFSceneMain));
     view_dispatcher_switch_to_view(pof->view_dispatcher, PoFViewSubmenu);
 }
 
@@ -61,10 +66,14 @@ bool pof_scene_main_on_event(void* context, SceneManagerEvent event) {
 
     if(event.type == SceneManagerEventTypeCustom) {
         if(event.event == SubmenuIndexLoad) {
-            // Explicitly save state so that the correct item is
-            // reselected if the user cancels loading a file.
-            scene_manager_set_scene_state(pof->scene_manager, PoFSceneMain, SubmenuIndexLoad);
-            scene_manager_next_scene(pof->scene_manager, PoFSceneFileSelect);
+            if(pof->pof_usb) {
+                // Explicitly save state so that the correct item is
+                // reselected if the user cancels loading a file.
+                scene_manager_set_scene_state(pof->scene_manager, PoFSceneMain, SubmenuIndexLoad);
+                scene_manager_next_scene(pof->scene_manager, PoFSceneFileSelect);
+            } else {
+                // No-op
+            }
             consumed = true;
         } else {
             pof_token_clear(virtual_portal->tokens[event.event], true);