tizen 2.3.1 release
[apps/home/b2-clocksetting.git] / src / setting_indicator_util.c
1 /*
2  *  Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  *  Licensed under the Flora License, Version 1.0 (the License);
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://floralicense.org/license/
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an AS IS BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  *
16  */
17 #include <bluetooth.h>
18 #include <vconf-keys.h>
19 #include <vconf.h>
20
21 #include "setting_data_vconf.h"
22 #include "setting_indicator_util.h"
23
24 void indicator_vconf_changed_cb(keynode_t *node, void *data)
25 {
26         appdata *ad = data;
27
28         if (!ad) {
29                 ERR("appdata is null!!");
30                 return;
31         }
32
33         Evas_Object *layout = NULL;
34
35         layout = elm_object_item_part_content_get(elm_genlist_first_item_get(ad->main_genlist), "elm.icon");
36         indicator_view_update(layout);
37 }
38
39 void _indicator_set_BT_icon(keynode_t *node, void *data)
40 {
41         Evas_Object *layout = data;
42         int isBTOn = 0, sap_connected = 0, headset_connected = 0;
43
44         if (vconf_get_int(VCONFKEY_BT_STATUS, &isBTOn) != 0) {
45                 DBG("vconf_get_int() failed");
46                 isBTOn = 0;
47         }
48
49         elm_object_signal_emit(layout, "hideHeadset", "img.headset");
50
51         if (isBTOn) {
52                 vconf_get_bool(VCONFKEY_WMS_WMANAGER_CONNECTED, &sap_connected);
53                 DBG("SAP conntected : %d", sap_connected);
54                 if (sap_connected == 0) {
55                         elm_object_signal_emit(layout, "showUnconnctedBTicon", "img.bluetooth");
56                 } else {
57                         elm_object_signal_emit(layout, "showConnectedBTicon", "img.bluetooth");
58                 }
59                 vconf_get_int(VCONFKEY_BT_DEVICE, &headset_connected);
60                 DBG("Heaadset connected : %x", headset_connected);
61                 if (headset_connected & VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED) {
62                         elm_object_signal_emit(layout, "showHeadset", "img.headset");
63                 } else {
64                         elm_object_signal_emit(layout, "hideHeadset", "img.headset");
65                 }
66         } else {
67                 elm_object_signal_emit(layout, "hideBTicon", "img.bluetooth");
68                 elm_object_signal_emit(layout, "hideHeadset", "img.headset");
69         }
70 }
71
72 void _indicator_set_battery_icon(keynode_t *node, void *data)
73 {
74         int battery_level = 100;
75         int is_battery_display = -1;
76         char buf[1024] = {0,};
77         char buf2[5] = {0,};
78         Evas_Object *icon = NULL;
79         int is_emergency = 0;
80
81         Evas_Object *layout = data;
82
83         icon = elm_object_part_content_get(layout, "sw.battery");
84         if (icon == NULL) {
85                 icon = elm_layout_add(layout);
86                 elm_layout_file_set(icon, EDJE_PATH, "setting/indicator/battery_icon");
87                 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
88                 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
89                 elm_object_part_content_set(layout, "sw.battery", icon);
90         }
91
92         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_level);
93         vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &is_battery_display);
94         if (is_battery_display) {
95                 char *level = _get_strnum_from_icu(battery_level);
96                 if (level) {
97                         DBG("%s %d", level, strlen(level));
98                         if (strlen(level) > 6) {
99                                 snprintf(buf, sizeof(buf) - 1, "%d%%", battery_level);
100                         } else {
101                                 snprintf(buf, sizeof(buf) - 1, "%s%%", level);
102                         }
103                         elm_object_part_text_set(layout, "txt.battery", buf);
104                 }
105                 free(level);
106         } else {
107                 elm_object_part_text_set(layout, "txt.battery", "");
108         }
109
110         int is_charged;
111         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &is_charged);
112         DBG("battery_level: %d, isCharging: %d", battery_level, is_charged);
113         if (is_charged == 1) {
114                 snprintf(buf, sizeof(buf) - 1, "change_charging_level_");
115         } else if (is_charged == 0) {
116                 snprintf(buf, sizeof(buf) - 1, "change_level_");
117         } else if (is_charged == -1) {
118                 DBG("Battery charging has problem");
119                 elm_object_part_text_set(layout, "txt.battery", "");
120                 snprintf(buf, sizeof(buf) - 1, "change_level_");
121         }
122         battery_level /= 5;
123         battery_level *= 5;
124         snprintf(buf2, sizeof(buf2) - 1, "%02d", battery_level);
125         strncat(buf, buf2, sizeof(buf) - 1);
126         DBG("battery file : %s", buf);
127         elm_object_signal_emit(icon, buf, "img.battery");
128         elm_object_signal_emit(layout, "showBattery", "sw.battery");
129 }
130
131 void indicator_view_update(Evas_Object *layout)
132 {
133         /* BT */
134         _indicator_set_BT_icon(NULL, layout);
135
136         /* battery */
137         _indicator_set_battery_icon(NULL, layout);
138 }
139
140 void indicator_set_vconf_changed_cb(void *data)
141 {
142         register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, indicator_vconf_changed_cb, data);
143         register_vconf_changing(VCONFKEY_SYSMAN_BATTERY_CAPACITY, indicator_vconf_changed_cb, data);
144         register_vconf_changing(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, indicator_vconf_changed_cb, data);
145         register_vconf_changing(VCONFKEY_BT_DEVICE, indicator_vconf_changed_cb, data);
146 }
147
148 void indicator_unset_vconf_changed_cb()
149 {
150         unregister_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, indicator_vconf_changed_cb);
151         unregister_vconf_changing(VCONFKEY_SYSMAN_BATTERY_CAPACITY, indicator_vconf_changed_cb);
152         unregister_vconf_changing(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, indicator_vconf_changed_cb);
153         unregister_vconf_changing(VCONFKEY_BT_DEVICE, indicator_vconf_changed_cb);
154 }