Initialize Tizen 2.3
[apps/home/settings.git] / setting-powersaving / src / setting-powersaving.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.1 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #include <setting-powersaving.h>
19
20 #ifndef UG_MODULE_API
21 #define UG_MODULE_API __attribute__ ((visibility("default")))
22 #endif
23
24 static void setting_powersaving_ug_cb_resize(void *data, Evas *e,
25                                              Evas_Object *obj,
26                                              void *event_info)
27 {
28         SettingPowersavingUG *ad = (SettingPowersavingUG *) data;
29         setting_view_update(&setting_view_powersaving_main, ad);
30 }
31
32 static void *setting_powersaving_ug_on_create(ui_gadget_h ug,
33                                               enum ug_mode mode, service_h service,
34                                               void *priv)
35 {
36         SETTING_TRACE_BEGIN;
37         setting_retvm_if((!priv), NULL, "!priv");
38
39         SettingPowersavingUG *powersavingUG = priv;
40         powersavingUG->ug = ug;
41         setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
42
43         powersavingUG->win_main_layout =
44             (Evas_Object *) ug_get_parent_layout(ug);
45         powersavingUG->win_get = (Evas_Object *) ug_get_window();
46
47         evas_object_show(powersavingUG->win_main_layout);
48         powersavingUG->evas =
49             evas_object_evas_get(powersavingUG->win_main_layout);
50
51         setting_retvm_if(powersavingUG->win_main_layout == NULL, NULL,
52                          "cannot get main window ");
53
54         /* register view node table */
55         setting_view_node_table_intialize();    /* do detail registering in __get_motion_view_to_load() */
56
57         /*  creating a view. */
58         setting_view_node_table_register(&setting_view_powersaving_main, NULL);
59         setting_view_node_table_register(&setting_view_powersaving_about,
60                                          &setting_view_powersaving_main);
61         setting_view_node_table_register(&setting_view_powersaving_customed,
62                                          &setting_view_powersaving_main);
63         setting_view_node_table_register(&setting_view_powersaving_brightness,
64                                          &setting_view_powersaving_customed);
65
66         setting_view_node_set_cur_view(&setting_view_powersaving_main);
67         setting_view_create(&setting_view_powersaving_main,
68                             (void *)powersavingUG);
69         evas_object_event_callback_add(powersavingUG->win_main_layout,
70                                        EVAS_CALLBACK_RESIZE,
71                                        setting_powersaving_ug_cb_resize,
72                                        powersavingUG);
73         return powersavingUG->ly_main;
74 }
75
76 static void setting_powersaving_ug_on_start(ui_gadget_h ug, service_h service,
77                                             void *priv)
78 {
79 }
80
81 static void setting_powersaving_ug_on_pause(ui_gadget_h ug, service_h service,
82                                             void *priv)
83 {
84 }
85
86 static void setting_powersaving_ug_on_resume(ui_gadget_h ug,
87                                              service_h service, void *priv)
88 {
89 }
90
91 static void setting_powersaving_ug_on_destroy(ui_gadget_h ug,
92                                               service_h service, void *priv)
93 {
94         SETTING_TRACE_BEGIN;
95         setting_retm_if((!priv), "!priv");
96         SettingPowersavingUG *powersavingUG = priv;
97
98         evas_object_event_callback_del(powersavingUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_powersaving_ug_cb_resize); /* fix flash issue for gallery */
99         powersavingUG->ug = ug;
100         /*  called when this shared gadget is terminated. similar with app_exit */
101         setting_view_destroy(&setting_view_powersaving_brightness,
102                              powersavingUG);
103         setting_view_destroy(&setting_view_powersaving_customed, powersavingUG);
104         setting_view_destroy(&setting_view_powersaving_about, powersavingUG);
105         setting_view_destroy(&setting_view_powersaving_main, powersavingUG);
106
107         if (NULL != ug_get_layout(powersavingUG->ug)) {
108                 evas_object_hide((Evas_Object *)
109                                  ug_get_layout(powersavingUG->ug));
110                 evas_object_del((Evas_Object *)
111                                 ug_get_layout(powersavingUG->ug));
112         }
113
114         SETTING_TRACE_END;
115 }
116
117 static void setting_powersaving_ug_on_message(ui_gadget_h ug,
118                                               service_h msg, service_h service,
119                                               void *priv)
120 {
121         SETTING_TRACE_BEGIN;
122 }
123
124 static void setting_powersaving_ug_on_event(ui_gadget_h ug,
125                                             enum ug_event event, service_h service,
126                                             void *priv)
127 {
128         SETTING_TRACE_BEGIN;
129         switch (event) {
130         case UG_EVENT_LOW_MEMORY:
131                 break;
132         case UG_EVENT_LOW_BATTERY:
133                 break;
134         case UG_EVENT_LANG_CHANGE:
135                 break;
136         case UG_EVENT_ROTATE_PORTRAIT:
137                 break;
138         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
139                 break;
140         case UG_EVENT_ROTATE_LANDSCAPE:
141                 break;
142         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
143                 break;
144         case UG_EVENT_REGION_CHANGE:
145                 break;
146         default:
147                 break;
148         }
149 }
150
151 static void setting_powersaving_ug_on_key_event(ui_gadget_h ug,
152                                                 enum ug_key_event event,
153                                                 service_h service, void *priv)
154 {
155         SETTING_TRACE_BEGIN;
156
157         switch (event) {
158         case UG_KEY_EVENT_END:
159                 break;
160         default:
161                 break;
162         }
163 }
164
165 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
166 {
167         SETTING_TRACE_BEGIN;
168         SettingPowersavingUG *powersavingUG =
169             calloc(1, sizeof(SettingPowersavingUG));
170         setting_retvm_if(!powersavingUG, -1,
171                          "Create SettingPowersavingUG obj failed");
172
173         ops->create = setting_powersaving_ug_on_create;
174         ops->start = setting_powersaving_ug_on_start;
175         ops->pause = setting_powersaving_ug_on_pause;
176         ops->resume = setting_powersaving_ug_on_resume;
177         ops->destroy = setting_powersaving_ug_on_destroy;
178         ops->message = setting_powersaving_ug_on_message;
179         ops->event = setting_powersaving_ug_on_event;
180         ops->key_event = setting_powersaving_ug_on_key_event;
181         ops->priv = powersavingUG;
182         ops->opt = UG_OPT_INDICATOR_ENABLE;
183
184         return 0;
185 }
186
187 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
188 {
189         SETTING_TRACE_BEGIN;
190         struct SettingPowersavingUG *powersavingUG;
191         setting_retm_if(!ops, "ops == NULL");
192
193         powersavingUG = ops->priv;
194         if (powersavingUG) {
195                 FREE(powersavingUG);
196         }
197 }
198
199 /* ***************************************************
200  *
201  *general func
202  *
203  ***************************************************/
204
205 void setting_powersaving_ug_exp_cb(void *data, Evas_Object *obj, void *event_info)
206 {
207         ret_if(NULL == data || NULL == event_info);
208         SETTING_TRACE_BEGIN;
209         SettingPowersavingUG *ad = (SettingPowersavingUG *) data;
210         Elm_Object_Item *parentItem = event_info;       /* parent item */
211         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
212         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
213
214         Evas_Object *rgd;
215         if (data_parentItem == ad->data_saving_at) {
216                 rgd = elm_radio_add(scroller);
217                 elm_radio_value_set(rgd, -1);
218
219                 setting_create_Gendial_exp_sub_field(scroller,
220                                                      &itc_1icon_1text_sub,
221                                                      NULL, NULL, parentItem,
222                                                      SWALLOW_Type_1RADIO, rgd,
223                                                      10,
224                                                      SETTING_POWERSAVING_AT_10_STR,
225                                                      NULL);
226
227                 setting_create_Gendial_exp_sub_field(scroller,
228                                                      &itc_1icon_1text_sub,
229                                                      NULL, NULL, parentItem,
230                                                      SWALLOW_Type_1RADIO, rgd,
231                                                      20,
232                                                      SETTING_POWERSAVING_AT_20_STR,
233                                                      NULL);
234
235                 setting_create_Gendial_exp_sub_field(scroller,
236                                                      &itc_1icon_1text_sub,
237                                                      NULL, NULL, parentItem,
238                                                      SWALLOW_Type_1RADIO, rgd,
239                                                      30,
240                                                      SETTING_POWERSAVING_AT_30_STR,
241                                                      NULL);
242
243                 setting_create_Gendial_exp_sub_field(scroller,
244                                                      &itc_1icon_1text_sub,
245                                                      NULL, NULL, parentItem,
246                                                      SWALLOW_Type_1RADIO, rgd,
247                                                      40,
248                                                      SETTING_POWERSAVING_AT_40_STR,
249                                                      NULL);
250
251                 setting_create_Gendial_exp_sub_field(scroller,
252                                                      &itc_1icon_1text_sub,
253                                                      NULL, NULL, parentItem,
254                                                      SWALLOW_Type_1RADIO, rgd,
255                                                      50,
256                                                      SETTING_POWERSAVING_AT_50_STR,
257                                                      NULL);
258                 setting_update_chk_status(rgd,data_parentItem->int_slp_setting_binded);
259         }
260         else if (data_parentItem == ad->data_screen_timeout) {
261                 rgd = elm_radio_add(scroller);
262                 elm_radio_value_set(rgd, -1);
263
264                 setting_create_Gendial_exp_sub_field(scroller,
265                                                      &itc_1icon_1text_sub,
266                                                      NULL, NULL, parentItem,
267                                                      SWALLOW_Type_1RADIO, rgd,
268                                                      SETTING_BACKLIGHT_TIME_8SEC,
269                                                      "IDS_ST_BODY_8_SECONDS",
270                                                      NULL);
271
272                 setting_create_Gendial_exp_sub_field(scroller,
273                                                      &itc_1icon_1text_sub,
274                                                      NULL, NULL, parentItem,
275                                                      SWALLOW_Type_1RADIO, rgd,
276                                                      SETTING_BACKLIGHT_TIME_15SEC,
277                                                      "IDS_ST_BODY_15SEC", NULL);
278
279                 setting_create_Gendial_exp_sub_field(scroller,
280                                                      &itc_1icon_1text_sub,
281                                                      NULL, NULL, parentItem,
282                                                      SWALLOW_Type_1RADIO, rgd,
283                                                      SETTING_BACKLIGHT_TIME_30SEC,
284                                                      "IDS_ST_BODY_30SEC", NULL);
285
286                 setting_create_Gendial_exp_sub_field(scroller,
287                                                      &itc_1icon_1text_sub,
288                                                      NULL, NULL, parentItem,
289                                                      SWALLOW_Type_1RADIO, rgd,
290                                                      SETTING_BACKLIGHT_TIME_1MIN,
291                                                      "IDS_COM_BODY_1_MINUTE",
292                                                      NULL);
293
294                 setting_create_Gendial_exp_sub_field(scroller,
295                                                      &itc_1icon_1text_sub,
296                                                      NULL, NULL, parentItem,
297                                                      SWALLOW_Type_1RADIO, rgd,
298                                                      SETTING_BACKLIGHT_TIME_3MIN,
299                                                      "IDS_ST_BODY_3MINUTES",
300                                                      NULL);
301
302                 setting_create_Gendial_exp_sub_field(scroller,
303                                                      &itc_1icon_1text_sub,
304                                                      NULL, NULL, parentItem,
305                                                      SWALLOW_Type_1RADIO, rgd,
306                                                      SETTING_BACKLIGHT_TIME_10MIN,
307                                                      "IDS_ST_BODY_10_MINUTES",
308                                                      NULL);
309
310                 setting_update_chk_status(rgd,data_parentItem->int_slp_setting_binded);
311         }
312 }
313
314 char *setting_powersaving_ug_get_brightness_str()
315 {
316         int auto_value = 0;
317         int back_value = 10;
318         char str_back[MAX_DISPLAY_NAME_LEN_ON_UI + 1] = {0, };
319         vconf_get_bool(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_BRT_AUTO_STATUS, &auto_value); //if failed, keep intial value
320         vconf_get_int(VCONFKEY_SETAPPL_PWRSV_CUSTMODE_BRT_VALUE, &back_value);  //if failed, keep intial value
321         if (auto_value)
322         {
323                 snprintf(str_back, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", _("IDS_COM_BODY_AUTOMATIC"));
324         }
325         else
326         {
327                 snprintf(str_back, MAX_DISPLAY_NAME_LEN_ON_UI, "%d%% %s", back_value, _(KeyStr_Brightness));
328         }
329         return (char *)g_strdup(str_back);
330 }
331
332
333 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
334 {
335         SETTING_TRACE_BEGIN;
336
337         int ret = 0;
338         ret += excuteCmd(SETTING_POSTINST_FILE, 1, "powersaving");
339         return ret;
340 }