Add experimental dark mode setting

This commit is contained in:
Willy-JL
2023-02-27 19:12:48 +00:00
parent 991d49733f
commit 007447cc61
7 changed files with 48 additions and 6 deletions
@@ -2,6 +2,7 @@
enum VarItemListIndex {
VarItemListIndexSortDirsFirst,
VarItemListIndexDarkMode,
VarItemListIndexChangeDeviceName,
};
@@ -10,7 +11,7 @@ void xtreme_app_scene_misc_var_item_list_callback(void* context, uint32_t index)
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
static void xtreme_app_scene_misc_sort_folders_before_changed(VariableItem* item) {
static void xtreme_app_scene_misc_sort_dirs_first_changed(VariableItem* item) {
XtremeApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
@@ -18,6 +19,14 @@ static void xtreme_app_scene_misc_sort_folders_before_changed(VariableItem* item
app->save_settings = true;
}
static void xtreme_app_scene_misc_dark_mode_changed(VariableItem* item) {
XtremeApp* app = variable_item_get_context(item);
bool value = variable_item_get_current_value_index(item);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
XTREME_SETTINGS()->dark_mode = value;
app->save_settings = true;
}
void xtreme_app_scene_misc_on_enter(void* context) {
XtremeApp* app = context;
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
@@ -28,11 +37,20 @@ void xtreme_app_scene_misc_on_enter(void* context) {
var_item_list,
"Sort Dirs First",
2,
xtreme_app_scene_misc_sort_folders_before_changed,
xtreme_app_scene_misc_sort_dirs_first_changed,
app);
variable_item_set_current_value_index(item, xtreme_settings->sort_dirs_first);
variable_item_set_current_value_text(item, xtreme_settings->sort_dirs_first ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list,
"Dark Mode (Exp.)",
2,
xtreme_app_scene_misc_dark_mode_changed,
app);
variable_item_set_current_value_index(item, xtreme_settings->dark_mode);
variable_item_set_current_value_text(item, xtreme_settings->dark_mode ? "ON" : "OFF");
variable_item_list_add(var_item_list, "Change Device Name", 0, NULL, app);
variable_item_list_set_enter_callback(
+13 -1
View File
@@ -6,6 +6,7 @@
#include <furi_hal.h>
#include <stdint.h>
#include <u8g2_glue.h>
#include <xtreme/settings.h>
const CanvasFontParameters canvas_font_params[FontTotalNumber] = {
[FontPrimary] = {.leading_default = 12, .leading_min = 11, .height = 8, .descender = 2},
@@ -105,11 +106,22 @@ CanvasFontParameters* canvas_get_font_params(Canvas* canvas, Font font) {
void canvas_clear(Canvas* canvas) {
furi_assert(canvas);
u8g2_ClearBuffer(&canvas->fb);
if(XTREME_SETTINGS()->dark_mode) {
u8g2_FillBuffer(&canvas->fb);
} else {
u8g2_ClearBuffer(&canvas->fb);
}
}
void canvas_set_color(Canvas* canvas, Color color) {
furi_assert(canvas);
if(XTREME_SETTINGS()->dark_mode) {
if(color == ColorBlack) {
color = ColorWhite;
} else if(color == ColorWhite) {
color = ColorBlack;
}
}
u8g2_SetDrawColor(&canvas->fb, color);
}
+2 -1
View File
@@ -39,8 +39,9 @@ void XTREME_SETTINGS_LOAD() {
xtreme_settings->bar_borders = true; // ON
xtreme_settings->bar_background = false; // OFF
xtreme_settings->bad_bt = false; // USB
xtreme_settings->sort_dirs_first = true; // ON
xtreme_settings->butthurt_timer = 43200; // 12 H
xtreme_settings->sort_dirs_first = true; // ON
xtreme_settings->dark_mode = false; // OFF
}
}
}
+3 -2
View File
@@ -11,7 +11,7 @@
#define MAX_PACK_NAME_LEN 32
#define XTREME_SETTINGS_VERSION (3)
#define XTREME_SETTINGS_VERSION (4)
#define XTREME_SETTINGS_PATH INT_PATH(XTREME_SETTINGS_FILE_NAME)
#define XTREME_SETTINGS_MAGIC (0x69)
@@ -28,8 +28,9 @@ typedef struct {
bool bar_borders;
bool bar_background;
bool bad_bt;
bool sort_dirs_first;
int32_t butthurt_timer;
bool sort_dirs_first;
bool dark_mode;
} XtremeSettings;
XtremeSettings* XTREME_SETTINGS();
+1
View File
@@ -3431,6 +3431,7 @@ Function,-,u8g2_DrawUTF8Lines,u8g2_uint_t,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8
Function,-,u8g2_DrawVLine,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t"
Function,-,u8g2_DrawXBM,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*"
Function,-,u8g2_DrawXBMP,void,"u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*"
Function,-,u8g2_FillBuffer,void,u8g2_t*
Function,-,u8g2_FirstPage,void,u8g2_t*
Function,-,u8g2_GetFontSize,size_t,const uint8_t*
Function,-,u8g2_GetGlyphWidth,int8_t,"u8g2_t*, uint16_t"
1 entry status name type params
3431 Function - u8g2_DrawVLine void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t
3432 Function - u8g2_DrawXBM void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*
3433 Function - u8g2_DrawXBMP void u8g2_t*, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, u8g2_uint_t, const uint8_t*
3434 Function - u8g2_FillBuffer void u8g2_t*
3435 Function - u8g2_FirstPage void u8g2_t*
3436 Function - u8g2_GetFontSize size_t const uint8_t*
3437 Function - u8g2_GetGlyphWidth int8_t u8g2_t*, uint16_t
+1
View File
@@ -3548,6 +3548,7 @@ void u8g2_Setup_a2printer_384x240_f(
void u8g2_SendBuffer(u8g2_t* u8g2);
void u8g2_ClearBuffer(u8g2_t* u8g2);
void u8g2_FillBuffer(u8g2_t* u8g2);
void u8g2_SetBufferCurrTileRow(u8g2_t* u8g2, uint8_t row) U8G2_NOINLINE;
+8
View File
@@ -45,6 +45,14 @@ void u8g2_ClearBuffer(u8g2_t* u8g2) {
memset(u8g2->tile_buf_ptr, 0, cnt);
}
void u8g2_FillBuffer(u8g2_t* u8g2) {
size_t cnt;
cnt = u8g2_GetU8x8(u8g2)->display_info->tile_width;
cnt *= u8g2->tile_buf_height;
cnt *= 8;
memset(u8g2->tile_buf_ptr, 255, cnt);
}
/*============================================*/
static void u8g2_send_tile_row(u8g2_t* u8g2, uint8_t src_tile_row, uint8_t dest_tile_row) {