|
|
@@ -11,20 +11,32 @@
|
|
|
|
|
|
static void xremote_control_view_draw_vertical(Canvas* canvas, XRemoteViewModel* model)
|
|
|
{
|
|
|
- xremote_canvas_draw_frame(canvas, model->up_pressed, 17, 30, 31, "VOL +");
|
|
|
- xremote_canvas_draw_frame(canvas, model->left_pressed, 4, 50, 23, "< CH");
|
|
|
- xremote_canvas_draw_frame(canvas, model->right_pressed, 37, 50, 23, "CH >");
|
|
|
- xremote_canvas_draw_frame(canvas, model->down_pressed, 17, 70, 31, "VOL -");
|
|
|
- xremote_canvas_draw_button_wide(canvas, model->ok_pressed, 0, 95, "Mute", XRemoteIconEnter);
|
|
|
+ XRemoteAppContext *app_ctx = model->context;
|
|
|
+
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->up_pressed, 23, 30, &I_Chanup_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->down_pressed, 23, 72, &I_Chandown_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->left_pressed, 2, 51, &I_Voldown_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->right_pressed, 44, 51, &I_Volup_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->back_pressed, 2, 95, &I_Mute_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button(canvas, model->ok_pressed, 23, 51, XRemoteIconPlayPause);
|
|
|
+
|
|
|
+ if (app_ctx->app_settings->exit_behavior == XRemoteAppExitPress)
|
|
|
+ canvas_draw_icon(canvas, 22, 107, &I_Hold_Text_17x4);
|
|
|
}
|
|
|
|
|
|
static void xremote_control_view_draw_horizontal(Canvas* canvas, XRemoteViewModel* model)
|
|
|
{
|
|
|
- xremote_canvas_draw_frame(canvas, model->up_pressed, 17, 5, 31, "VOL +");
|
|
|
- xremote_canvas_draw_frame(canvas, model->left_pressed, 4, 25, 23, "< CH");
|
|
|
- xremote_canvas_draw_frame(canvas, model->right_pressed, 37, 25, 23, "CH >");
|
|
|
- xremote_canvas_draw_frame(canvas, model->down_pressed, 17, 45, 31, "VOL -");
|
|
|
- xremote_canvas_draw_button_size(canvas, model->ok_pressed, 70, 30, 44, "Mute", XRemoteIconEnter);
|
|
|
+ XRemoteAppContext *app_ctx = model->context;
|
|
|
+
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->up_pressed, 23, 2, &I_Chanup_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->down_pressed, 23, 44, &I_Chandown_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->left_pressed, 2, 23, &I_Voldown_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->right_pressed, 44, 23, &I_Volup_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button_png(canvas, model->back_pressed, 70, 33, &I_Mute_Icon_11x11);
|
|
|
+ xremote_canvas_draw_button(canvas, model->ok_pressed, 23, 23, XRemoteIconPlayPause);
|
|
|
+
|
|
|
+ if (app_ctx->app_settings->exit_behavior == XRemoteAppExitPress)
|
|
|
+ canvas_draw_icon(canvas, 90, 45, &I_Hold_Text_17x4);
|
|
|
}
|
|
|
|
|
|
static void xremote_control_view_draw_callback(Canvas* canvas, void* context)
|
|
|
@@ -49,37 +61,53 @@ static void xremote_control_view_process(XRemoteView* view, InputEvent* event)
|
|
|
xremote_view_get_view(view),
|
|
|
XRemoteViewModel* model,
|
|
|
{
|
|
|
- model->context = xremote_view_get_app_context(view);
|
|
|
+ XRemoteAppContext* app_ctx = xremote_view_get_app_context(view);
|
|
|
+ XRemoteAppExit exit = app_ctx->app_settings->exit_behavior;
|
|
|
InfraredRemoteButton* button = NULL;
|
|
|
+ model->context = app_ctx;
|
|
|
|
|
|
if (event->type == InputTypePress)
|
|
|
{
|
|
|
if (event->key == InputKeyOk)
|
|
|
{
|
|
|
- button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_MUTE);
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_PLAY_PAUSE);
|
|
|
if (xremote_view_press_button(view, button)) model->ok_pressed = true;
|
|
|
}
|
|
|
else if (event->key == InputKeyUp)
|
|
|
{
|
|
|
- button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_VOL_UP);
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_NEXT_CHAN);
|
|
|
if (xremote_view_press_button(view, button)) model->up_pressed = true;
|
|
|
}
|
|
|
else if (event->key == InputKeyDown)
|
|
|
{
|
|
|
- button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_VOL_DOWN);
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_PREV_CHAN);
|
|
|
if (xremote_view_press_button(view, button)) model->down_pressed = true;
|
|
|
}
|
|
|
else if (event->key == InputKeyLeft)
|
|
|
{
|
|
|
- button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_PREV_CHAN);
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_VOL_DOWN);
|
|
|
if (xremote_view_press_button(view, button)) model->left_pressed = true;
|
|
|
}
|
|
|
else if (event->key == InputKeyRight)
|
|
|
{
|
|
|
- button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_NEXT_CHAN);
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_VOL_UP);
|
|
|
if (xremote_view_press_button(view, button)) model->right_pressed = true;
|
|
|
}
|
|
|
}
|
|
|
+ else if (event->type == InputTypeShort &&
|
|
|
+ event->key == InputKeyBack &&
|
|
|
+ exit == XRemoteAppExitHold)
|
|
|
+ {
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_MUTE);
|
|
|
+ if (xremote_view_press_button(view, button)) model->back_pressed = true;
|
|
|
+ }
|
|
|
+ else if (event->type == InputTypeLong &&
|
|
|
+ event->key == InputKeyBack &&
|
|
|
+ exit == XRemoteAppExitPress)
|
|
|
+ {
|
|
|
+ button = xremote_view_get_button_by_name(view, XREMOTE_COMMAND_MUTE);
|
|
|
+ if (xremote_view_press_button(view, button)) model->back_pressed = true;
|
|
|
+ }
|
|
|
else if (event->type == InputTypeRelease)
|
|
|
{
|
|
|
if (event->key == InputKeyOk) model->ok_pressed = false;
|
|
|
@@ -87,6 +115,7 @@ static void xremote_control_view_process(XRemoteView* view, InputEvent* event)
|
|
|
else if (event->key == InputKeyDown) model->down_pressed = false;
|
|
|
else if (event->key == InputKeyLeft) model->left_pressed = false;
|
|
|
else if (event->key == InputKeyRight) model->right_pressed = false;
|
|
|
+ else if (event->key == InputKeyBack) model->back_pressed = false;
|
|
|
}
|
|
|
},
|
|
|
true);
|
|
|
@@ -96,7 +125,15 @@ static bool xremote_control_view_input_callback(InputEvent* event, void* context
|
|
|
{
|
|
|
furi_assert(context);
|
|
|
XRemoteView* view = (XRemoteView*)context;
|
|
|
- if (event->key == InputKeyBack) return false;
|
|
|
+ XRemoteAppContext* app_ctx = xremote_view_get_app_context(view);
|
|
|
+ XRemoteAppExit exit = app_ctx->app_settings->exit_behavior;
|
|
|
+
|
|
|
+ if (event->key == InputKeyBack &&
|
|
|
+ event->type == InputTypeShort &&
|
|
|
+ exit == XRemoteAppExitPress) return false;
|
|
|
+ else if (event->key == InputKeyBack &&
|
|
|
+ event->type == InputTypeLong &&
|
|
|
+ exit == XRemoteAppExitHold) return false;
|
|
|
|
|
|
xremote_control_view_process(view, event);
|
|
|
return true;
|