1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 04:34:43 +04:00

Show a different RPC icon for expansion modules

This commit is contained in:
Georgii Surkov
2024-02-06 18:12:13 +03:00
parent ff28c23f64
commit 2e05489a82
2 changed files with 25 additions and 13 deletions

View File

@@ -54,6 +54,7 @@ typedef enum {
typedef struct {
RpcSession* session;
Gui* gui;
const Icon* icon;
// Receive part
ViewPort* virtual_display_view_port;
@@ -380,10 +381,19 @@ static void rpc_system_gui_virtual_display_frame_process(const PB_Main* request,
(void)session;
}
static const Icon* rpc_system_gui_get_owner_icon(RpcOwner owner) {
switch(owner) {
case RpcOwnerUart:
return &I_Exp_module_connected_12x8;
default:
return &I_Rpc_active_7x8;
}
}
static void rpc_active_session_icon_draw_callback(Canvas* canvas, void* context) {
UNUSED(context);
furi_assert(canvas);
canvas_draw_icon(canvas, 0, 0, &I_Rpc_active_7x8);
RpcGuiSystem* rpc_gui = context;
canvas_draw_icon(canvas, 0, 0, rpc_gui->icon);
}
void* rpc_system_gui_alloc(RpcSession* session) {
@@ -394,16 +404,16 @@ void* rpc_system_gui_alloc(RpcSession* session) {
rpc_gui->session = session;
// Active session icon
rpc_gui->rpc_session_active_viewport = view_port_alloc();
view_port_set_width(rpc_gui->rpc_session_active_viewport, icon_get_width(&I_Rpc_active_7x8));
view_port_draw_callback_set(
rpc_gui->rpc_session_active_viewport, rpc_active_session_icon_draw_callback, session);
if(rpc_session_get_owner(rpc_gui->session) != RpcOwnerBle) {
view_port_enabled_set(rpc_gui->rpc_session_active_viewport, true);
} else {
view_port_enabled_set(rpc_gui->rpc_session_active_viewport, false);
const RpcOwner owner = rpc_session_get_owner(rpc_gui->session);
if(owner != RpcOwnerBle) {
rpc_gui->icon = rpc_system_gui_get_owner_icon(owner);
rpc_gui->rpc_session_active_viewport = view_port_alloc();
view_port_set_width(rpc_gui->rpc_session_active_viewport, icon_get_width(rpc_gui->icon));
view_port_draw_callback_set(
rpc_gui->rpc_session_active_viewport, rpc_active_session_icon_draw_callback, rpc_gui);
gui_add_view_port(
rpc_gui->gui, rpc_gui->rpc_session_active_viewport, GuiLayerStatusBarLeft);
}
gui_add_view_port(rpc_gui->gui, rpc_gui->rpc_session_active_viewport, GuiLayerStatusBarLeft);
RpcHandler rpc_handler = {
.message_handler = NULL,
@@ -445,8 +455,10 @@ void rpc_system_gui_free(void* context) {
rpc_gui->virtual_display_not_empty = false;
}
gui_remove_view_port(rpc_gui->gui, rpc_gui->rpc_session_active_viewport);
view_port_free(rpc_gui->rpc_session_active_viewport);
if(rpc_gui->rpc_session_active_viewport) {
gui_remove_view_port(rpc_gui->gui, rpc_gui->rpc_session_active_viewport);
view_port_free(rpc_gui->rpc_session_active_viewport);
}
if(rpc_gui->is_streaming) {
rpc_gui->is_streaming = false;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB