From ba617d792775337be7e315c11f015426fa32db94 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Sun, 28 Jun 2026 12:21:59 -0400 Subject: [PATCH] Make bar fill color configurable --- package.json | 1 + src/c/main.c | 15 ++++++++++----- src/c/settings.h | 3 ++- src/pkjs/config.js | 26 +++++++++++++++++--------- src/pkjs/customClay.js | 6 +++++- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 509f07f..ca85ee1 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "CLAY_COLOR_LED", "CLAY_COLOR_BG", "CLAY_COLOR_BAR_MG", + "CLAY_COLOR_BAR_FILL", "CLAY_COLOR_BAR_COOL", "CLAY_COLOR_BAR_HOT", "CLAY_COLOR_TIME_MG", diff --git a/src/c/main.c b/src/c/main.c index 60a0935..f204f04 100644 --- a/src/c/main.c +++ b/src/c/main.c @@ -117,7 +117,7 @@ static void batt_callback(BatteryChargeState state) { } static void temp_update_proc(Layer *layer, GContext *ctx) { - graphics_context_set_fill_color(ctx, GColorWhite); + graphics_context_set_fill_color(ctx, settings.ColorBarsFill); const uint8_t bar_count = s_temp_level; uint16_t bar_bottom_pos = 195; @@ -128,7 +128,7 @@ static void temp_update_proc(Layer *layer, GContext *ctx) { } static void fuel_update_proc(Layer *layer, GContext *ctx) { - graphics_context_set_fill_color(ctx, GColorWhite); + graphics_context_set_fill_color(ctx, settings.ColorBarsFill); uint16_t bar_bottom_pos = 195; for (uint8_t i = 0; i < s_batt_level; ++i) { @@ -139,7 +139,7 @@ static void fuel_update_proc(Layer *layer, GContext *ctx) { static void temp_fuel_mg_update_proc_helper(Layer *layer, GContext *ctx, bool isFuel) { GRect bounds = layer_get_bounds(layer); - graphics_context_set_fill_color(ctx, settings.ColorMGBars); + graphics_context_set_fill_color(ctx, settings.ColorBarsMG); graphics_fill_rect(ctx, bounds, 0, GCornerNone); if (isFuel) { graphics_context_set_stroke_color(ctx, settings.ColorBarsHot); @@ -598,6 +598,7 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) { Tuple *color_led_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_LED); Tuple *color_bg_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_BG); Tuple *color_bar_mg_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_BAR_MG); + Tuple *color_bar_fill_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_BAR_FILL); Tuple *color_bar_cool_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_BAR_COOL); Tuple *color_bar_hot_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_BAR_HOT); Tuple *color_time_mg_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_TIME_MG); @@ -630,7 +631,10 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) { settings.ColorBG = GColorFromHEX(color_bg_tuple->value->int32); } if (color_bar_mg_tuple) { - settings.ColorMGBars = GColorFromHEX(color_bar_mg_tuple->value->int32); + settings.ColorBarsMG = GColorFromHEX(color_bar_mg_tuple->value->int32); + } + if (color_bar_fill_tuple) { + settings.ColorBarsFill = GColorFromHEX(color_bar_fill_tuple->value->int32); } if (color_bar_cool_tuple) { settings.ColorBarsCool = GColorFromHEX(color_bar_cool_tuple->value->int32); @@ -670,7 +674,8 @@ static void init() { settings.LowFuelPercent = 20; settings.ColorLED = GColorWhite; settings.ColorBG = GColorBlue; - settings.ColorMGBars = GColorDarkGray; + settings.ColorBarsMG = GColorDarkGray; + settings.ColorBarsFill = GColorWhite; settings.ColorBarsCool = GColorDukeBlue; settings.ColorBarsHot = GColorRed; settings.ColorMGTime = GColorDarkGray; diff --git a/src/c/settings.h b/src/c/settings.h index acce5fc..00ee6f2 100644 --- a/src/c/settings.h +++ b/src/c/settings.h @@ -12,7 +12,8 @@ typedef struct ClaySettings { bool UseCustomLED; GColor ColorLED; GColor ColorBG; - GColor ColorMGBars; + GColor ColorBarsMG; + GColor ColorBarsFill; GColor ColorBarsCool; GColor ColorBarsHot; GColor ColorMGTime; diff --git a/src/pkjs/config.js b/src/pkjs/config.js index 1955232..ee74e3c 100644 --- a/src/pkjs/config.js +++ b/src/pkjs/config.js @@ -119,7 +119,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_BG", "defaultValue": "0000ff", "label": "Background color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_mg_bars", @@ -127,7 +127,15 @@ module.exports = [ "messageKey": "CLAY_COLOR_BAR_MG", "defaultValue": "aaaaaa", "label": "Bar midground color", - "sunlight": false, + "sunlight": true, + }, + { + "id": "custom_color_fill_bars", + "type": "color", + "messageKey": "CLAY_COLOR_BAR_FILL", + "defaultValue": "ffffff", + "label": "Bar fill color", + "sunlight": true, }, { "id": "custom_color_cool_bars", @@ -135,7 +143,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_BAR_COOL", "defaultValue": "0000aa", "label": "Bar cold/full color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_hot_bars", @@ -143,7 +151,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_BAR_HOT", "defaultValue": "ff0000", "label": "Bar hot/empty color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_mg_time", @@ -151,7 +159,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_TIME_MG", "defaultValue": "555555", "label": "Time segment midground color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_letters", @@ -159,7 +167,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_LETTERS", "defaultValue": "ffffff", "label": "Letters (C/H/E/F) color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_hours", @@ -167,7 +175,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_HOURS", "defaultValue": "ffffff", "label": "Hours color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_minutes", @@ -175,7 +183,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_MINUTES", "defaultValue": "ffffff", "label": "Minutes color", - "sunlight": false, + "sunlight": true, }, { "id": "custom_color_warning", @@ -183,7 +191,7 @@ module.exports = [ "messageKey": "CLAY_COLOR_WARNING", "defaultValue": "ffaa00", "label": "Warning indicator color", - "sunlight": false, + "sunlight": true, } ] }, diff --git a/src/pkjs/customClay.js b/src/pkjs/customClay.js index 7fb0426..22fd64f 100644 --- a/src/pkjs/customClay.js +++ b/src/pkjs/customClay.js @@ -21,10 +21,11 @@ module.exports = function (minified) { clayConfig.getItemById('custom_color_bg').set('000000'); clayConfig.getItemById('custom_color_mg_bars').set('555555'); + clayConfig.getItemById('custom_color_fill_bars').set('ffffff'); clayConfig.getItemById('custom_color_cool_bars').set('0000aa'); clayConfig.getItemById('custom_color_hot_bars').set('ff0000'); clayConfig.getItemById('custom_color_mg_time').set('555555'); - clayConfig.getItemById('custom_color_letters').set('ff0000'); + clayConfig.getItemById('custom_color_letters').set('ffffff'); clayConfig.getItemById('custom_color_hours').set('ff0000'); clayConfig.getItemById('custom_color_minutes').set('ff0000'); clayConfig.getItemById('custom_color_warning').set('ffaa00'); @@ -34,6 +35,7 @@ module.exports = function (minified) { clayConfig.getItemById('custom_color_bg').set('0000ff'); clayConfig.getItemById('custom_color_mg_bars').set('555555'); + clayConfig.getItemById('custom_color_fill_bars').set('ffffff'); clayConfig.getItemById('custom_color_cool_bars').set('0000aa'); clayConfig.getItemById('custom_color_hot_bars').set('ff0000'); clayConfig.getItemById('custom_color_mg_time').set('555555'); @@ -51,6 +53,7 @@ module.exports = function (minified) { clayConfig.getItemById('custom_color_led').show(); clayConfig.getItemById('custom_color_bg').show(); clayConfig.getItemById('custom_color_mg_bars').show(); + clayConfig.getItemById('custom_color_fill_bars').show(); clayConfig.getItemById('custom_color_cool_bars').show(); clayConfig.getItemById('custom_color_hot_bars').show(); clayConfig.getItemById('custom_color_mg_time').show(); @@ -65,6 +68,7 @@ module.exports = function (minified) { clayConfig.getItemById('custom_color_led').hide(); clayConfig.getItemById('custom_color_bg').hide(); clayConfig.getItemById('custom_color_mg_bars').hide(); + clayConfig.getItemById('custom_color_fill_bars').hide(); clayConfig.getItemById('custom_color_cool_bars').hide(); clayConfig.getItemById('custom_color_hot_bars').hide(); clayConfig.getItemById('custom_color_mg_time').hide();