From 3b71b8596cf836e7b2cc9660122150781c9b6446 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 23 Mar 2023 03:33:13 +0000 Subject: [PATCH] Initial lock menu rework --- .../desktop/scenes/desktop_scene_lock_menu.c | 85 +++--- .../services/desktop/views/desktop_events.h | 6 +- .../desktop/views/desktop_view_lock_menu.c | 256 ++++++++++++++---- .../desktop/views/desktop_view_lock_menu.h | 5 + .../ControlCenter/CC_Bluetooth_16x16.png | Bin 0 -> 639 bytes .../icons/ControlCenter/CC_DarkMode_16x16.png | Bin 0 -> 635 bytes .../ControlCenter/CC_LefthandedMode_16x16.png | Bin 0 -> 638 bytes assets/icons/ControlCenter/CC_Lock_16x16.png | Bin 0 -> 622 bytes .../icons/ControlCenter/CC_Settings_16x16.png | Bin 0 -> 666 bytes .../icons/ControlCenter/CC_Xtreme_16x16.png | Bin 0 -> 631 bytes assets/icons/Interface/DoorLeft_70x55.png | Bin 564 -> 0 bytes assets/icons/Interface/DoorRight_70x55.png | Bin 570 -> 0 bytes 12 files changed, 256 insertions(+), 96 deletions(-) create mode 100644 assets/icons/ControlCenter/CC_Bluetooth_16x16.png create mode 100644 assets/icons/ControlCenter/CC_DarkMode_16x16.png create mode 100644 assets/icons/ControlCenter/CC_LefthandedMode_16x16.png create mode 100644 assets/icons/ControlCenter/CC_Lock_16x16.png create mode 100644 assets/icons/ControlCenter/CC_Settings_16x16.png create mode 100644 assets/icons/ControlCenter/CC_Xtreme_16x16.png delete mode 100644 assets/icons/Interface/DoorLeft_70x55.png delete mode 100644 assets/icons/Interface/DoorRight_70x55.png diff --git a/applications/services/desktop/scenes/desktop_scene_lock_menu.c b/applications/services/desktop/scenes/desktop_scene_lock_menu.c index 26e40e974..f9d9008e7 100644 --- a/applications/services/desktop/scenes/desktop_scene_lock_menu.c +++ b/applications/services/desktop/scenes/desktop_scene_lock_menu.c @@ -4,6 +4,8 @@ #include #include #include +// #include +#include #include "../desktop_i.h" #include @@ -26,7 +28,7 @@ void desktop_scene_lock_menu_on_enter(void* context) { scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 0); desktop_lock_menu_set_callback(desktop->lock_menu, desktop_scene_lock_menu_callback, desktop); desktop_lock_menu_set_pin_state(desktop->lock_menu, desktop->settings.pin_code.length > 0); - desktop_lock_menu_set_idx(desktop->lock_menu, 0); + desktop_lock_menu_set_idx(desktop->lock_menu, 3); view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewIdLockMenu); } @@ -55,52 +57,59 @@ bool desktop_scene_lock_menu_on_event(void* context, SceneManagerEvent event) { } } else if(event.type == SceneManagerEventTypeCustom) { switch(event.event) { + // case DesktopLockMenuEventPinLock: + // if(desktop->settings.pin_code.length > 0) { + // desktop_pin_lock(&desktop->settings); + // desktop_lock(desktop); + // } else { + // LoaderStatus status = + // loader_start(desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); + // if(status == LoaderStatusOk) { + // scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 1); + // } else { + // FURI_LOG_E(TAG, "Unable to start desktop settings"); + // } + // } + // consumed = true; + // break; + + // case DesktopLockMenuEventPinLockShutdown: + // if(desktop->settings.pin_code.length > 0) { + // desktop_pin_lock(&desktop->settings); + // desktop_lock(desktop); + // Power* power = furi_record_open(RECORD_POWER); + // furi_delay_ms(666); + // power_off(power); + // furi_record_close(RECORD_POWER); + // } else { + // LoaderStatus status = + // loader_start(desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); + // if(status == LoaderStatusOk) { + // scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 2); + // } else { + // FURI_LOG_E(TAG, "Unable to start desktop settings"); + // } + // } + // consumed = true; + // break; + + case DesktopLockMenuEventSettings: + // loader_start(desktop->loader, "Settings", NULL); + // view_dispatcher_switch_to_view(desktop->loader->view_dispatcher, LoaderMenuViewSettings); + consumed = true; + break; + case DesktopLockMenuEventLock: scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 0); desktop_lock(desktop); consumed = true; break; - case DesktopLockMenuEventPinLock: - if(desktop->settings.pin_code.length > 0) { - desktop_pin_lock(&desktop->settings); - desktop_lock(desktop); - } else { - LoaderStatus status = - loader_start(desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); - if(status == LoaderStatusOk) { - scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 1); - } else { - FURI_LOG_E(TAG, "Unable to start desktop settings"); - } - } + case DesktopLockMenuEventXtreme: + loader_start(desktop->loader, FAP_LOADER_APP_NAME, EXT_PATH("apps/.Main/xtreme_app.fap")); consumed = true; break; - case DesktopLockMenuEventPinLockShutdown: - if(desktop->settings.pin_code.length > 0) { - desktop_pin_lock(&desktop->settings); - desktop_lock(desktop); - Power* power = furi_record_open(RECORD_POWER); - furi_delay_ms(666); - power_off(power); - furi_record_close(RECORD_POWER); - } else { - LoaderStatus status = - loader_start(desktop->loader, "Desktop", DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG); - if(status == LoaderStatusOk) { - scene_manager_set_scene_state(desktop->scene_manager, DesktopSceneLockMenu, 2); - } else { - FURI_LOG_E(TAG, "Unable to start desktop settings"); - } - } - consumed = true; - break; - - case DesktopLockMenuEventXtremeSettings: - loader_start( - desktop->loader, FAP_LOADER_APP_NAME, EXT_PATH("apps/.Main/xtreme_app.fap")); - break; default: break; } diff --git a/applications/services/desktop/views/desktop_events.h b/applications/services/desktop/views/desktop_events.h index a17114ad2..34276041a 100644 --- a/applications/services/desktop/views/desktop_events.h +++ b/applications/services/desktop/views/desktop_events.h @@ -39,11 +39,9 @@ typedef enum { DesktopDebugEventSaveState, DesktopDebugEventExit, + DesktopLockMenuEventSettings, DesktopLockMenuEventLock, - DesktopLockMenuEventPinLock, - DesktopLockMenuEventPinLockShutdown, - DesktopLockMenuEventExit, - DesktopLockMenuEventXtremeSettings, + DesktopLockMenuEventXtreme, DesktopAnimationEventCheckAnimation, DesktopAnimationEventNewIdleAnimation, diff --git a/applications/services/desktop/views/desktop_view_lock_menu.c b/applications/services/desktop/views/desktop_view_lock_menu.c index f9530fe84..b92b5981c 100644 --- a/applications/services/desktop/views/desktop_view_lock_menu.c +++ b/applications/services/desktop/views/desktop_view_lock_menu.c @@ -1,15 +1,28 @@ #include #include #include +#include +#include #include "../desktop_i.h" #include "desktop_view_lock_menu.h" +static const NotificationSequence sequence_note_c = { + &message_note_c5, + &message_delay_100, + &message_sound_off, + NULL, +}; + typedef enum { + DesktopLockMenuIndexLefthandedMode, + DesktopLockMenuIndexSettings, + DesktopLockMenuIndexDarkMode, DesktopLockMenuIndexLock, - DesktopLockMenuIndexPinLock, - DesktopLockMenuIndexPinLockShutdown, - DesktopLockMenuIndexXtremeSettings, + DesktopLockMenuIndexBluetooth, + DesktopLockMenuIndexXtreme, + DesktopLockMenuIndexBrightness, + DesktopLockMenuIndexVolume, DesktopLockMenuIndexTotalCount } DesktopLockMenuIndex; @@ -42,36 +55,96 @@ void desktop_lock_menu_draw_callback(Canvas* canvas, void* model) { DesktopLockMenuViewModel* m = model; canvas_set_color(canvas, ColorBlack); - canvas_draw_icon(canvas, -57, 0 + STATUS_BAR_Y_SHIFT, &I_DoorLeft_70x55); - canvas_draw_icon(canvas, 116, 0 + STATUS_BAR_Y_SHIFT, &I_DoorRight_70x55); canvas_set_font(canvas, FontBatteryPercent); + int x, y, w, h; + bool selected, toggle; + bool enabled = false; + uint value = 0; + int total = 58; + const Icon* icon = NULL; for(size_t i = 0; i < DesktopLockMenuIndexTotalCount; ++i) { - const char* str = NULL; - - if(i == DesktopLockMenuIndexLock) { - str = "Lock"; - } else if(i == DesktopLockMenuIndexPinLock) { - if(m->pin_is_set) { - str = "Lock with PIN"; - } else { - str = "Set PIN"; - } - } else if(i == DesktopLockMenuIndexPinLockShutdown) { - if(m->pin_is_set) { - str = "Lock with PIN + Off"; - } else { - str = "Set PIN + Off"; - } - } else if(i == DesktopLockMenuIndexXtremeSettings) { - str = "Xtreme Settings"; + selected = m->idx == i; + toggle = i < 6; + if(toggle) { + x = 2 + 32 * (i / 2); + y = 2 + 32 * (i % 2); + w = 28; + h = 28; + enabled = false; + } else { + x = 98 + 16 * (i % 2); + y = 2; + w = 12; + h = 60; + value = 0; } - if(str) //-V547 - canvas_draw_str_aligned( - canvas, 64, 9 + (i * 12) + STATUS_BAR_Y_SHIFT, AlignCenter, AlignCenter, str); + switch(i) { + case DesktopLockMenuIndexLefthandedMode: + icon = &I_CC_LefthandedMode_16x16; + enabled = furi_hal_rtc_is_flag_set(FuriHalRtcFlagHandOrient); + break; + case DesktopLockMenuIndexSettings: + icon = &I_CC_Settings_16x16; + break; + case DesktopLockMenuIndexDarkMode: + icon = &I_CC_DarkMode_16x16; + enabled = XTREME_SETTINGS()->dark_mode; + break; + case DesktopLockMenuIndexLock: + icon = &I_CC_Lock_16x16; + break; + case DesktopLockMenuIndexBluetooth: + icon = &I_CC_Bluetooth_16x16; + enabled = m->lock_menu->bt->bt_settings.enabled; + break; + case DesktopLockMenuIndexXtreme: + icon = &I_CC_Xtreme_16x16; + break; + case DesktopLockMenuIndexBrightness: + icon = &I_Pin_star_7x7; + value = total - m->lock_menu->notification->settings.display_brightness * total; + break; + case DesktopLockMenuIndexVolume: + icon = &I_Volup_8x6; + value = total - m->lock_menu->notification->settings.speaker_volume * total; + break; + default: + break; + } - if(m->idx == i) elements_frame(canvas, 15, 1 + (i * 12) + STATUS_BAR_Y_SHIFT, 98, 15); + if(selected) { + elements_bold_rounded_frame(canvas, x - 1, y - 1, w + 1, h + 1); + } else { + canvas_draw_rframe(canvas, x, y, w, h, 5); + } + + if(toggle) { + if(enabled) { + canvas_draw_rbox(canvas, x, y, w, h, 5); + canvas_set_color(canvas, ColorWhite); + } + canvas_draw_icon(canvas, x + (w - icon_get_width(icon)) / 2, y + (h - icon_get_height(icon)) / 2, icon); + if(enabled) { + canvas_set_color(canvas, ColorBlack); + } + } else { + canvas_draw_icon(canvas, x + (w - icon_get_width(icon)) / 2, y + (h - icon_get_height(icon)) / 2, icon); + canvas_set_color(canvas, ColorXOR); + canvas_draw_box(canvas, x + 1, y + 1 + value, w - 2, h - 2 - value); + if(selected) { + canvas_set_color(canvas, ColorBlack); + } else { + canvas_set_color(canvas, ColorWhite); + } + canvas_draw_dot(canvas, x + 1, y + 1); + canvas_draw_dot(canvas, x + 1, y + h - 2); + canvas_draw_dot(canvas, x + w - 2, y + 1); + canvas_draw_dot(canvas, x + w - 2, y + h - 2); + canvas_set_color(canvas, ColorBlack); + canvas_draw_rframe(canvas, x, y, w, h, 5); + } } } @@ -86,47 +159,113 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) { DesktopLockMenuView* lock_menu = context; uint8_t idx = 0; - bool consumed = false; - bool update = false; + bool consumed = true; with_view_model( lock_menu->view, DesktopLockMenuViewModel * model, { if((event->type == InputTypeShort) || (event->type == InputTypeRepeat)) { - if(event->key == InputKeyUp) { - if(model->idx == 0) { - model->idx = DesktopLockMenuIndexTotalCount - 1; - } else { - model->idx = CLAMP(model->idx - 1, DesktopLockMenuIndexTotalCount - 1, 0); + if(model->idx < 6) { + if(event->key == InputKeyUp || event->key == InputKeyDown) { + if(model->idx % 2) { + model->idx--; + } else { + model->idx++; + } + } else if(event->key == InputKeyLeft) { + if(model->idx < 2) { + model->idx = 7; + } else { + model->idx -= 2; + } + } else if(event->key == InputKeyRight) { + if(model->idx >= 4) { + model->idx = 6; + } else { + model->idx += 2; + } } - update = true; - consumed = true; - } else if(event->key == InputKeyDown) { - if(model->idx == DesktopLockMenuIndexTotalCount - 1) { - model->idx = 0; - } else { - model->idx = CLAMP(model->idx + 1, DesktopLockMenuIndexTotalCount - 1, 0); + } else { + if(event->key == InputKeyLeft) { + model->idx--; + } else if(event->key == InputKeyRight) { + if(model->idx >= 7) { + model->idx = 1; + } else { + model->idx++; + } } - update = true; - consumed = true; } } idx = model->idx; }, - update); + true); - if(event->key == InputKeyOk) { - if((idx == DesktopLockMenuIndexLock) && (event->type == InputTypeShort)) { - lock_menu->callback(DesktopLockMenuEventLock, lock_menu->context); - } else if((idx == DesktopLockMenuIndexPinLock) && (event->type == InputTypeShort)) { - lock_menu->callback(DesktopLockMenuEventPinLock, lock_menu->context); - } else if((idx == DesktopLockMenuIndexPinLockShutdown) && (event->type == InputTypeShort)) { - lock_menu->callback(DesktopLockMenuEventPinLockShutdown, lock_menu->context); - } else if((idx == DesktopLockMenuIndexXtremeSettings) && (event->type == InputTypeShort)) { - lock_menu->callback(DesktopLockMenuEventXtremeSettings, lock_menu->context); + UNUSED(idx); + if(event->key == InputKeyBack) { + consumed = false; + } else if(event->type == InputTypeShort) { + if(event->key == InputKeyOk) { + DesktopEvent event = 0; + switch(idx) { + case DesktopLockMenuIndexLefthandedMode: + if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagHandOrient)) { + furi_hal_rtc_reset_flag(FuriHalRtcFlagHandOrient); + } else { + furi_hal_rtc_set_flag(FuriHalRtcFlagHandOrient); + } + break; + case DesktopLockMenuIndexSettings: + event = DesktopLockMenuEventSettings; + break; + case DesktopLockMenuIndexDarkMode: + XTREME_SETTINGS()->dark_mode = !XTREME_SETTINGS()->dark_mode; + XTREME_SETTINGS_SAVE(); + break; + case DesktopLockMenuIndexLock: + event = DesktopLockMenuEventLock; + break; + case DesktopLockMenuIndexBluetooth: + lock_menu->bt->bt_settings.enabled = !lock_menu->bt->bt_settings.enabled; + bt_settings_save(&lock_menu->bt->bt_settings); + break; + case DesktopLockMenuIndexXtreme: + event = DesktopLockMenuEventXtreme; + break; + default: + break; + } + if(event) { + lock_menu->callback(event, lock_menu->context); + } + } else if(idx >= 6) { + int8_t offset = 0; + if(event->key == InputKeyUp) { + offset = 1; + } else if(event->key == InputKeyDown) { + offset = -1; + } + if(offset) { + float value; + switch(idx) { + case DesktopLockMenuIndexBrightness: + value = lock_menu->notification->settings.display_brightness + 0.05 * offset; + lock_menu->notification->settings.display_brightness = value < 0.00f ? 0.00f : (value > 1.00f ? 1.00f : value); + notification_message_save_settings(lock_menu->notification); + notification_message(lock_menu->notification, &sequence_display_backlight_on); + break; + case DesktopLockMenuIndexVolume: + value = lock_menu->notification->settings.speaker_volume + 0.05 * offset; + lock_menu->notification->settings.speaker_volume = value < 0.00f ? 0.00f : (value > 1.00f ? 1.00f : value); + notification_message_save_settings(lock_menu->notification); + notification_message(lock_menu->notification, &sequence_note_c); + break; + default: + break; + } + } } - consumed = true; } return consumed; @@ -134,8 +273,15 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) { DesktopLockMenuView* desktop_lock_menu_alloc() { DesktopLockMenuView* lock_menu = malloc(sizeof(DesktopLockMenuView)); + lock_menu->bt = furi_record_open(RECORD_BT); + lock_menu->notification = furi_record_open(RECORD_NOTIFICATION); lock_menu->view = view_alloc(); view_allocate_model(lock_menu->view, ViewModelTypeLocking, sizeof(DesktopLockMenuViewModel)); + with_view_model( + lock_menu->view, + DesktopLockMenuViewModel * model, + { model->lock_menu = lock_menu; }, + false); view_set_context(lock_menu->view, lock_menu); view_set_draw_callback(lock_menu->view, (ViewDrawCallback)desktop_lock_menu_draw_callback); view_set_input_callback(lock_menu->view, desktop_lock_menu_input_callback); @@ -147,5 +293,7 @@ void desktop_lock_menu_free(DesktopLockMenuView* lock_menu_view) { furi_assert(lock_menu_view); view_free(lock_menu_view->view); + furi_record_close(RECORD_NOTIFICATION); + furi_record_close(RECORD_BT); free(lock_menu_view); } diff --git a/applications/services/desktop/views/desktop_view_lock_menu.h b/applications/services/desktop/views/desktop_view_lock_menu.h index da144d1f3..f0548b2b1 100644 --- a/applications/services/desktop/views/desktop_view_lock_menu.h +++ b/applications/services/desktop/views/desktop_view_lock_menu.h @@ -2,6 +2,8 @@ #include #include "desktop_events.h" +#include +#include #define HINT_TIMEOUT 2 @@ -12,12 +14,15 @@ typedef void (*DesktopLockMenuViewCallback)(DesktopEvent event, void* context); struct DesktopLockMenuView { View* view; DesktopLockMenuViewCallback callback; + NotificationApp* notification; + Bt* bt; void* context; }; typedef struct { uint8_t idx; bool pin_is_set; + DesktopLockMenuView* lock_menu; } DesktopLockMenuViewModel; void desktop_lock_menu_set_callback( diff --git a/assets/icons/ControlCenter/CC_Bluetooth_16x16.png b/assets/icons/ControlCenter/CC_Bluetooth_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..67d642d4778e9b4efabebbf0b4800bc373482f11 GIT binary patch literal 639 zcmV-_0)YLAP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmTf3FbqPq?EY8Iz6xE5&g82EmBz=aDwrV&Cs_!FWEMbDiq-xTu)lhX z)xJGp8q#*qiTC?1RF-%OmHC&#X;3I5jBZxSKf0)+jEP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmTm(~_0000PbVXQnLvL+uWo~o;Lvm$dbY)~9cWHEJAV*0}P*;Ht7XSbN zWl2OqR4C8AQaKL5FbKo^|IhA#M1c}SmU;`=Tnq!HkIEdTt{Q$Vz VMG*PjM=$^Y002ovPDHLkV1k+|{$KzA literal 0 HcmV?d00001 diff --git a/assets/icons/ControlCenter/CC_LefthandedMode_16x16.png b/assets/icons/ControlCenter/CC_LefthandedMode_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8b4ca4855fa4c4cd616cd84569442e5a761413 GIT binary patch literal 638 zcmV-^0)hRBP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmTPL?0p98zCuoH;}CZmtor^m;G6CGzh_}(3eJnGkZeVnBisH=f7zem Y0kS(pAoRoQtpET307*qoM6N<$f|>3EAOHXW literal 0 HcmV?d00001 diff --git a/assets/icons/ControlCenter/CC_Lock_16x16.png b/assets/icons/ControlCenter/CC_Lock_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..13d5efcad66737cf8c6586725f2319998437f646 GIT binary patch literal 622 zcmV-!0+IcRP)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmTfqB?(SQHs|0Oas>B)cLxAz1-1_Q zuG|8<`Je!8jGmxTOmsSdYv!&4N#O>*Glje&>i!pIqDFgA04zBs7=$1>bpQYW07*qo IM6N<$f}_jx&Hw-a literal 0 HcmV?d00001 diff --git a/assets/icons/ControlCenter/CC_Settings_16x16.png b/assets/icons/ControlCenter/CC_Settings_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..defc2e41df1ccd7ed55eab8ca021aa655c1c1083 GIT binary patch literal 666 zcmV;L0%iS)P)EX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmT@&`(0*^ zaA&H5bdUs`Lb_g_PYMj--0QCUoarUEX>4Tx04R}tkv&MmKpe$iQ>7vm2MdZgWT=8*7Zq`=RVYG*P%E_RU~=gfG-*gu zTpR`0f`cE6RRAQH!!VcNtS#50?= z!FiuJ!b-AAd`>)J(glehxvqHp#<}RSz%wIeCOuCaAr^}rtaLCdnHuplaa7fG$``U8 ztDLtuYn2*n-IKpCoYz;DxlVHgNi1Rs5=1Ddp^OS_>Z=T$6botEPx$zUUB5&wg=bb^8^S!16O+6Uu^)hpQP8@ zTJ#9$-v%zO+nTZmT^7;|Wk9sO zHpJ#t%ZjKFHJcJww&e|!i;Uw`SPlMBjFZD<9J|Q6X!$g@sNv+>)R%rA;|}SeG#kF| RpIQI_002ovPDHLkV1lLD|EvH2 literal 0 HcmV?d00001 diff --git a/assets/icons/Interface/DoorLeft_70x55.png b/assets/icons/Interface/DoorLeft_70x55.png deleted file mode 100644 index 5df87ba3ce60e52f01ca93ef6c0a576e160890c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^Za{3##0(_Q*j*_GQY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIEak-ak_VsVc!u29#>zM zpe>@TFN4o(&Pl3vi+VSCalkpl<1-|z7e;zZcA9_tzMb)a%YyZXbT9S%slVv8B4(m! zQB<4odqHhcAcx1J*v z3=wN2`Z?28g|9oToszWvZ1Q%gU-3CQ&KexiQY$8Ov6r}C)7kWdtBQTr){lx(Ec=bC zJ~Q&3s$W>TMdNE9^TewT`{taq@-NsUbT#V5YvZir8#@}yYWbQ@gq^dQV=c1uO85p% zu7&!iM0PFS&CylzUF;;Uq{{b<33t9ZYoGO4a?5z)chwiB7d+mdKXNQ! zC8<`)MX5lF!N|bKP}jgj*T_7?z}(8z#LC1#+rYrez#wW)@(&aZx%nxXX_e?2jIB&e WAR26gp6CHJFnGH9xvXIqW5#zOL*~S)|zwMEwOP0bRhT=jq}YVsW~6vh}*d3IeXN zN31)4cfL?;Xp|4q@cp7B0AV+D3);<=5C+e>7`V7w%P2TFhy5iBW=eV*l|y0v``5 z7c}!;@?t5zz%zM8QuBkHi+-}31P=zw=en49-z^IZJ@Z9q)`F9UPbWS1RzI#F$spI2 z;icic(P-C974aXl^rIX@_2%)r-MJP0RY5XW^wsR|9a_Obu2*mWV~~Fy8TzMR-x3&@ zswJ)wB`Jv|saDBFsX&Us$iT=@*T6*A$UMZr+{(n<%G6TZz`)ADKvUeQ3`Ik3eoAIq bC8h=w6NrYd=Ch{&H86O(`njxgN@xNAhg#0O