Initialize Tizen 2.3
[apps/home/b2-clocksetting.git] / src / setting_indicator_util.c
1 /*
2  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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_indicator_util.h"
22
23 void indicator_vconf_changed_cb(keynode_t *node, void *data)
24 {
25         appdata *ad = data;
26         
27         if (!ad) {
28                 ERR("appdata is null!!");
29                 return;
30         }
31
32         Evas_Object *layout = NULL;
33
34         layout = elm_object_item_part_content_get(elm_genlist_first_item_get(ad->main_genlist), "elm.icon");
35         indicator_view_update(layout);
36 }
37
38 void _indicator_set_BT_icon(keynode_t *node, void *data)
39 {
40         Evas_Object *layout = data;
41         int isBTOn = 0, sap_connected = 0, headset_connected = 0;
42
43         if(vconf_get_int(VCONFKEY_BT_STATUS, &isBTOn) != 0) {
44                 DBG("vconf_get_int() failed");
45                 isBTOn = 0;
46         }
47
48         elm_object_signal_emit(layout, "hideHeadset", "img.headset");
49
50         if(isBTOn) {
51                 vconf_get_bool(VCONFKEY_WMS_WMANAGER_CONNECTED, &sap_connected);
52                 DBG("SAP conntected : %d", sap_connected);
53                 if (sap_connected == 0) {
54                         elm_object_signal_emit(layout, "showUnconnctedBTicon", "img.bluetooth");
55                 } else {
56                         elm_object_signal_emit(layout, "showConnectedBTicon", "img.bluetooth");
57                 }
58                 vconf_get_int(VCONFKEY_BT_DEVICE, &headset_connected);
59                 DBG("Heaadset connected : %x", headset_connected);
60                 if (headset_connected & VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED) {
61                         elm_object_signal_emit(layout, "showHeadset", "img.headset");
62                 } else {
63                         elm_object_signal_emit(layout, "hideHeadset", "img.headset");
64                 }
65         } else {
66                 elm_object_signal_emit(layout, "hideBTicon", "img.bluetooth");
67                 elm_object_signal_emit(layout, "hideHeadset", "img.headset");
68         }
69 }
70
71 void _indicator_set_battery_icon(keynode_t *node, void *data)
72 {
73         int battery_level = 100;
74         int is_battery_display = -1;
75         char buf[1024] = {0,};
76         char buf2[5] = {0,};
77         Evas_Object *icon = NULL;
78         int is_emergency = 0;
79
80         Evas_Object *layout = data;
81         
82         icon = elm_object_part_content_get(layout, "sw.battery");
83         if(icon == NULL) {
84                 icon = elm_layout_add(layout);
85                 elm_layout_file_set(icon, EDJE_PATH, "setting/indicator/battery_icon");
86                 evas_object_size_hint_weight_set (icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
87                 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
88                 elm_object_part_content_set(layout, "sw.battery", icon);
89         }
90
91         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_level);
92         vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &is_battery_display);
93         if(is_battery_display) {
94                 char *level = _get_strnum_from_icu(battery_level);
95                 DBG("%s %d", level, strlen(level));
96                 if(strlen(level) > 6) {
97                         snprintf(buf, sizeof(buf)-1, "%d%%", battery_level);
98                 } else {
99                         snprintf(buf, sizeof(buf)-1, "%s%%", level);
100                 }
101                 elm_object_part_text_set(layout, "txt.battery", buf);
102                 free(level);
103         } else {
104                 elm_object_part_text_set(layout, "txt.battery", "");
105         }
106
107         int is_charged;
108         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &is_charged);
109         DBG("battery_level: %d, isCharging: %d", battery_level, is_charged);
110         if(is_charged == 1) {
111                 snprintf(buf, sizeof(buf)-1, "change_charging_level_");
112         } else if(is_charged == 0) {
113                 snprintf(buf, sizeof(buf)-1, "change_level_");
114         } else if(is_charged == -1) {
115                 DBG("Battery charging has problem");
116                 elm_object_part_text_set(layout, "txt.battery", "");
117                 snprintf(buf, sizeof(buf)-1, "change_level_");
118         }
119         battery_level /= 5;
120         battery_level *= 5;
121         snprintf(buf2, sizeof(buf2)-1, "%02d", battery_level);
122         strncat(buf, buf2, sizeof(buf)-1);
123         DBG("battery file : %s", buf);
124         elm_object_signal_emit(icon, buf, "img.battery");
125         elm_object_signal_emit(layout, "showBattery", "sw.battery");
126 }
127
128 void indicator_view_update(Evas_Object *layout)
129 {
130         /* BT */
131         _indicator_set_BT_icon(NULL, layout);
132
133         /* battery */
134         _indicator_set_battery_icon(NULL, layout);
135 }
136
137 void indicator_set_vconf_changed_cb(void *data)
138 {
139         vconf_notify_key_changed(VCONFKEY_WMS_WMANAGER_CONNECTED, indicator_vconf_changed_cb, data);
140         vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, indicator_vconf_changed_cb, data);
141         vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, indicator_vconf_changed_cb, data);
142         vconf_notify_key_changed(VCONFKEY_BT_DEVICE, indicator_vconf_changed_cb, data);
143 }
144
145 void indicator_unset_vconf_changed_cb()
146 {
147         vconf_ignore_key_changed(VCONFKEY_WMS_WMANAGER_CONNECTED, indicator_vconf_changed_cb);
148         vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY, indicator_vconf_changed_cb);
149         vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, indicator_vconf_changed_cb);
150         vconf_ignore_key_changed(VCONFKEY_BT_DEVICE, indicator_vconf_changed_cb);
151 }
152
153