Skip to content

Commit 81c7fdf

Browse files
committed
app list animation honor animation settings
1 parent 9530c22 commit 81c7fdf

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

fw/application/src/app/desktop/view/app_list_view.c

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "app_list_view.h"
22
#include "i18n/language.h"
33
#include "nrf_log.h"
4+
#include "settings.h"
45

56
#define ICON_WIDTH 32
67
#define ICON_HEIGHT 32
@@ -11,6 +12,8 @@
1112

1213
#define ICON_ANIM_LONG_TIME 500
1314
#define ICON_ANIM_SHORT_TIME 200
15+
16+
static bool mui_list_view_anim_enabled() { return settings_get_data()->anim_enabled; }
1417
static void app_list_view_icon_anim_exec(void *p, int32_t value) {
1518
app_list_view_t *p_view = (app_list_view_t *)p;
1619
p_view->icon_anim_value = value;
@@ -55,9 +58,9 @@ static void app_list_view_on_draw(mui_view_t *p_view, mui_canvas_t *p_canvas) {
5558
// mui_canvas_draw_xbm(p_canvas, icon_x, ICON_TOP_MARGIN, ICON_WIDTH, ICON_HEIGHT, app->icon_32x32->data);
5659
// mui_canvas_set_draw_color(p_canvas, 1);
5760
//}else{
58-
if(app->icon_32x32){
59-
mui_canvas_draw_xbm(p_canvas, icon_x, ICON_TOP_MARGIN, ICON_WIDTH, ICON_HEIGHT, app->icon_32x32->data );
60-
}
61+
if (app->icon_32x32) {
62+
mui_canvas_draw_xbm(p_canvas, icon_x, ICON_TOP_MARGIN, ICON_WIDTH, ICON_HEIGHT, app->icon_32x32->data);
63+
}
6164
//}
6265
}
6366
}
@@ -108,35 +111,36 @@ static void app_list_view_on_input(mui_view_t *p_view, mui_input_event_t *event)
108111
p_app_list_view->focus++;
109112
mui_anim_set_values(&p_app_list_view->icon_anim, -ICON_GROUP_WIDTH, 0);
110113
mui_anim_set_time(&p_app_list_view->icon_anim, ICON_ANIM_SHORT_TIME);
111-
mui_anim_start(&p_app_list_view->icon_anim);
112-
113114
} else {
114115
p_app_list_view->focus = 0;
115116
int32_t scroll_offset = 1 * size * ICON_GROUP_WIDTH;
116117
mui_anim_set_values(&p_app_list_view->icon_anim, scroll_offset, 0);
117118
mui_anim_set_time(&p_app_list_view->icon_anim, ICON_ANIM_LONG_TIME);
119+
}
120+
if (mui_list_view_anim_enabled()) {
118121
mui_anim_start(&p_app_list_view->icon_anim);
122+
mui_anim_set_values(&p_app_list_view->name_anim, FONT_HEIGHT, 0);
123+
mui_anim_start(&p_app_list_view->name_anim);
119124
}
120-
mui_anim_set_values(&p_app_list_view->name_anim, FONT_HEIGHT, 0);
121-
mui_anim_start(&p_app_list_view->name_anim);
122125
} break;
123126

124127
case INPUT_KEY_LEFT: {
125128
if (p_app_list_view->focus - 1 >= 0) {
126129
p_app_list_view->focus--;
127130
mui_anim_set_values(&p_app_list_view->icon_anim, ICON_GROUP_WIDTH, 0);
128131
mui_anim_set_time(&p_app_list_view->icon_anim, ICON_ANIM_SHORT_TIME);
129-
mui_anim_start(&p_app_list_view->icon_anim);
130132

131133
} else {
132134
p_app_list_view->focus = size - 1;
133135
int32_t scroll_offset = -1 * size * ICON_GROUP_WIDTH;
134136
mui_anim_set_values(&p_app_list_view->icon_anim, scroll_offset, 0);
135137
mui_anim_set_time(&p_app_list_view->icon_anim, ICON_ANIM_LONG_TIME);
138+
}
139+
if (mui_list_view_anim_enabled()) {
140+
mui_anim_set_values(&p_app_list_view->name_anim, FONT_HEIGHT, 0);
136141
mui_anim_start(&p_app_list_view->icon_anim);
142+
mui_anim_start(&p_app_list_view->name_anim);
137143
}
138-
mui_anim_set_values(&p_app_list_view->name_anim, FONT_HEIGHT, 0);
139-
mui_anim_start(&p_app_list_view->name_anim);
140144
}
141145

142146
break;
@@ -151,19 +155,29 @@ static void app_list_view_on_input(mui_view_t *p_view, mui_input_event_t *event)
151155

152156
static void app_list_view_on_enter(mui_view_t *p_view) {
153157
app_list_view_t *p_app_list_view = p_view->user_data;
154-
mui_anim_set_values(&p_app_list_view->icon_anim, -ICON_GROUP_WIDTH, 0);
155-
mui_anim_start(&p_app_list_view->icon_anim);
156-
mui_anim_set_values(&p_app_list_view->name_anim, -FONT_HEIGHT, 0);
157-
mui_anim_start(&p_app_list_view->name_anim);
158+
if (mui_list_view_anim_enabled()) {
159+
mui_anim_set_values(&p_app_list_view->icon_anim, -ICON_GROUP_WIDTH, 0);
160+
mui_anim_start(&p_app_list_view->icon_anim);
161+
mui_anim_set_values(&p_app_list_view->name_anim, -FONT_HEIGHT, 0);
162+
mui_anim_start(&p_app_list_view->name_anim);
163+
}
158164
}
159165

160-
static void app_list_view_on_exit(mui_view_t *p_view) {}
166+
static void app_list_view_on_exit(mui_view_t *p_view) {
167+
app_list_view_t *p_app_list_view = p_view->user_data;
168+
if (mui_list_view_anim_enabled()) {
169+
mui_anim_stop(&p_app_list_view->icon_anim);
170+
mui_anim_stop(&p_app_list_view->name_anim);
171+
}
172+
}
161173

162174
app_list_view_t *app_list_view_create() {
163175
app_list_view_t *p_app_list_view = mui_mem_malloc(sizeof(app_list_view_t));
164176

165177
ptr_array_init(p_app_list_view->items);
166178
p_app_list_view->focus = 0;
179+
p_app_list_view->icon_anim_value = 0;
180+
p_app_list_view->name_anim_value = 0;
167181

168182
mui_anim_init(&p_app_list_view->icon_anim);
169183
mui_anim_set_var(&p_app_list_view->icon_anim, p_app_list_view);

0 commit comments

Comments
 (0)