mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
Final merge fixes
This commit is contained in:
@@ -8,7 +8,8 @@ static bool momentum_app_custom_event_callback(void* context, uint32_t event) {
|
||||
|
||||
void callback_reboot(void* context) {
|
||||
UNUSED(context);
|
||||
power_reboot(PowerBootModeNormal);
|
||||
Power* power = furi_record_open(RECORD_POWER);
|
||||
power_reboot(power, PowerBootModeNormal);
|
||||
}
|
||||
|
||||
bool momentum_app_apply(MomentumApp* app) {
|
||||
|
||||
@@ -59,10 +59,12 @@ static void desktop_scene_pin_input_done_callback(const DesktopPinCode* pin_code
|
||||
} else {
|
||||
uint32_t pin_fails = furi_hal_rtc_get_pin_fails() + 1;
|
||||
if(pin_fails >= 10 && momentum_settings.bad_pins_format) {
|
||||
storage_sd_format(furi_record_open(RECORD_STORAGE));
|
||||
Storage* storage = furi_record_open(RECORD_STORAGE);
|
||||
storage_sd_format(storage);
|
||||
furi_record_close(RECORD_STORAGE);
|
||||
furi_hal_rtc_reset_registers();
|
||||
power_reboot(PowerBootModeNormal);
|
||||
Power* power = furi_record_open(RECORD_POWER);
|
||||
power_reboot(power, PowerBootModeNormal);
|
||||
}
|
||||
furi_hal_rtc_set_pin_fails(pin_fails);
|
||||
view_dispatcher_send_custom_event(
|
||||
|
||||
@@ -285,13 +285,13 @@ static void number_input_view_draw_callback(Canvas* canvas, void* _model) {
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspaceSelected_16x9);
|
||||
&I_KeyBackspaceSelected_17x11);
|
||||
} else {
|
||||
canvas_draw_icon(
|
||||
canvas,
|
||||
keyboard_origin_x + keys[column].x,
|
||||
keyboard_origin_y + keys[column].y,
|
||||
&I_KeyBackspace_16x9);
|
||||
&I_KeyBackspace_17x11);
|
||||
}
|
||||
} else if(keys[column].text == sign_symbol) {
|
||||
if(model->selected_row == row && model->selected_column == column) {
|
||||
|
||||
@@ -63,13 +63,6 @@ static void loader_pubsub_callback(const void* message, void* context) {
|
||||
}
|
||||
}
|
||||
|
||||
static void loader_menu_set_view(LoaderMenu* loader_menu, View* view) {
|
||||
view_holder_set_view(loader_menu->view_holder, view);
|
||||
if(view) {
|
||||
view_holder_update(view, loader_menu->view_holder);
|
||||
}
|
||||
}
|
||||
|
||||
static void loader_menu_dummy_draw(Canvas* canvas, void* context) {
|
||||
UNUSED(context);
|
||||
|
||||
@@ -101,7 +94,7 @@ LoaderMenu* loader_menu_alloc(void (*closed_cb)(void*), void* context, bool sett
|
||||
loader_menu->view_holder = view_holder_alloc();
|
||||
view_holder_attach_to_gui(loader_menu->view_holder, gui);
|
||||
view_holder_set_back_callback(loader_menu->view_holder, NULL, NULL);
|
||||
loader_menu_set_view(loader_menu, loader_menu->dummy);
|
||||
view_holder_set_view(loader_menu->view_holder, loader_menu->dummy);
|
||||
|
||||
loader_menu->loader = furi_record_open(RECORD_LOADER);
|
||||
loader_menu->subscription = furi_pubsub_subscribe(
|
||||
@@ -123,6 +116,7 @@ void loader_menu_free(LoaderMenu* loader_menu) {
|
||||
furi_thread_free(loader_menu->thread);
|
||||
}
|
||||
|
||||
view_holder_set_view(loader_menu->view_holder, NULL);
|
||||
view_holder_free(loader_menu->view_holder);
|
||||
furi_record_close(RECORD_GUI);
|
||||
|
||||
@@ -180,10 +174,18 @@ static void loader_menu_settings_menu_callback(void* context, uint32_t index) {
|
||||
loader_menu_start(name);
|
||||
}
|
||||
|
||||
// Can't do this in GUI callbacks because now ViewHolder waits for ongoing
|
||||
// input, and inputs are not processed because GUI is processing callbacks
|
||||
static void loader_menu_set_view_pending(void* context, uint32_t arg) {
|
||||
LoaderMenuApp* app = context;
|
||||
view_holder_set_view(app->loader_menu->view_holder, (View*)arg);
|
||||
}
|
||||
|
||||
static void loader_menu_switch_to_settings(void* context, uint32_t index) {
|
||||
UNUSED(index);
|
||||
LoaderMenuApp* app = context;
|
||||
loader_menu_set_view(app->loader_menu, submenu_get_view(app->settings_menu));
|
||||
furi_timer_pending_callback(
|
||||
loader_menu_set_view_pending, app, (uint32_t)submenu_get_view(app->settings_menu));
|
||||
app->loader_menu->current_view = LoaderMenuViewSettings;
|
||||
}
|
||||
|
||||
@@ -191,7 +193,8 @@ static void loader_menu_back(void* context) {
|
||||
LoaderMenuApp* app = context;
|
||||
if(app->loader_menu->current_view == LoaderMenuViewSettings &&
|
||||
!app->loader_menu->settings_only) {
|
||||
loader_menu_set_view(app->loader_menu, menu_get_view(app->primary_menu));
|
||||
furi_timer_pending_callback(
|
||||
loader_menu_set_view_pending, app, (uint32_t)menu_get_view(app->primary_menu));
|
||||
app->loader_menu->current_view = LoaderMenuViewPrimary;
|
||||
} else {
|
||||
furi_thread_flags_set(furi_thread_get_id(app->loader_menu->thread), 0);
|
||||
@@ -364,7 +367,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
|
||||
View* view = app->loader_menu->current_view == LoaderMenuViewSettings ?
|
||||
submenu_get_view(app->settings_menu) :
|
||||
menu_get_view(app->primary_menu);
|
||||
loader_menu_set_view(app->loader_menu, view);
|
||||
view_holder_set_view(app->loader_menu->view_holder, view);
|
||||
view_holder_set_back_callback(app->loader_menu->view_holder, loader_menu_back, app);
|
||||
|
||||
return app;
|
||||
@@ -372,7 +375,7 @@ static LoaderMenuApp* loader_menu_app_alloc(LoaderMenu* loader_menu) {
|
||||
|
||||
static void loader_menu_app_free(LoaderMenuApp* app) {
|
||||
view_holder_set_back_callback(app->loader_menu->view_holder, NULL, NULL);
|
||||
loader_menu_set_view(app->loader_menu, app->loader_menu->dummy);
|
||||
view_holder_set_view(app->loader_menu->view_holder, app->loader_menu->dummy);
|
||||
|
||||
if(!app->loader_menu->settings_only) {
|
||||
app->loader_menu->selected_primary = menu_get_selected_item(app->primary_menu);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <furi.h>
|
||||
#include <furi_hal.h>
|
||||
#include <loader/loader.h>
|
||||
#include <momentum/momentum.h>
|
||||
|
||||
#include <update_util/update_operation.h>
|
||||
@@ -598,7 +599,6 @@ static Power* power_alloc(void) {
|
||||
power->ascii_events_pubsub = furi_record_open(RECORD_ASCII_EVENTS);
|
||||
power->auto_shutdown_timer =
|
||||
furi_timer_alloc(power_auto_shutdown_timer_callback, FuriTimerTypeOnce, power);
|
||||
power->app_running = loader_is_locked(loader);
|
||||
|
||||
power->view_holder = view_holder_alloc();
|
||||
power->view_power_off = power_off_alloc();
|
||||
@@ -634,10 +634,16 @@ int32_t power_srv(void* p) {
|
||||
}
|
||||
|
||||
Power* power = power_alloc();
|
||||
power_init_settings(power);
|
||||
power_update_info(power);
|
||||
|
||||
furi_record_create(RECORD_POWER, power);
|
||||
|
||||
// Can't be done in alloc, other things in startup need power service and it would deadlock by waiting for loader
|
||||
Loader* loader = furi_record_open(RECORD_LOADER);
|
||||
power->app_running = loader_is_locked(loader);
|
||||
furi_record_close(RECORD_LOADER);
|
||||
power_init_settings(power);
|
||||
|
||||
furi_event_loop_run(power->event_loop);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
#include <toolbox/api_lock.h>
|
||||
#include <assets_icons.h>
|
||||
#include <loader/loader.h>
|
||||
|
||||
#include "views/power_off.h"
|
||||
#include "views/power_unplug_usb.h"
|
||||
|
||||
@@ -12,8 +12,8 @@ enum PowerSettingsSubmenuIndex {
|
||||
#define SHUTDOWN_IDLE_DELAY_COUNT 9
|
||||
const char* const shutdown_idle_delay_text[SHUTDOWN_IDLE_DELAY_COUNT] = {
|
||||
"OFF",
|
||||
"15min",
|
||||
"30min",
|
||||
"15m",
|
||||
"30m",
|
||||
"1h",
|
||||
"2h",
|
||||
"6h",
|
||||
@@ -71,7 +71,7 @@ void power_settings_scene_start_on_enter(void* context) {
|
||||
variable_item_list_set_enter_callback(
|
||||
variable_item_list, power_settings_scene_start_submenu_callback, app);
|
||||
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, PowerSettingsAppViewSubmenu);
|
||||
view_dispatcher_switch_to_view(app->view_dispatcher, PowerSettingsAppViewVariableItemList);
|
||||
}
|
||||
|
||||
bool power_settings_scene_start_on_event(void* context, SceneManagerEvent event) {
|
||||
|
||||
@@ -53,7 +53,8 @@ void storage_settings_scene_formatting_on_enter(void* context) {
|
||||
dialog_ex, storage_error_get_desc(error), 64, 32, AlignCenter, AlignCenter);
|
||||
} else {
|
||||
if(scene_manager_get_scene_state(app->scene_manager, StorageSettingsFormatting)) {
|
||||
power_reboot(PowerBootModeNormal);
|
||||
Power* power = furi_record_open(RECORD_POWER);
|
||||
power_reboot(power, PowerBootModeNormal);
|
||||
} else {
|
||||
dialog_ex_set_icon(dialog_ex, 48, 6, &I_DolphinDone_80x58);
|
||||
dialog_ex_set_header(dialog_ex, "Formatted", 5, 10, AlignLeft, AlignTop);
|
||||
|
||||
@@ -92,10 +92,9 @@ static void js_keyboard_text(struct mjs* mjs) {
|
||||
view_holder_set_back_callback(keyboard->view_holder, keyboard_exit, keyboard);
|
||||
|
||||
view_holder_set_view(keyboard->view_holder, text_input_get_view(keyboard->text_input));
|
||||
view_holder_start(keyboard->view_holder);
|
||||
api_lock_wait_unlock(keyboard->lock);
|
||||
|
||||
view_holder_stop(keyboard->view_holder);
|
||||
view_holder_set_view(keyboard->view_holder, NULL);
|
||||
view_holder_free(keyboard->view_holder);
|
||||
|
||||
furi_record_close(RECORD_GUI);
|
||||
@@ -148,10 +147,9 @@ static void js_keyboard_byte(struct mjs* mjs) {
|
||||
view_holder_set_back_callback(keyboard->view_holder, keyboard_exit, keyboard);
|
||||
|
||||
view_holder_set_view(keyboard->view_holder, byte_input_get_view(keyboard->byte_input));
|
||||
view_holder_start(keyboard->view_holder);
|
||||
api_lock_wait_unlock(keyboard->lock);
|
||||
|
||||
view_holder_stop(keyboard->view_holder);
|
||||
view_holder_set_view(keyboard->view_holder, NULL);
|
||||
view_holder_free(keyboard->view_holder);
|
||||
|
||||
furi_record_close(RECORD_GUI);
|
||||
|
||||
@@ -825,7 +825,7 @@ static void js_widget_is_open(struct mjs* mjs) {
|
||||
static void widget_callback(void* context, uint32_t arg) {
|
||||
UNUSED(arg);
|
||||
JsWidgetInst* widget = context;
|
||||
view_holder_stop(widget->view_holder);
|
||||
view_holder_set_view(widget->view_holder, NULL);
|
||||
widget->is_shown = false;
|
||||
}
|
||||
|
||||
@@ -845,7 +845,7 @@ static void js_widget_show(struct mjs* mjs) {
|
||||
return;
|
||||
}
|
||||
|
||||
view_holder_start(widget->view_holder);
|
||||
view_holder_set_view(widget->view_holder, widget->view);
|
||||
widget->is_shown = true;
|
||||
|
||||
mjs_return(mjs, MJS_UNDEFINED);
|
||||
@@ -855,7 +855,7 @@ static void js_widget_close(struct mjs* mjs) {
|
||||
JsWidgetInst* widget = get_this_ctx(mjs);
|
||||
if(!check_arg_count(mjs, 0)) return;
|
||||
|
||||
view_holder_stop(widget->view_holder);
|
||||
view_holder_set_view(widget->view_holder, NULL);
|
||||
widget->is_shown = false;
|
||||
|
||||
mjs_return(mjs, MJS_UNDEFINED);
|
||||
@@ -933,7 +933,6 @@ static void* js_widget_create(struct mjs* mjs, mjs_val_t* object) {
|
||||
widget->view_holder = view_holder_alloc();
|
||||
view_holder_attach_to_gui(widget->view_holder, gui);
|
||||
view_holder_set_back_callback(widget->view_holder, widget_exit, widget);
|
||||
view_holder_set_view(widget->view_holder, widget->view);
|
||||
|
||||
*object = widget_obj;
|
||||
return widget;
|
||||
@@ -942,7 +941,7 @@ static void* js_widget_create(struct mjs* mjs, mjs_val_t* object) {
|
||||
static void js_widget_destroy(void* inst) {
|
||||
JsWidgetInst* widget = inst;
|
||||
|
||||
view_holder_stop(widget->view_holder);
|
||||
view_holder_set_view(widget->view_holder, NULL);
|
||||
view_holder_free(widget->view_holder);
|
||||
widget->view_holder = NULL;
|
||||
|
||||
|
||||
@@ -3926,8 +3926,12 @@ Variable,+,I_KeyBackspaceSelected_17x11,const Icon,
|
||||
Variable,+,I_KeyBackspace_17x11,const Icon,
|
||||
Variable,+,I_KeyKeyboardSelected_10x11,const Icon,
|
||||
Variable,+,I_KeyKeyboard_10x11,const Icon,
|
||||
Variable,+,I_KeySaveBlockedSelected_22x11,const Icon,
|
||||
Variable,+,I_KeySaveBlocked_22x11,const Icon,
|
||||
Variable,+,I_KeySaveSelected_22x11,const Icon,
|
||||
Variable,+,I_KeySave_22x11,const Icon,
|
||||
Variable,+,I_KeySignSelected_21x11,const Icon,
|
||||
Variable,+,I_KeySign_21x11,const Icon,
|
||||
Variable,+,I_Keychain_39x36,const Icon,
|
||||
Variable,+,I_Left_mouse_icon_9x9,const Icon,
|
||||
Variable,+,I_LoadingHourglass_24x24,const Icon,
|
||||
|
||||
|
Reference in New Issue
Block a user