Skip to content

Instantly share code, notes, and snippets.

@mddub
Created July 1, 2016 16:08
Show Gist options
  • Save mddub/47abd51ae7cfe9d445376444f1bc7add to your computer and use it in GitHub Desktop.
Save mddub/47abd51ae7cfe9d445376444f1bc7add to your computer and use it in GitHub Desktop.
$ 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