mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-19 04:44:47 -07:00
GUI: Checkerboard overlay behind popup elements (#380)
* GUI: Checkerboard overlay behind popup elements Adds setting 'Popup Overlay' (default ON) which draws a checkerboard pattern behind popups, like the Archive actions menu, keypad/pin lock modal, and the varitemlist locked message. Gives the illusion of separation from the popup element and the background content and is an aesthetic improvement. * Refactor * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
This commit is contained in:
@@ -167,6 +167,9 @@ void desktop_lock_menu_draw_callback(Canvas* canvas, void* model) {
|
||||
}
|
||||
|
||||
if(m->show_lock_popup) {
|
||||
if(momentum_settings.popup_overlay) {
|
||||
canvas_draw_overlay(canvas);
|
||||
}
|
||||
canvas_set_font(canvas, FontSecondary);
|
||||
elements_bold_rounded_frame(canvas, 24, 4, 80, 56);
|
||||
canvas_draw_str_aligned(canvas, 64, 16, AlignCenter, AlignCenter, "Keypad Lock");
|
||||
|
||||
@@ -484,6 +484,22 @@ void canvas_draw_dot(Canvas* canvas, int32_t x, int32_t y) {
|
||||
u8g2_DrawPixel(&canvas->fb, x, y);
|
||||
}
|
||||
|
||||
void canvas_draw_overlay(Canvas* canvas) {
|
||||
furi_check(canvas);
|
||||
uint8_t original = canvas->fb.draw_color;
|
||||
canvas_set_color(canvas, ColorWhite);
|
||||
for(size_t j = 0; j < canvas->height; j++) {
|
||||
bool draw_pixel = (j % 2) == 0;
|
||||
for(size_t i = 0; i < canvas->width; i += 2) {
|
||||
size_t x = i + (draw_pixel ? 0 : 1);
|
||||
if(x < canvas->width) {
|
||||
canvas_draw_dot(canvas, x, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
canvas->fb.draw_color = original;
|
||||
}
|
||||
|
||||
void canvas_draw_box(Canvas* canvas, int32_t x, int32_t y, size_t width, size_t height) {
|
||||
furi_check(canvas);
|
||||
x += canvas->offset_x;
|
||||
|
||||
@@ -346,6 +346,12 @@ void canvas_draw_xbm_ex(
|
||||
*/
|
||||
void canvas_draw_dot(Canvas* canvas, int32_t x, int32_t y);
|
||||
|
||||
/** Draw overlay
|
||||
*
|
||||
* @param canvas Canvas instance
|
||||
*/
|
||||
void canvas_draw_overlay(Canvas* canvas);
|
||||
|
||||
/** Draw box of width, height at x,y
|
||||
*
|
||||
* @param canvas Canvas instance
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <assets_icons.h>
|
||||
#include <m-array.h>
|
||||
#include <stdint.h>
|
||||
#include <momentum/settings.h>
|
||||
|
||||
struct VariableItem {
|
||||
FuriString* label;
|
||||
@@ -146,6 +147,9 @@ static void variable_item_list_draw_callback(Canvas* canvas, void* _model) {
|
||||
elements_scrollbar(canvas, model->position, VariableItemArray_size(model->items));
|
||||
|
||||
if(model->locked_message_visible) {
|
||||
if(momentum_settings.popup_overlay) {
|
||||
canvas_draw_overlay(canvas);
|
||||
}
|
||||
canvas_set_color(canvas, ColorWhite);
|
||||
canvas_draw_box(canvas, 8, 10, 110, 48);
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
|
||||
Reference in New Issue
Block a user