Loader: forget menu position on main menu reentry, proper NULL arg passing. Gui: set current item for menu gui module. (#729)
This commit is contained in:
		
							parent
							
								
									0126b3aba4
								
							
						
					
					
						commit
						8b6c466058
					
				| @ -204,7 +204,7 @@ CFLAGS		+= -DSRV_LOADER | |||||||
| SRV_GUI		= 1 | SRV_GUI		= 1 | ||||||
| # Loader autostart hook
 | # Loader autostart hook
 | ||||||
| LOADER_AUTOSTART ?= "" | LOADER_AUTOSTART ?= "" | ||||||
| ifneq ($(strip $(LOADER_AUTOSTART)),) | ifneq ($(strip $(LOADER_AUTOSTART)), "") | ||||||
| CFLAGS		+= -DLOADER_AUTOSTART="\"$(LOADER_AUTOSTART)\"" | CFLAGS		+= -DLOADER_AUTOSTART="\"$(LOADER_AUTOSTART)\"" | ||||||
| endif | endif | ||||||
| # Loader autostart hook END
 | # Loader autostart hook END
 | ||||||
|  | |||||||
| @ -160,6 +160,18 @@ void menu_clean(Menu* menu) { | |||||||
|         }); |         }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void menu_set_selected_item(Menu* menu, uint32_t index) { | ||||||
|  |     with_view_model( | ||||||
|  |         menu->view, (MenuModel * model) { | ||||||
|  |             if(index >= MenuItemArray_size(model->items)) { | ||||||
|  |                 return false; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             model->position = index; | ||||||
|  |             return true; | ||||||
|  |         }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| static void menu_process_up(Menu* menu) { | static void menu_process_up(Menu* menu) { | ||||||
|     with_view_model( |     with_view_model( | ||||||
|         menu->view, (MenuModel * model) { |         menu->view, (MenuModel * model) { | ||||||
|  | |||||||
| @ -47,6 +47,12 @@ void menu_add_item( | |||||||
|  */ |  */ | ||||||
| void menu_clean(Menu* menu); | void menu_clean(Menu* menu); | ||||||
| 
 | 
 | ||||||
|  | /** Set current menu item
 | ||||||
|  |  * @param submenu | ||||||
|  |  * @param index | ||||||
|  |  */ | ||||||
|  | void menu_set_selected_item(Menu* menu, uint32_t index); | ||||||
|  | 
 | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -90,9 +90,11 @@ bool loader_start(Loader* instance, const char* name, const char* args) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     instance->current_app = flipper_app; |     instance->current_app = flipper_app; | ||||||
|  |     void* thread_args = NULL; | ||||||
|     if(args) { |     if(args) { | ||||||
|         string_set_str(instance->args, args); |         string_set_str(instance->args, args); | ||||||
|         string_strim(instance->args); |         string_strim(instance->args); | ||||||
|  |         thread_args = (void*)string_get_cstr(instance->args); | ||||||
|         FURI_LOG_I(LOADER_LOG_TAG, "Start %s app with args: %s", name, args); |         FURI_LOG_I(LOADER_LOG_TAG, "Start %s app with args: %s", name, args); | ||||||
|     } else { |     } else { | ||||||
|         string_clean(instance->args); |         string_clean(instance->args); | ||||||
| @ -101,7 +103,7 @@ bool loader_start(Loader* instance, const char* name, const char* args) { | |||||||
| 
 | 
 | ||||||
|     furi_thread_set_name(instance->thread, flipper_app->name); |     furi_thread_set_name(instance->thread, flipper_app->name); | ||||||
|     furi_thread_set_stack_size(instance->thread, flipper_app->stack_size); |     furi_thread_set_stack_size(instance->thread, flipper_app->stack_size); | ||||||
|     furi_thread_set_context(instance->thread, (void*)string_get_cstr(instance->args)); |     furi_thread_set_context(instance->thread, thread_args); | ||||||
|     furi_thread_set_callback(instance->thread, flipper_app->app); |     furi_thread_set_callback(instance->thread, flipper_app->app); | ||||||
| 
 | 
 | ||||||
|     return furi_thread_start(instance->thread); |     return furi_thread_start(instance->thread); | ||||||
| @ -352,6 +354,7 @@ int32_t loader_srv(void* p) { | |||||||
|     while(1) { |     while(1) { | ||||||
|         uint32_t flags = osThreadFlagsWait(LOADER_THREAD_FLAG_ALL, osFlagsWaitAny, osWaitForever); |         uint32_t flags = osThreadFlagsWait(LOADER_THREAD_FLAG_ALL, osFlagsWaitAny, osWaitForever); | ||||||
|         if(flags & LOADER_THREAD_FLAG_SHOW_MENU) { |         if(flags & LOADER_THREAD_FLAG_SHOW_MENU) { | ||||||
|  |             menu_set_selected_item(loader_instance->primary_menu, 0); | ||||||
|             view_dispatcher_switch_to_view( |             view_dispatcher_switch_to_view( | ||||||
|                 loader_instance->view_dispatcher, LoaderMenuViewPrimary); |                 loader_instance->view_dispatcher, LoaderMenuViewPrimary); | ||||||
|             view_dispatcher_run(loader_instance->view_dispatcher); |             view_dispatcher_run(loader_instance->view_dispatcher); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく