FindMy: Refactors and improvements

- state handled reparately, decoupled from app
- better apple/samsung/unknown parsing and handling
- improve error handling
- add url to manifest + up stack size just in case
This commit is contained in:
Willy-JL
2024-03-08 20:53:00 +00:00
parent 09af215e75
commit 7c48c6164a
12 changed files with 176 additions and 106 deletions

View File

@@ -9,8 +9,8 @@ struct FindMyMain {
typedef struct {
bool active;
bool apple;
uint8_t interval;
FindMyType type;
} FindMyMainModel;
static void findmy_main_draw_callback(Canvas* canvas, void* _model) {
@@ -34,12 +34,17 @@ static void findmy_main_draw_callback(Canvas* canvas, void* _model) {
snprintf(interval_str, sizeof(interval_str), "Ping Interval: %ds", model->interval);
canvas_draw_str(canvas, 4, 62, interval_str);
canvas_set_font(canvas, FontPrimary);
if(model->apple) {
switch(model->type) {
case FindMyTypeApple:
canvas_draw_str(canvas, 4, 32, "Apple Network");
canvas_draw_icon(canvas, 80, 24, &I_Lock_7x8);
} else {
break;
case FindMyTypeSamsung:
canvas_draw_str(canvas, 4, 32, "Samsung Network");
canvas_draw_icon(canvas, 97, 24, &I_Lock_7x8);
break;
default:
break;
}
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 100, 61, "Config");
@@ -96,9 +101,9 @@ FindMyMain* findmy_main_alloc(FindMy* app) {
findmy_main->view,
FindMyMainModel * model,
{
model->active = app->beacon_active;
model->apple = app->apple;
model->interval = app->broadcast_interval;
model->active = app->state.beacon_active;
model->interval = app->state.broadcast_interval;
model->type = findmy_data_get_type(app->state.data);
},
false);
view_set_context(findmy_main->view, findmy_main);
@@ -138,8 +143,8 @@ void findmy_main_update_interval(FindMyMain* findmy_main, uint8_t interval) {
findmy_main->view, FindMyMainModel * model, { model->interval = interval; }, true);
}
void findmy_main_update_apple(FindMyMain* findmy_main, bool apple) {
void findmy_main_update_type(FindMyMain* findmy_main, FindMyType type) {
furi_assert(findmy_main);
with_view_model(
findmy_main->view, FindMyMainModel * model, { model->apple = apple; }, true);
findmy_main->view, FindMyMainModel * model, { model->type = type; }, true);
}

View File

@@ -26,4 +26,4 @@ void findmy_main_set_callback(FindMyMain* findmy_main, FindMyMainCallback callba
// To redraw when info changes
void findmy_main_update_active(FindMyMain* findmy_main, bool active);
void findmy_main_update_interval(FindMyMain* findmy_main, uint8_t interval);
void findmy_main_update_apple(FindMyMain* findmy_main, bool apple);
void findmy_main_update_type(FindMyMain* findmy_main, FindMyType type);