Created
July 1, 2016 16:08
-
-
Save mddub/47abd51ae7cfe9d445376444f1bc7add to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ git diff src/battery_component.c | |
diff --git a/src/battery_component.c b/src/battery_component.c | |
index 9faf595..1d563b7 100644 | |
--- a/src/battery_component.c | |
+++ b/src/battery_component.c | |
@@ -31,6 +31,29 @@ static int battery_icon_id(BatteryChargeState charge_state) { | |
} | |
} | |
+#ifdef PBL_COLOR | |
+static GColor color_for_charge_state(BatteryChargeState charge_state) { | |
+ if (charge_state.is_charging) { | |
+ return GColorBlue; | |
+ } else if (charge_state.charge_percent <= 20) { | |
+ return GColorRed; | |
+ } else if (charge_state.charge_percent <= 60) { | |
+ return GColorYellow; | |
+ } else { | |
+ return GColorGreen; | |
+ } | |
+} | |
+ | |
+static void set_color_for_battery_level(GBitmap* bitmap, BatteryChargeState charge_state) { | |
+ GColor* palette = gbitmap_get_palette(bitmap); | |
+ for (uint8_t i = 0; i < ARRAY_LENGTH(palette); i++) { | |
+ if (gcolor_equal(palette[i], GColorBlack)) { | |
+ palette[i] = color_for_charge_state(charge_state); | |
+ } | |
+ } | |
+} | |
+#endif | |
+ | |
static void battery_handler(BatteryChargeState charge_state) { | |
if (get_prefs()->battery_as_number) { | |
@@ -48,7 +71,13 @@ static void battery_handler(BatteryChargeState charge_state) { | |
if (s_component->icon_bitmap != NULL) { | |
gbitmap_destroy(s_component->icon_bitmap); | |
} | |
+ | |
s_component->icon_bitmap = gbitmap_create_with_resource(battery_icon_id(charge_state)); | |
+#ifdef PBL_COLOR | |
+ // TODO make this a preference | |
+ set_color_for_battery_level(s_component->icon_bitmap, charge_state); | |
+#endif | |
+ | |
bitmap_layer_set_bitmap(s_component->icon_layer, s_component->icon_bitmap); | |
// bitmap_layer_set_bitmap is supposed to trigger this automatically. | |
@@ -91,7 +120,7 @@ BatteryComponent* battery_component_create(Layer *parent, int x, int y, bool ali | |
} else { | |
c->icon_layer = bitmap_layer_create(GRect(x, y + BATTERY_ICON_TOP_FUDGE, BATTERY_ICON_WIDTH, BATTERY_ICON_HEIGHT)); | |
- bitmap_layer_set_compositing_mode(c->icon_layer, element_comp_op(parent)); | |
+ bitmap_layer_set_compositing_mode(c->icon_layer, GCompOpSet); | |
layer_add_child(parent, bitmap_layer_get_layer(c->icon_layer)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment