BadKB update interface and inputs

This commit is contained in:
Willy-JL
2023-03-02 02:15:16 +00:00
parent 148d245f1d
commit 5544099cbe
4 changed files with 28 additions and 12 deletions

View File

@@ -725,7 +725,7 @@ static uint32_t bad_kb_flags_get(uint32_t flags_mask, uint32_t timeout) {
furi_check((flags & FuriFlagError) == 0);
if(flags == 0) {
flags = furi_thread_flags_wait(flags_mask, FuriFlagWaitAny, timeout);
furi_check(((flags & FuriFlagError) == 0) || (flags == FuriFlagErrorTimeout));
furi_check(((flags & FuriFlagError) == 0) || (flags == (unsigned)FuriFlagErrorTimeout));
} else {
uint32_t state = furi_thread_flags_clear(flags);
furi_check((state & FuriFlagError) == 0);
@@ -834,7 +834,7 @@ static int32_t bad_kb_worker(void* context) {
WorkerEvtEnd | WorkerEvtDisconnect | WorkerEvtToggle,
FuriFlagWaitAny | FuriFlagNoClear,
1500);
if(flags == FuriFlagErrorTimeout) {
if(flags == (unsigned)FuriFlagErrorTimeout) {
// If nothing happened - start script execution
worker_state = BadKbStateRunning;
} else if(flags & WorkerEvtToggle) {

View File

@@ -16,10 +16,12 @@ bool bad_kb_scene_work_on_event(void* context, SceneManagerEvent event) {
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == InputKeyLeft) {
if(app->is_bt) {
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
} else {
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
if(bad_kb_is_idle_state(app->bad_kb_view)) {
if(app->is_bt) {
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigBt);
} else {
scene_manager_next_scene(app->scene_manager, BadKbSceneConfigUsb);
}
}
consumed = true;
} else if(event.event == InputKeyOk) {

View File

@@ -56,19 +56,15 @@ static void bad_kb_draw_callback(Canvas* canvas, void* _model) {
if(XTREME_ASSETS()->is_nsfw) {
elements_button_center(canvas, "Cum");
} else {
elements_button_center(canvas, "Start");
elements_button_center(canvas, "Run");
}
elements_button_left(canvas, "Config");
} else if((model->state.state == BadKbStateRunning) || (model->state.state == BadKbStateDelay)) {
elements_button_center(canvas, "Stop");
} else if(model->state.state == BadKbStateWillRun) {
elements_button_center(canvas, "Cancel");
}
if((model->state.state == BadKbStateNotConnected) || (model->state.state == BadKbStateIdle) ||
(model->state.state == BadKbStateDone)) {
elements_button_left(canvas, "Config");
}
if(model->state.state == BadKbStateNotConnected) {
canvas_draw_icon(canvas, 4, 26, &I_Clock_18x18);
canvas_set_font(canvas, FontPrimary);
@@ -236,3 +232,19 @@ void bad_kb_set_state(BadKb* bad_kb, BadKbState* st) {
},
true);
}
bool bad_kb_is_idle_state(BadKb* bad_kb) {
bool is_idle = false;
with_view_model(
bad_kb->view,
BadKbModel * model,
{
if((model->state.state == BadKbStateIdle) ||
(model->state.state == BadKbStateDone) ||
(model->state.state == BadKbStateNotConnected)) {
is_idle = true;
}
},
false);
return is_idle;
}

View File

@@ -19,3 +19,5 @@ void bad_kb_set_file_name(BadKb* bad_kb, const char* name);
void bad_kb_set_layout(BadKb* bad_kb, const char* layout);
void bad_kb_set_state(BadKb* bad_kb, BadKbState* st);
bool bad_kb_is_idle_state(BadKb* bad_kb);