Fix color cfg bugs with mini digits (timeline peek)
This commit is contained in:
+40
-14
@@ -2,8 +2,6 @@
|
||||
#include "settings.h"
|
||||
#include <pebble.h>
|
||||
|
||||
// TODO fix fg and mg color not applying to mini variants; implement configurable color for fill bars
|
||||
|
||||
// window statics
|
||||
static Window *s_main_window;
|
||||
static Layer *s_window_layer;
|
||||
@@ -26,10 +24,12 @@ static const uint16_t s_fuel_guage_x_pos = PBL_DISPLAY_WIDTH - 23;
|
||||
// settings statics
|
||||
static ClaySettings settings;
|
||||
static GColor s_applied_digits_mg = GColorDarkGray;
|
||||
static GColor s_applied_digits_mg_mini = GColorDarkGray;
|
||||
static GColor s_applied_e_f = GColorWhite;
|
||||
static GColor s_applied_c_h = GColorWhite;
|
||||
static GColor s_applied_hour = GColorWhite;
|
||||
static GColor s_applied_minute = GColorWhite;
|
||||
static GColor s_applied_minute_mini = GColorWhite;
|
||||
|
||||
// bitmap statics
|
||||
static GBitmap *s_hour_bitmaps[10];
|
||||
@@ -305,6 +305,8 @@ static void peek_did_change(void *context) {
|
||||
}
|
||||
|
||||
static void apply_settings() {
|
||||
bool force_update_minutes = false;
|
||||
|
||||
// LED&BG
|
||||
if (settings.UseCustomLED) {
|
||||
light_set_color(settings.ColorLED); // no-op on unsupported platforms
|
||||
@@ -340,14 +342,14 @@ static void apply_settings() {
|
||||
}
|
||||
}
|
||||
//// set bitmap color and mark layers dirty
|
||||
if (s_digit_mg_super8 && settings.ColorMGTime.argb != s_applied_digits_mg.argb) {
|
||||
replace_gbitmap_color(s_applied_digits_mg, settings.ColorMGTime, s_digit_mg_super8, NULL);
|
||||
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);
|
||||
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.ColorMGTime;
|
||||
s_applied_digits_mg = settings.ColorMGDigits;
|
||||
}
|
||||
} else {
|
||||
if (s_digit_mg_super8) {
|
||||
@@ -396,7 +398,7 @@ static void apply_settings() {
|
||||
}
|
||||
s_applied_minute = settings.ColorMinutes;
|
||||
}
|
||||
update_minute_1(); // immediately reference the new minute digits, as we would otherwise be using the stale pointers to the hours digits
|
||||
force_update_minutes = true;
|
||||
}
|
||||
} else {
|
||||
// if hours and minutes must be the same color...
|
||||
@@ -458,17 +460,37 @@ static void apply_settings() {
|
||||
s_minute_bitmaps_mini[7] = gbitmap_create_with_resource(RESOURCE_ID_7_M);
|
||||
s_minute_bitmaps_mini[8] = gbitmap_create_with_resource(RESOURCE_ID_8_M);
|
||||
s_minute_bitmaps_mini[9] = gbitmap_create_with_resource(RESOURCE_ID_9_M);
|
||||
s_applied_minute_mini = GColorWhite;
|
||||
}
|
||||
if (!s_digit_mg_super8_mini) {
|
||||
if (settings.ShowTimeMG) {
|
||||
//// set bitmap color
|
||||
if (s_applied_minute_mini.argb != settings.ColorMinutes.argb) {
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
replace_gbitmap_color(s_applied_minute_mini, settings.ColorMinutes, s_minute_bitmaps_mini[i], NULL);
|
||||
}
|
||||
s_applied_minute_mini = settings.ColorMinutes;
|
||||
}
|
||||
force_update_minutes = true;
|
||||
|
||||
// mg handling
|
||||
if (settings.ShowTimeMG) {
|
||||
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;
|
||||
}
|
||||
} else {
|
||||
if (!settings.ShowTimeMG) {
|
||||
gbitmap_destroy(s_digit_mg_super8_mini);
|
||||
s_digit_mg_super8_mini = NULL;
|
||||
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);
|
||||
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;
|
||||
}
|
||||
} else if (s_digit_mg_super8_mini) {
|
||||
gbitmap_destroy(s_digit_mg_super8_mini);
|
||||
s_digit_mg_super8_mini = NULL;
|
||||
}
|
||||
|
||||
peek_will_change(layer_get_unobstructed_bounds(s_window_layer), NULL);
|
||||
peek_change(0, NULL);
|
||||
peek_did_change(NULL);
|
||||
@@ -494,6 +516,10 @@ static void apply_settings() {
|
||||
}
|
||||
}
|
||||
|
||||
if (force_update_minutes) {
|
||||
update_minute_1();
|
||||
}
|
||||
|
||||
if (s_first_settings_application) {
|
||||
s_first_settings_application = false;
|
||||
}
|
||||
@@ -643,7 +669,7 @@ static void inbox_received_handler(DictionaryIterator *iter, void *context) {
|
||||
settings.ColorBarsHot = GColorFromHEX(color_bar_hot_tuple->value->int32);
|
||||
}
|
||||
if (color_time_mg_tuple) {
|
||||
settings.ColorMGTime = GColorFromHEX(color_time_mg_tuple->value->int32);
|
||||
settings.ColorMGDigits = GColorFromHEX(color_time_mg_tuple->value->int32);
|
||||
}
|
||||
if (color_letters_tuple) {
|
||||
settings.ColorLetters = GColorFromHEX(color_letters_tuple->value->int32);
|
||||
@@ -678,7 +704,7 @@ static void init() {
|
||||
settings.ColorBarsFill = GColorWhite;
|
||||
settings.ColorBarsCool = GColorDukeBlue;
|
||||
settings.ColorBarsHot = GColorRed;
|
||||
settings.ColorMGTime = GColorDarkGray;
|
||||
settings.ColorMGDigits = GColorDarkGray;
|
||||
settings.ColorLetters = GColorWhite;
|
||||
settings.ColorHours = GColorWhite;
|
||||
settings.ColorMinutes = GColorWhite;
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ typedef struct ClaySettings {
|
||||
GColor ColorBarsFill;
|
||||
GColor ColorBarsCool;
|
||||
GColor ColorBarsHot;
|
||||
GColor ColorMGTime;
|
||||
GColor ColorMGDigits;
|
||||
GColor ColorLetters;
|
||||
GColor ColorHours;
|
||||
GColor ColorMinutes;
|
||||
|
||||
Reference in New Issue
Block a user