From 626fa8071631c94ed8572d5891e1ba39122d287d Mon Sep 17 00:00:00 2001 From: lokilee73 Date: Wed, 23 Nov 2016 15:01:16 +0900 Subject: [PATCH] remove low battery popup when it's recovered Change-Id: Ifecfde25d41484b5db5a4ad59936db047026c291 Signed-off-by: lokilee73 --- src/battery/battery-mobile.c | 35 +++++++++++++++++++++++++++++++++++ src/battery/battery-wearable.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/src/battery/battery-mobile.c b/src/battery/battery-mobile.c index 6159fd5..91635d6 100755 --- a/src/battery/battery-mobile.c +++ b/src/battery/battery-mobile.c @@ -87,12 +87,37 @@ static void charger_status_changed(keynode_t *key, void *data) terminate_if_no_popup(); } +static void battery_status_changed(keynode_t *key, void *data) +{ + int status; + const struct popup_ops *ops = data; + + status = vconf_keynode_get_int(key); + if (status < VCONFKEY_SYSMAN_BAT_LEVEL_HIGH) + return; + + if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed) < 0) + _E("Failed to release vconf key handler"); + + unload_simple_popup(ops); + + terminate_if_no_popup(); +} + static void unregister_charger_status_handler(void) { vconf_ignore_key_changed(VCONFKEY_SYSMAN_CHARGER_STATUS, charger_status_changed); } +static void unregister_battery_status_handler(void) +{ + vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed); +} + + static void register_charger_status_handler(const struct popup_ops *ops) { if (vconf_notify_key_changed(VCONFKEY_SYSMAN_CHARGER_STATUS, @@ -100,11 +125,20 @@ static void register_charger_status_handler(const struct popup_ops *ops) _E("Failed to register vconf key handler"); } +static void register_battery_status_handler(const struct popup_ops *ops) +{ + if (vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed, (void *)ops) < 0) + _E("Failed to register vconf key handler"); +} + static int lowbattery_launch(bundle *b, const struct popup_ops *ops) { unregister_charger_status_handler(); + unregister_battery_status_handler(); remove_other_lowbattery_popups(ops); register_charger_status_handler(ops); + register_battery_status_handler(ops); return 0; } @@ -112,6 +146,7 @@ static int lowbattery_launch(bundle *b, const struct popup_ops *ops) static void lowbattery_terminate(const struct popup_ops *ops) { unregister_charger_status_handler(); + unregister_battery_status_handler(); } static void poweroff_clicked(const struct popup_ops *ops) diff --git a/src/battery/battery-wearable.c b/src/battery/battery-wearable.c index ff8ef29..6a76f42 100755 --- a/src/battery/battery-wearable.c +++ b/src/battery/battery-wearable.c @@ -78,12 +78,36 @@ static void charger_status_changed(keynode_t *key, void *data) terminate_if_no_popup(); } +static void battery_status_changed(keynode_t *key, void *data) +{ + int status; + const struct popup_ops *ops = data; + + status = vconf_keynode_get_int(key); + if (status < VCONFKEY_SYSMAN_BAT_LEVEL_HIGH) + return; + + if (vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed) < 0) + _E("Failed to release vconf key handler"); + + unload_simple_popup(ops); + + terminate_if_no_popup(); +} + static void unregister_charger_status_handler(void) { vconf_ignore_key_changed(VCONFKEY_SYSMAN_CHARGER_STATUS, charger_status_changed); } +static void unregister_battery_status_handler(void) +{ + vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed); +} + static void register_charger_status_handler(const struct popup_ops *ops) { if (vconf_notify_key_changed(VCONFKEY_SYSMAN_CHARGER_STATUS, @@ -91,11 +115,20 @@ static void register_charger_status_handler(const struct popup_ops *ops) _E("Failed to register vconf key handler"); } +static void register_battery_status_handler(const struct popup_ops *ops) +{ + if (vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_LEVEL_STATUS, + battery_status_changed, (void *)ops) < 0) + _E("Failed to register vconf key handler"); +} + static int lowbattery_launch(bundle *b, const struct popup_ops *ops) { unregister_charger_status_handler(); + unregister_battery_status_handler(); remove_other_lowbattery_popups(ops); register_charger_status_handler(ops); + register_battery_status_handler(ops); return 0; } @@ -103,6 +136,7 @@ static int lowbattery_launch(bundle *b, const struct popup_ops *ops) static void lowbattery_terminate(const struct popup_ops *ops) { unregister_charger_status_handler(); + unregister_battery_status_handler(); } static void poweroff_clicked(const struct popup_ops *ops) -- 2.7.4