3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (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
9 * http://floralicense.org/license/
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.
18 #include <setting-powersaving.h>
21 #define UG_MODULE_API __attribute__ ((visibility("default")))
24 static void setting_powersaving_ug_cb_resize(void *data, Evas *e,
28 SettingPowersavingUG *ad = (SettingPowersavingUG *) data;
29 setting_view_update(&setting_view_powersaving_main, ad);
32 static void *setting_powersaving_ug_on_create(ui_gadget_h ug,
33 enum ug_mode mode, service_h service,
37 setting_retvm_if((!priv), NULL, "!priv");
39 SettingPowersavingUG *powersavingUG = priv;
40 powersavingUG->ug = ug;
41 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
43 powersavingUG->win_main_layout =
44 (Evas_Object *) ug_get_parent_layout(ug);
45 powersavingUG->win_get = (Evas_Object *) ug_get_window();
47 evas_object_show(powersavingUG->win_main_layout);
49 evas_object_evas_get(powersavingUG->win_main_layout);
51 setting_retvm_if(powersavingUG->win_main_layout == NULL, NULL,
52 "cannot get main window ");
54 /* register view node table */
55 setting_view_node_table_intialize(); /* do detail registering in __get_motion_view_to_load() */
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);
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,
71 setting_powersaving_ug_cb_resize,
73 return powersavingUG->ly_main;
76 static void setting_powersaving_ug_on_start(ui_gadget_h ug, service_h service,
81 static void setting_powersaving_ug_on_pause(ui_gadget_h ug, service_h service,
86 static void setting_powersaving_ug_on_resume(ui_gadget_h ug,
87 service_h service, void *priv)
91 static void setting_powersaving_ug_on_destroy(ui_gadget_h ug,
92 service_h service, void *priv)
95 setting_retm_if((!priv), "!priv");
96 SettingPowersavingUG *powersavingUG = priv;
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,
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);
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));
117 static void setting_powersaving_ug_on_message(ui_gadget_h ug,
118 service_h msg, service_h service,
124 static void setting_powersaving_ug_on_event(ui_gadget_h ug,
125 enum ug_event event, service_h service,
130 case UG_EVENT_LOW_MEMORY:
132 case UG_EVENT_LOW_BATTERY:
134 case UG_EVENT_LANG_CHANGE:
136 case UG_EVENT_ROTATE_PORTRAIT:
138 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
140 case UG_EVENT_ROTATE_LANDSCAPE:
142 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
144 case UG_EVENT_REGION_CHANGE:
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)
158 case UG_KEY_EVENT_END:
165 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
168 SettingPowersavingUG *powersavingUG =
169 calloc(1, sizeof(SettingPowersavingUG));
170 setting_retvm_if(!powersavingUG, -1,
171 "Create SettingPowersavingUG obj failed");
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;
187 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
190 struct SettingPowersavingUG *powersavingUG;
191 setting_retm_if(!ops, "ops == NULL");
193 powersavingUG = ops->priv;
199 /* ***************************************************
203 ***************************************************/
205 void setting_powersaving_ug_exp_cb(void *data, Evas_Object *obj, void *event_info)
207 ret_if(NULL == data || NULL == event_info);
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);
215 if (data_parentItem == ad->data_saving_at) {
216 rgd = elm_radio_add(scroller);
217 elm_radio_value_set(rgd, -1);
219 setting_create_Gendial_exp_sub_field(scroller,
220 &itc_1icon_1text_sub,
221 NULL, NULL, parentItem,
222 SWALLOW_Type_1RADIO, rgd,
224 SETTING_POWERSAVING_AT_10_STR,
227 setting_create_Gendial_exp_sub_field(scroller,
228 &itc_1icon_1text_sub,
229 NULL, NULL, parentItem,
230 SWALLOW_Type_1RADIO, rgd,
232 SETTING_POWERSAVING_AT_20_STR,
235 setting_create_Gendial_exp_sub_field(scroller,
236 &itc_1icon_1text_sub,
237 NULL, NULL, parentItem,
238 SWALLOW_Type_1RADIO, rgd,
240 SETTING_POWERSAVING_AT_30_STR,
243 setting_create_Gendial_exp_sub_field(scroller,
244 &itc_1icon_1text_sub,
245 NULL, NULL, parentItem,
246 SWALLOW_Type_1RADIO, rgd,
248 SETTING_POWERSAVING_AT_40_STR,
251 setting_create_Gendial_exp_sub_field(scroller,
252 &itc_1icon_1text_sub,
253 NULL, NULL, parentItem,
254 SWALLOW_Type_1RADIO, rgd,
256 SETTING_POWERSAVING_AT_50_STR,
258 setting_update_chk_status(rgd,data_parentItem->int_slp_setting_binded);
260 else if (data_parentItem == ad->data_screen_timeout) {
261 rgd = elm_radio_add(scroller);
262 elm_radio_value_set(rgd, -1);
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",
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);
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);
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",
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",
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",
310 setting_update_chk_status(rgd,data_parentItem->int_slp_setting_binded);
314 char *setting_powersaving_ug_get_brightness_str()
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
323 snprintf(str_back, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", _("IDS_COM_BODY_AUTOMATIC"));
327 snprintf(str_back, MAX_DISPLAY_NAME_LEN_ON_UI, "%d%% %s", back_value, _(KeyStr_Brightness));
329 return (char *)g_strdup(str_back);
333 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
338 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "powersaving");