mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 20:49:49 +04:00
Show a different RPC icon for expansion modules
This commit is contained in:
@@ -54,6 +54,7 @@ typedef enum {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
RpcSession* session;
|
RpcSession* session;
|
||||||
Gui* gui;
|
Gui* gui;
|
||||||
|
const Icon* icon;
|
||||||
|
|
||||||
// Receive part
|
// Receive part
|
||||||
ViewPort* virtual_display_view_port;
|
ViewPort* virtual_display_view_port;
|
||||||
@@ -380,10 +381,19 @@ static void rpc_system_gui_virtual_display_frame_process(const PB_Main* request,
|
|||||||
(void)session;
|
(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) {
|
static void rpc_active_session_icon_draw_callback(Canvas* canvas, void* context) {
|
||||||
UNUSED(context);
|
|
||||||
furi_assert(canvas);
|
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) {
|
void* rpc_system_gui_alloc(RpcSession* session) {
|
||||||
@@ -394,16 +404,16 @@ void* rpc_system_gui_alloc(RpcSession* session) {
|
|||||||
rpc_gui->session = session;
|
rpc_gui->session = session;
|
||||||
|
|
||||||
// Active session icon
|
// Active session icon
|
||||||
rpc_gui->rpc_session_active_viewport = view_port_alloc();
|
const RpcOwner owner = rpc_session_get_owner(rpc_gui->session);
|
||||||
view_port_set_width(rpc_gui->rpc_session_active_viewport, icon_get_width(&I_Rpc_active_7x8));
|
if(owner != RpcOwnerBle) {
|
||||||
view_port_draw_callback_set(
|
rpc_gui->icon = rpc_system_gui_get_owner_icon(owner);
|
||||||
rpc_gui->rpc_session_active_viewport, rpc_active_session_icon_draw_callback, session);
|
rpc_gui->rpc_session_active_viewport = view_port_alloc();
|
||||||
if(rpc_session_get_owner(rpc_gui->session) != RpcOwnerBle) {
|
view_port_set_width(rpc_gui->rpc_session_active_viewport, icon_get_width(rpc_gui->icon));
|
||||||
view_port_enabled_set(rpc_gui->rpc_session_active_viewport, true);
|
view_port_draw_callback_set(
|
||||||
} else {
|
rpc_gui->rpc_session_active_viewport, rpc_active_session_icon_draw_callback, rpc_gui);
|
||||||
view_port_enabled_set(rpc_gui->rpc_session_active_viewport, false);
|
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 = {
|
RpcHandler rpc_handler = {
|
||||||
.message_handler = NULL,
|
.message_handler = NULL,
|
||||||
@@ -445,8 +455,10 @@ void rpc_system_gui_free(void* context) {
|
|||||||
rpc_gui->virtual_display_not_empty = false;
|
rpc_gui->virtual_display_not_empty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
gui_remove_view_port(rpc_gui->gui, rpc_gui->rpc_session_active_viewport);
|
if(rpc_gui->rpc_session_active_viewport) {
|
||||||
view_port_free(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) {
|
if(rpc_gui->is_streaming) {
|
||||||
rpc_gui->is_streaming = false;
|
rpc_gui->is_streaming = false;
|
||||||
|
|||||||
BIN
assets/icons/StatusBar/Exp_module_connected_12x8.png
Normal file
BIN
assets/icons/StatusBar/Exp_module_connected_12x8.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Reference in New Issue
Block a user