Reduce code duplication in received handler
This commit is contained in:
+2
-2
@@ -29,7 +29,7 @@
|
||||
"PKJS_READY",
|
||||
"PKJS_TEMP_BAR_COUNT",
|
||||
"CLAY_ENABLE_PEEK",
|
||||
"CLAY_SHOW_TIME_MG",
|
||||
"CLAY_SHOW_DIGITS_MG",
|
||||
"CLAY_TRACK_BT_STATUS",
|
||||
"CLAY_DATE_TIMEOUT_SECS",
|
||||
"CLAY_LOW_FUEL_PERCENT",
|
||||
@@ -40,7 +40,7 @@
|
||||
"CLAY_COLOR_BAR_FILL",
|
||||
"CLAY_COLOR_BAR_COOL",
|
||||
"CLAY_COLOR_BAR_HOT",
|
||||
"CLAY_COLOR_TIME_MG",
|
||||
"CLAY_COLOR_DIGITS_MG",
|
||||
"CLAY_COLOR_LETTERS",
|
||||
"CLAY_COLOR_HOURS",
|
||||
"CLAY_COLOR_MINUTES",
|
||||
|
||||
+36
-62
@@ -108,7 +108,7 @@ static void recolor_digit_bitmaps(GBitmap **bitmaps, GColor *applied, GColor new
|
||||
static void bt_callback(bool connected) {
|
||||
GColor dst = connected ? settings.ColorHours : settings.ColorWarning;
|
||||
if (s_first_settings_application && connected && dst.argb == s_applied_hour.argb) {
|
||||
// at startup, s_applied_time_date.argb is GColorWhite
|
||||
// at startup, s_applied_hour.argb is GColorWhite
|
||||
// for those using white fg, do not pointlessly replace white at startup if that is the destination anyway
|
||||
return;
|
||||
}
|
||||
@@ -217,7 +217,7 @@ static void update_minute_1() {
|
||||
s_time_digits[3] = minute % 10;
|
||||
|
||||
if (!s_peek_active) {
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
bitmap_layer_set_bitmap(s_digit_mg_layers[2], s_digit_mg_super8);
|
||||
bitmap_layer_set_bitmap(s_digit_mg_layers[3], s_digit_mg_super8);
|
||||
}
|
||||
@@ -226,7 +226,7 @@ static void update_minute_1() {
|
||||
bitmap_layer_set_bitmap(s_digit_fg_layers[2], s_minute_bitmaps[s_time_digits[2]]);
|
||||
bitmap_layer_set_bitmap(s_digit_fg_layers[3], s_minute_bitmaps[s_time_digits[3]]);
|
||||
} else {
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
bitmap_layer_set_bitmap(s_digit_mg_layers[2], s_digit_mg_super8_mini);
|
||||
bitmap_layer_set_bitmap(s_digit_mg_layers[3], s_digit_mg_super8_mini);
|
||||
}
|
||||
@@ -294,7 +294,7 @@ static void peek_change(AnimationProgress progress, void *context) {
|
||||
if (!s_peek_active) {
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_fg_layers[2]), s_digit_grects[2]);
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_fg_layers[3]), s_digit_grects[3]);
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_mg_layers[2]), s_digit_grects[2]);
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_mg_layers[3]), s_digit_grects[3]);
|
||||
}
|
||||
@@ -302,7 +302,7 @@ static void peek_change(AnimationProgress progress, void *context) {
|
||||
uint8_t y = s_digit_grects[2].origin.y - 1;
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_fg_layers[2]), GRect(s_digit_grects[2].origin.x, y, 69, 54));
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_fg_layers[3]), GRect(s_digit_grects[3].origin.x, y, 69, 54));
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_mg_layers[2]), GRect(s_digit_grects[2].origin.x, y, 69, 54));
|
||||
layer_set_frame(bitmap_layer_get_layer(s_digit_mg_layers[3]), GRect(s_digit_grects[3].origin.x, y, 69, 54));
|
||||
}
|
||||
@@ -328,7 +328,7 @@ static void apply_settings() {
|
||||
window_set_background_color(s_main_window, settings.ColorBG);
|
||||
|
||||
// TIME MG
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
//// load bitmap if not already loaded
|
||||
if (!s_digit_mg_super8) {
|
||||
s_digit_mg_super8 = gbitmap_create_with_resource(RESOURCE_ID_SUPER8);
|
||||
@@ -354,14 +354,14 @@ static void apply_settings() {
|
||||
}
|
||||
}
|
||||
//// set bitmap color and mark layers dirty
|
||||
if (s_digit_mg_super8 && settings.ColorMGDigits.argb != s_applied_digits_mg.argb) {
|
||||
replace_gbitmap_color(s_applied_digits_mg, settings.ColorMGDigits, s_digit_mg_super8, NULL);
|
||||
if (s_digit_mg_super8 && settings.ColorDigitsMG.argb != s_applied_digits_mg.argb) {
|
||||
replace_gbitmap_color(s_applied_digits_mg, settings.ColorDigitsMG, s_digit_mg_super8, NULL);
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
if (s_digit_mg_layers[i]) {
|
||||
layer_mark_dirty(bitmap_layer_get_layer(s_digit_mg_layers[i]));
|
||||
}
|
||||
}
|
||||
s_applied_digits_mg = settings.ColorMGDigits;
|
||||
s_applied_digits_mg = settings.ColorDigitsMG;
|
||||
}
|
||||
} else {
|
||||
if (s_digit_mg_super8) {
|
||||
@@ -448,19 +448,19 @@ static void apply_settings() {
|
||||
force_update_minutes = true;
|
||||
|
||||
// mg handling
|
||||
if (settings.ShowTimeMG) {
|
||||
if (settings.ShowDigitsMG) {
|
||||
if (!s_digit_mg_super8_mini) {
|
||||
s_digit_mg_super8_mini = gbitmap_create_with_resource(RESOURCE_ID_SUPER8_M);
|
||||
s_applied_digits_mg_mini = GColorDarkGray;
|
||||
}
|
||||
if (settings.ColorMGDigits.argb != s_applied_digits_mg_mini.argb) {
|
||||
replace_gbitmap_color(s_applied_digits_mg_mini, settings.ColorMGDigits, s_digit_mg_super8_mini, NULL);
|
||||
if (settings.ColorDigitsMG.argb != s_applied_digits_mg_mini.argb) {
|
||||
replace_gbitmap_color(s_applied_digits_mg_mini, settings.ColorDigitsMG, s_digit_mg_super8_mini, NULL);
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
if (s_digit_mg_layers[i]) {
|
||||
layer_mark_dirty(bitmap_layer_get_layer(s_digit_mg_layers[i]));
|
||||
}
|
||||
}
|
||||
s_applied_digits_mg_mini = settings.ColorMGDigits;
|
||||
s_applied_digits_mg_mini = settings.ColorDigitsMG;
|
||||
}
|
||||
} else if (s_digit_mg_super8_mini) {
|
||||
gbitmap_destroy(s_digit_mg_super8_mini);
|
||||
@@ -568,6 +568,13 @@ static void main_window_unload() {
|
||||
}
|
||||
}
|
||||
|
||||
static void apply_color_from_tuple(DictionaryIterator *iter, uint32_t key, GColor *dest) {
|
||||
Tuple *t = dict_find(iter, key);
|
||||
if (!t)
|
||||
return;
|
||||
*dest = GColorFromHEX(t->value->int32);
|
||||
}
|
||||
|
||||
static void inbox_received_handler(DictionaryIterator *iter, void *context) {
|
||||
Tuple *ready_tuple = dict_find(iter, MESSAGE_KEY_PKJS_READY);
|
||||
if (ready_tuple) {
|
||||
@@ -592,27 +599,27 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) {
|
||||
|
||||
// CLAY SETTINGS
|
||||
Tuple *enable_peek_tuple = dict_find(iter, MESSAGE_KEY_CLAY_ENABLE_PEEK);
|
||||
Tuple *show_time_mg_tuple = dict_find(iter, MESSAGE_KEY_CLAY_SHOW_TIME_MG);
|
||||
Tuple *show_digits_mg_tuple = dict_find(iter, MESSAGE_KEY_CLAY_SHOW_DIGITS_MG);
|
||||
Tuple *track_bt_status_tuple = dict_find(iter, MESSAGE_KEY_CLAY_TRACK_BT_STATUS);
|
||||
Tuple *date_timeout_secs_tuple = dict_find(iter, MESSAGE_KEY_CLAY_DATE_TIMEOUT_SECS);
|
||||
Tuple *low_fuel_percent_tuple = dict_find(iter, MESSAGE_KEY_CLAY_LOW_FUEL_PERCENT);
|
||||
Tuple *use_custom_led_tuple = dict_find(iter, MESSAGE_KEY_CLAY_USE_CUSTOM_LED);
|
||||
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);
|
||||
Tuple *color_letters_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_LETTERS);
|
||||
Tuple *color_hours_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_HOURS);
|
||||
Tuple *color_minutes_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_MINUTES);
|
||||
Tuple *color_warning_tuple = dict_find(iter, MESSAGE_KEY_CLAY_COLOR_WARNING);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_LED, &settings.ColorLED);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_BG, &settings.ColorBG);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_BAR_MG, &settings.ColorBarsMG);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_BAR_FILL, &settings.ColorBarsFill);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_BAR_COOL, &settings.ColorBarsCool);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_BAR_HOT, &settings.ColorBarsHot);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_DIGITS_MG, &settings.ColorDigitsMG);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_LETTERS, &settings.ColorLetters);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_HOURS, &settings.ColorHours);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_MINUTES, &settings.ColorMinutes);
|
||||
apply_color_from_tuple(iter, MESSAGE_KEY_CLAY_COLOR_WARNING, &settings.ColorWarning);
|
||||
if (enable_peek_tuple) {
|
||||
settings.EnablePeek = enable_peek_tuple->value->uint8;
|
||||
}
|
||||
if (show_time_mg_tuple) {
|
||||
settings.ShowTimeMG = show_time_mg_tuple->value->uint8;
|
||||
if (show_digits_mg_tuple) {
|
||||
settings.ShowDigitsMG = show_digits_mg_tuple->value->uint8;
|
||||
}
|
||||
if (track_bt_status_tuple) {
|
||||
settings.TrackBTStatus = track_bt_status_tuple->value->uint8;
|
||||
@@ -626,39 +633,6 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) {
|
||||
if (use_custom_led_tuple) {
|
||||
settings.UseCustomLED = use_custom_led_tuple->value->uint8;
|
||||
}
|
||||
if (color_led_tuple) {
|
||||
settings.ColorLED = GColorFromHEX(color_led_tuple->value->int32);
|
||||
}
|
||||
if (color_bg_tuple) {
|
||||
settings.ColorBG = GColorFromHEX(color_bg_tuple->value->int32);
|
||||
}
|
||||
if (color_bar_mg_tuple) {
|
||||
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);
|
||||
}
|
||||
if (color_bar_hot_tuple) {
|
||||
settings.ColorBarsHot = GColorFromHEX(color_bar_hot_tuple->value->int32);
|
||||
}
|
||||
if (color_time_mg_tuple) {
|
||||
settings.ColorMGDigits = GColorFromHEX(color_time_mg_tuple->value->int32);
|
||||
}
|
||||
if (color_letters_tuple) {
|
||||
settings.ColorLetters = GColorFromHEX(color_letters_tuple->value->int32);
|
||||
}
|
||||
if (color_hours_tuple) {
|
||||
settings.ColorHours = GColorFromHEX(color_hours_tuple->value->int32);
|
||||
}
|
||||
if (color_minutes_tuple) {
|
||||
settings.ColorMinutes = GColorFromHEX(color_minutes_tuple->value->int32);
|
||||
}
|
||||
if (color_warning_tuple) {
|
||||
settings.ColorWarning = GColorFromHEX(color_warning_tuple->value->int32);
|
||||
}
|
||||
persist_write_data(STORAGE_KEY_SETTINGS, &settings, sizeof(settings));
|
||||
apply_settings();
|
||||
}
|
||||
@@ -670,7 +644,7 @@ static void init() {
|
||||
} else {
|
||||
settings.EnablePeek = true;
|
||||
settings.TrackBTStatus = false;
|
||||
settings.ShowTimeMG = false;
|
||||
settings.ShowDigitsMG = false;
|
||||
settings.UseCustomLED = false;
|
||||
settings.DateTimeoutSecs = 3;
|
||||
settings.LowFuelPercent = 20;
|
||||
@@ -680,7 +654,7 @@ static void init() {
|
||||
settings.ColorBarsFill = GColorWhite;
|
||||
settings.ColorBarsCool = GColorDukeBlue;
|
||||
settings.ColorBarsHot = GColorRed;
|
||||
settings.ColorMGDigits = GColorDarkGray;
|
||||
settings.ColorDigitsMG = GColorDarkGray;
|
||||
settings.ColorLetters = GColorWhite;
|
||||
settings.ColorHours = GColorWhite;
|
||||
settings.ColorMinutes = GColorWhite;
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@
|
||||
|
||||
typedef struct ClaySettings {
|
||||
bool EnablePeek;
|
||||
bool ShowTimeMG;
|
||||
bool ShowDigitsMG;
|
||||
bool TrackBTStatus;
|
||||
uint8_t DateTimeoutSecs;
|
||||
uint8_t LowFuelPercent;
|
||||
@@ -16,7 +16,7 @@ typedef struct ClaySettings {
|
||||
GColor ColorBarsFill;
|
||||
GColor ColorBarsCool;
|
||||
GColor ColorBarsHot;
|
||||
GColor ColorMGDigits;
|
||||
GColor ColorDigitsMG;
|
||||
GColor ColorLetters;
|
||||
GColor ColorHours;
|
||||
GColor ColorMinutes;
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ module.exports = [
|
||||
{
|
||||
"id": "time_mg_toggle",
|
||||
"type": "toggle",
|
||||
"messageKey": "CLAY_SHOW_TIME_MG",
|
||||
"messageKey": "CLAY_SHOW_DIGITS_MG",
|
||||
"defaultValue": false,
|
||||
"label": "Show time segments midground",
|
||||
"description": "Show or hide the unlit segments behind the time."
|
||||
@@ -172,7 +172,7 @@ module.exports = [
|
||||
{
|
||||
"id": "custom_color_mg_time",
|
||||
"type": "color",
|
||||
"messageKey": "CLAY_COLOR_TIME_MG",
|
||||
"messageKey": "CLAY_COLOR_DIGITS_MG",
|
||||
"defaultValue": "555555",
|
||||
"label": "Time segment midground color",
|
||||
"sunlight": true,
|
||||
|
||||
Reference in New Issue
Block a user