Desktop: Secondary favorite app (#1307)
This commit is contained in:
		
							parent
							
								
									e0005d5336
								
							
						
					
					
						commit
						b3186e29e2
					
				| @ -5,7 +5,7 @@ | |||||||
| #include <stdbool.h> | #include <stdbool.h> | ||||||
| #include <toolbox/saved_struct.h> | #include <toolbox/saved_struct.h> | ||||||
| 
 | 
 | ||||||
| #define DESKTOP_SETTINGS_VER (3) | #define DESKTOP_SETTINGS_VER (4) | ||||||
| #define DESKTOP_SETTINGS_PATH "/int/desktop.settings" | #define DESKTOP_SETTINGS_PATH "/int/desktop.settings" | ||||||
| #define DESKTOP_SETTINGS_MAGIC (0x17) | #define DESKTOP_SETTINGS_MAGIC (0x17) | ||||||
| #define PIN_MAX_LENGTH 12 | #define PIN_MAX_LENGTH 12 | ||||||
| @ -37,7 +37,8 @@ typedef struct { | |||||||
| } PinCode; | } PinCode; | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
|     uint16_t favorite; |     uint16_t favorite_primary; | ||||||
|  |     uint16_t favorite_secondary; | ||||||
|     PinCode pin_code; |     PinCode pin_code; | ||||||
|     uint8_t is_locked; |     uint8_t is_locked; | ||||||
|     uint32_t auto_lock_delay_ms; |     uint32_t auto_lock_delay_ms; | ||||||
|  | |||||||
| @ -39,4 +39,6 @@ typedef struct { | |||||||
| 
 | 
 | ||||||
|     uint8_t menu_idx; |     uint8_t menu_idx; | ||||||
| 
 | 
 | ||||||
|  |     bool setting_primary_favorite; | ||||||
|  | 
 | ||||||
| } DesktopSettingsApp; | } DesktopSettingsApp; | ||||||
|  | |||||||
| @ -21,8 +21,14 @@ void desktop_settings_scene_favorite_on_enter(void* context) { | |||||||
|             app); |             app); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     submenu_set_header(app->submenu, "Quick access app:"); |     submenu_set_header( | ||||||
|     submenu_set_selected_item(app->submenu, app->settings.favorite); |         app->submenu, | ||||||
|  |         app->setting_primary_favorite ? "Primary favorite app:" : "Secondary favorite app:"); | ||||||
|  |     if(app->setting_primary_favorite) { | ||||||
|  |         submenu_set_selected_item(app->submenu, app->settings.favorite_primary); | ||||||
|  |     } else { | ||||||
|  |         submenu_set_selected_item(app->submenu, app->settings.favorite_secondary); | ||||||
|  |     } | ||||||
|     view_dispatcher_switch_to_view(app->view_dispatcher, DesktopSettingsAppViewMenu); |     view_dispatcher_switch_to_view(app->view_dispatcher, DesktopSettingsAppViewMenu); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -33,7 +39,11 @@ bool desktop_settings_scene_favorite_on_event(void* context, SceneManagerEvent e | |||||||
|     if(event.type == SceneManagerEventTypeCustom) { |     if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         switch(event.event) { |         switch(event.event) { | ||||||
|         default: |         default: | ||||||
|             app->settings.favorite = event.event; |             if(app->setting_primary_favorite) { | ||||||
|  |                 app->settings.favorite_primary = event.event; | ||||||
|  |             } else { | ||||||
|  |                 app->settings.favorite_secondary = event.event; | ||||||
|  |             } | ||||||
|             scene_manager_previous_scene(app->scene_manager); |             scene_manager_previous_scene(app->scene_manager); | ||||||
|             consumed = true; |             consumed = true; | ||||||
|             break; |             break; | ||||||
|  | |||||||
| @ -4,9 +4,10 @@ | |||||||
| #include "../desktop_settings_app.h" | #include "../desktop_settings_app.h" | ||||||
| #include "desktop_settings_scene.h" | #include "desktop_settings_scene.h" | ||||||
| 
 | 
 | ||||||
| #define SCENE_EVENT_SELECT_FAVORITE 0 | #define SCENE_EVENT_SELECT_FAVORITE_PRIMARY 0 | ||||||
| #define SCENE_EVENT_SELECT_PIN_SETUP 1 | #define SCENE_EVENT_SELECT_FAVORITE_SECONDARY 1 | ||||||
| #define SCENE_EVENT_SELECT_AUTO_LOCK_DELAY 2 | #define SCENE_EVENT_SELECT_PIN_SETUP 2 | ||||||
|  | #define SCENE_EVENT_SELECT_AUTO_LOCK_DELAY 3 | ||||||
| 
 | 
 | ||||||
| #define AUTO_LOCK_DELAY_COUNT 6 | #define AUTO_LOCK_DELAY_COUNT 6 | ||||||
| const char* const auto_lock_delay_text[AUTO_LOCK_DELAY_COUNT] = { | const char* const auto_lock_delay_text[AUTO_LOCK_DELAY_COUNT] = { | ||||||
| @ -41,7 +42,9 @@ void desktop_settings_scene_start_on_enter(void* context) { | |||||||
|     VariableItem* item; |     VariableItem* item; | ||||||
|     uint8_t value_index; |     uint8_t value_index; | ||||||
| 
 | 
 | ||||||
|     variable_item_list_add(variable_item_list, "Favorite App", 1, NULL, NULL); |     variable_item_list_add(variable_item_list, "Primary Favorite App", 1, NULL, NULL); | ||||||
|  | 
 | ||||||
|  |     variable_item_list_add(variable_item_list, "Secondary Favorite App", 1, NULL, NULL); | ||||||
| 
 | 
 | ||||||
|     variable_item_list_add(variable_item_list, "PIN Setup", 1, NULL, NULL); |     variable_item_list_add(variable_item_list, "PIN Setup", 1, NULL, NULL); | ||||||
| 
 | 
 | ||||||
| @ -68,7 +71,13 @@ bool desktop_settings_scene_start_on_event(void* context, SceneManagerEvent even | |||||||
| 
 | 
 | ||||||
|     if(event.type == SceneManagerEventTypeCustom) { |     if(event.type == SceneManagerEventTypeCustom) { | ||||||
|         switch(event.event) { |         switch(event.event) { | ||||||
|         case SCENE_EVENT_SELECT_FAVORITE: |         case SCENE_EVENT_SELECT_FAVORITE_PRIMARY: | ||||||
|  |             app->setting_primary_favorite = true; | ||||||
|  |             scene_manager_next_scene(app->scene_manager, DesktopSettingsAppSceneFavorite); | ||||||
|  |             consumed = true; | ||||||
|  |             break; | ||||||
|  |         case SCENE_EVENT_SELECT_FAVORITE_SECONDARY: | ||||||
|  |             app->setting_primary_favorite = false; | ||||||
|             scene_manager_next_scene(app->scene_manager, DesktopSettingsAppSceneFavorite); |             scene_manager_next_scene(app->scene_manager, DesktopSettingsAppSceneFavorite); | ||||||
|             consumed = true; |             consumed = true; | ||||||
|             break; |             break; | ||||||
|  | |||||||
| @ -103,16 +103,31 @@ bool desktop_scene_main_on_event(void* context, SceneManagerEvent event) { | |||||||
|             consumed = true; |             consumed = true; | ||||||
|             break; |             break; | ||||||
| 
 | 
 | ||||||
|         case DesktopMainEventOpenFavorite: |         case DesktopMainEventOpenFavoritePrimary: | ||||||
|             LOAD_DESKTOP_SETTINGS(&desktop->settings); |             LOAD_DESKTOP_SETTINGS(&desktop->settings); | ||||||
|             if(desktop->settings.favorite < FLIPPER_APPS_COUNT) { |             if(desktop->settings.favorite_primary < FLIPPER_APPS_COUNT) { | ||||||
|                 LoaderStatus status = loader_start( |                 LoaderStatus status = loader_start( | ||||||
|                     desktop->loader, FLIPPER_APPS[desktop->settings.favorite].name, NULL); |                     desktop->loader, FLIPPER_APPS[desktop->settings.favorite_primary].name, NULL); | ||||||
|                 if(status != LoaderStatusOk) { |                 if(status != LoaderStatusOk) { | ||||||
|                     FURI_LOG_E(TAG, "loader_start failed: %d", status); |                     FURI_LOG_E(TAG, "loader_start failed: %d", status); | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 FURI_LOG_E(TAG, "Can't find favorite application"); |                 FURI_LOG_E(TAG, "Can't find primary favorite application"); | ||||||
|  |             } | ||||||
|  |             consumed = true; | ||||||
|  |             break; | ||||||
|  |         case DesktopMainEventOpenFavoriteSecondary: | ||||||
|  |             LOAD_DESKTOP_SETTINGS(&desktop->settings); | ||||||
|  |             if(desktop->settings.favorite_secondary < FLIPPER_APPS_COUNT) { | ||||||
|  |                 LoaderStatus status = loader_start( | ||||||
|  |                     desktop->loader, | ||||||
|  |                     FLIPPER_APPS[desktop->settings.favorite_secondary].name, | ||||||
|  |                     NULL); | ||||||
|  |                 if(status != LoaderStatusOk) { | ||||||
|  |                     FURI_LOG_E(TAG, "loader_start failed: %d", status); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 FURI_LOG_E(TAG, "Can't find secondary favorite application"); | ||||||
|             } |             } | ||||||
|             consumed = true; |             consumed = true; | ||||||
|             break; |             break; | ||||||
|  | |||||||
| @ -3,7 +3,8 @@ | |||||||
| typedef enum { | typedef enum { | ||||||
|     DesktopMainEventOpenLockMenu, |     DesktopMainEventOpenLockMenu, | ||||||
|     DesktopMainEventOpenArchive, |     DesktopMainEventOpenArchive, | ||||||
|     DesktopMainEventOpenFavorite, |     DesktopMainEventOpenFavoritePrimary, | ||||||
|  |     DesktopMainEventOpenFavoriteSecondary, | ||||||
|     DesktopMainEventOpenMenu, |     DesktopMainEventOpenMenu, | ||||||
|     DesktopMainEventOpenDebug, |     DesktopMainEventOpenDebug, | ||||||
|     DesktopMainEventOpenPassport, /**< Broken, don't use it */ |     DesktopMainEventOpenPassport, /**< Broken, don't use it */ | ||||||
|  | |||||||
| @ -44,13 +44,15 @@ bool desktop_main_input(InputEvent* event, void* context) { | |||||||
|         } else if(event->key == InputKeyDown) { |         } else if(event->key == InputKeyDown) { | ||||||
|             main_view->callback(DesktopMainEventOpenArchive, main_view->context); |             main_view->callback(DesktopMainEventOpenArchive, main_view->context); | ||||||
|         } else if(event->key == InputKeyLeft) { |         } else if(event->key == InputKeyLeft) { | ||||||
|             main_view->callback(DesktopMainEventOpenFavorite, main_view->context); |             main_view->callback(DesktopMainEventOpenFavoritePrimary, main_view->context); | ||||||
|         } else if(event->key == InputKeyRight) { |         } else if(event->key == InputKeyRight) { | ||||||
|             main_view->callback(DesktopMainEventOpenPassport, main_view->context); |             main_view->callback(DesktopMainEventOpenPassport, main_view->context); | ||||||
|         } |         } | ||||||
|     } else if(event->type == InputTypeLong) { |     } else if(event->type == InputTypeLong) { | ||||||
|         if(event->key == InputKeyDown) { |         if(event->key == InputKeyDown) { | ||||||
|             main_view->callback(DesktopMainEventOpenDebug, main_view->context); |             main_view->callback(DesktopMainEventOpenDebug, main_view->context); | ||||||
|  |         } else if(event->key == InputKeyLeft) { | ||||||
|  |             main_view->callback(DesktopMainEventOpenFavoriteSecondary, main_view->context); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 David
						David