mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2025-10-10 07:02:33 +02:00
MNTM Settings: Add Skip Sliding Animations option for Lockscreen (#436)
* Add Fast Lock/Unlock The cover animation takes time and blocks input while animating, so add options to skip the animations. * Combine options into "Skip Sliding Animation" * Update changelog * Wording --------- Co-authored-by: WillyJL <me@willyjl.dev>
This commit is contained in:
@@ -6,6 +6,7 @@
|
|||||||
- UL: Nero Radio static parse and display more data (by @xMasterX)
|
- UL: Nero Radio static parse and display more data (by @xMasterX)
|
||||||
- UL: Marantec protocol implement CRC verification display and add manually support (by @xMasterX & @li0ard, original code by @Skorpionm)
|
- UL: Marantec protocol implement CRC verification display and add manually support (by @xMasterX & @li0ard, original code by @Skorpionm)
|
||||||
- UL: Keeloq Comunello add manually support (by @xMasterX)
|
- UL: Keeloq Comunello add manually support (by @xMasterX)
|
||||||
|
- MNTM Settings: Add Skip Sliding Animations option for Lockscreen (by @aaronjamt)
|
||||||
|
|
||||||
### Updated:
|
### Updated:
|
||||||
- Apps:
|
- Apps:
|
||||||
|
@@ -110,6 +110,15 @@ static void
|
|||||||
app->save_settings = true;
|
app->save_settings = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
momentum_app_scene_interface_lockscreen_lockscreen_skip_animation_changed(VariableItem* item) {
|
||||||
|
MomentumApp* app = variable_item_get_context(item);
|
||||||
|
bool value = variable_item_get_current_value_index(item);
|
||||||
|
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
|
||||||
|
momentum_settings.lockscreen_skip_animation = value;
|
||||||
|
app->save_settings = true;
|
||||||
|
}
|
||||||
|
|
||||||
void momentum_app_scene_interface_lockscreen_on_enter(void* context) {
|
void momentum_app_scene_interface_lockscreen_on_enter(void* context) {
|
||||||
MomentumApp* app = context;
|
MomentumApp* app = context;
|
||||||
VariableItemList* var_item_list = app->var_item_list;
|
VariableItemList* var_item_list = app->var_item_list;
|
||||||
@@ -220,6 +229,16 @@ void momentum_app_scene_interface_lockscreen_on_enter(void* context) {
|
|||||||
variable_item_set_current_value_text(
|
variable_item_set_current_value_text(
|
||||||
item, momentum_settings.lockscreen_transparent ? "ON" : "OFF");
|
item, momentum_settings.lockscreen_transparent ? "ON" : "OFF");
|
||||||
|
|
||||||
|
item = variable_item_list_add(
|
||||||
|
var_item_list,
|
||||||
|
"Skip Sliding Animation",
|
||||||
|
2,
|
||||||
|
momentum_app_scene_interface_lockscreen_lockscreen_skip_animation_changed,
|
||||||
|
app);
|
||||||
|
variable_item_set_current_value_index(item, momentum_settings.lockscreen_skip_animation);
|
||||||
|
variable_item_set_current_value_text(
|
||||||
|
item, momentum_settings.lockscreen_skip_animation ? "ON" : "OFF");
|
||||||
|
|
||||||
variable_item_list_set_enter_callback(
|
variable_item_list_set_enter_callback(
|
||||||
var_item_list, momentum_app_scene_interface_lockscreen_var_item_list_callback, app);
|
var_item_list, momentum_app_scene_interface_lockscreen_var_item_list_callback, app);
|
||||||
|
|
||||||
|
@@ -288,10 +288,17 @@ void desktop_view_locked_free(DesktopViewLocked* locked_view) {
|
|||||||
void desktop_view_locked_close_cover(DesktopViewLocked* locked_view) {
|
void desktop_view_locked_close_cover(DesktopViewLocked* locked_view) {
|
||||||
DesktopViewLockedModel* model = view_get_model(locked_view->view);
|
DesktopViewLockedModel* model = view_get_model(locked_view->view);
|
||||||
furi_assert(model->view_state == DesktopViewLockedStateLocked);
|
furi_assert(model->view_state == DesktopViewLockedStateLocked);
|
||||||
|
|
||||||
|
if(momentum_settings.lockscreen_skip_animation) {
|
||||||
|
locked_view->callback(DesktopLockedEventCoversClosed, locked_view->context);
|
||||||
|
model->cover_offset = COVER_OFFSET_END;
|
||||||
|
view_commit_model(locked_view->view, true);
|
||||||
|
} else {
|
||||||
model->view_state = DesktopViewLockedStateCoverClosing;
|
model->view_state = DesktopViewLockedStateCoverClosing;
|
||||||
model->cover_offset = COVER_OFFSET_START;
|
model->cover_offset = COVER_OFFSET_START;
|
||||||
view_commit_model(locked_view->view, true);
|
view_commit_model(locked_view->view, true);
|
||||||
furi_timer_start(locked_view->timer, COVER_MOVING_INTERVAL_MS);
|
furi_timer_start(locked_view->timer, COVER_MOVING_INTERVAL_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void desktop_view_locked_lock(DesktopViewLocked* locked_view, bool pin_locked) {
|
void desktop_view_locked_lock(DesktopViewLocked* locked_view, bool pin_locked) {
|
||||||
@@ -305,11 +312,19 @@ void desktop_view_locked_lock(DesktopViewLocked* locked_view, bool pin_locked) {
|
|||||||
void desktop_view_locked_unlock(DesktopViewLocked* locked_view) {
|
void desktop_view_locked_unlock(DesktopViewLocked* locked_view) {
|
||||||
locked_view->lock_count = 0;
|
locked_view->lock_count = 0;
|
||||||
DesktopViewLockedModel* model = view_get_model(locked_view->view);
|
DesktopViewLockedModel* model = view_get_model(locked_view->view);
|
||||||
|
|
||||||
|
if(momentum_settings.lockscreen_skip_animation) {
|
||||||
|
model->view_state = DesktopViewLockedStateUnlocked;
|
||||||
|
model->cover_offset = COVER_OFFSET_START;
|
||||||
|
model->pin_locked = false;
|
||||||
|
view_commit_model(locked_view->view, true);
|
||||||
|
} else {
|
||||||
model->view_state = DesktopViewLockedStateCoverOpening;
|
model->view_state = DesktopViewLockedStateCoverOpening;
|
||||||
model->cover_offset = COVER_OFFSET_END;
|
model->cover_offset = COVER_OFFSET_END;
|
||||||
model->pin_locked = false;
|
model->pin_locked = false;
|
||||||
view_commit_model(locked_view->view, true);
|
view_commit_model(locked_view->view, true);
|
||||||
furi_timer_start(locked_view->timer, COVER_MOVING_INTERVAL_MS);
|
furi_timer_start(locked_view->timer, COVER_MOVING_INTERVAL_MS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool desktop_view_locked_is_locked_hint_visible(DesktopViewLocked* locked_view) {
|
bool desktop_view_locked_is_locked_hint_visible(DesktopViewLocked* locked_view) {
|
||||||
|
@@ -23,6 +23,7 @@ MomentumSettings momentum_settings = {
|
|||||||
.lockscreen_statusbar = true, // ON
|
.lockscreen_statusbar = true, // ON
|
||||||
.lockscreen_prompt = true, // ON
|
.lockscreen_prompt = true, // ON
|
||||||
.lockscreen_transparent = false, // OFF
|
.lockscreen_transparent = false, // OFF
|
||||||
|
.lockscreen_skip_animation = false, // OFF
|
||||||
.battery_icon = BatteryIconBarPercent, // Bar %
|
.battery_icon = BatteryIconBarPercent, // Bar %
|
||||||
.status_icons = true, // ON
|
.status_icons = true, // ON
|
||||||
.bar_borders = true, // ON
|
.bar_borders = true, // ON
|
||||||
@@ -96,6 +97,7 @@ static const struct {
|
|||||||
{setting_bool(lockscreen_statusbar)},
|
{setting_bool(lockscreen_statusbar)},
|
||||||
{setting_bool(lockscreen_prompt)},
|
{setting_bool(lockscreen_prompt)},
|
||||||
{setting_bool(lockscreen_transparent)},
|
{setting_bool(lockscreen_transparent)},
|
||||||
|
{setting_bool(lockscreen_skip_animation)},
|
||||||
{setting_enum(battery_icon, BatteryIconCount)},
|
{setting_enum(battery_icon, BatteryIconCount)},
|
||||||
{setting_bool(status_icons)},
|
{setting_bool(status_icons)},
|
||||||
{setting_bool(bar_borders)},
|
{setting_bool(bar_borders)},
|
||||||
|
@@ -80,6 +80,7 @@ typedef struct {
|
|||||||
bool lockscreen_statusbar;
|
bool lockscreen_statusbar;
|
||||||
bool lockscreen_prompt;
|
bool lockscreen_prompt;
|
||||||
bool lockscreen_transparent;
|
bool lockscreen_transparent;
|
||||||
|
bool lockscreen_skip_animation;
|
||||||
BatteryIcon battery_icon;
|
BatteryIcon battery_icon;
|
||||||
bool status_icons;
|
bool status_icons;
|
||||||
bool bar_borders;
|
bool bar_borders;
|
||||||
|
Reference in New Issue
Block a user