mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-07 19:01:54 -07:00
Add experimental dark mode setting
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user