2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #include <Elementary.h>
21 #include <vconf-keys.h>
29 #define DEFAULT_BG_PATH "/opt/share/settings/Wallpapers/Home_default.jpg"
31 static Evas_Coord pos_down_y = 0;
33 void _set_win_property(Evas_Object * win)
38 LOGD("[Error:%s] Invalid argument: win is NULL", __func__);
41 xwin = elm_win_xwindow_get(win);
43 LOGD("[Error:%s] Cannot get xwindow", __func__);
47 ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_NOTIFICATION);
49 utilx_set_system_notification_level(ecore_x_display_get(), xwin, UTILX_NOTIFICATION_LEVEL_NORMAL);
51 utilx_set_window_opaque_state(ecore_x_display_get(), xwin, UTILX_OPAQUE_STATE_ON);
54 Evas_Object *_add_layout(Evas_Object *parent, const char *file, const char *group)
62 ly = elm_layout_add(parent);
66 r = elm_layout_file_set(ly, file, group);
71 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
78 Evas_Object *_make_top_layout(struct appdata *ad)
83 Evas_Object *eo = NULL;
84 Evas_Object *conform = NULL;
86 conform = elm_conformant_add(ad->win);
90 elm_object_style_set(conform, "indicator_overlap");
92 eo = _add_layout(conform, EDJEFILE, "lock-main");
96 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
98 elm_win_resize_object_add(ad->win, conform);
99 elm_object_content_set(conform, eo);
100 evas_object_show(conform);
101 evas_object_resize(eo, ad->win_w, ad->win_h);
106 Evas_Object *_make_slider(Evas_Object *parent)
108 Evas_Object *layout = NULL;
110 if (parent == NULL) {
111 LOCK_SCREEN_TRACE_DBG("The parent of slider is null");
115 layout = _add_layout(parent, EDJEFILE, "lock-slider");
116 if (layout == NULL) {
123 Evas_Object *_get_bg_image(Evas_Object *parent)
125 Evas_Object *bg = NULL;
127 Eina_Bool ret = EINA_FALSE;
132 if ((file = vconf_get_str(VCONFKEY_IDLE_LOCK_BGSET)) == NULL) {
133 file = vconf_get_str(VCONFKEY_BGSET);
136 bg = elm_icon_add(parent);
139 elm_icon_aspect_fixed_set(bg, EINA_FALSE);
142 ret = elm_icon_file_set(bg, file, NULL);
143 if (ret == EINA_FALSE) {
144 elm_icon_file_set(bg, DEFAULT_BG_PATH, NULL);
148 elm_icon_file_set(bg, DEFAULT_BG_PATH, NULL);
153 void lockscreen_info_show(struct appdata *ad)
159 edje_object_signal_emit(_EDJ(ad->ly_main), "show,text.area", "text.area");
160 edje_object_signal_emit(_EDJ(ad->ly_main), "show,sw.noti", "sw.noti");
161 edje_object_signal_emit(_EDJ(ad->ly_main), "show,sim.state", "sim.state");
162 edje_object_signal_emit(_EDJ(ad->ly_main), "show,rect.info", "rect.info");
163 if(ad->slider != NULL) {
164 evas_object_show(ad->slider);
168 void lockscreen_info_hide(struct appdata *ad)
174 edje_object_signal_emit(_EDJ(ad->ly_main), "hide,text.area", "text.area");
175 edje_object_signal_emit(_EDJ(ad->ly_main), "hide,sw.noti", "sw.noti");
176 edje_object_signal_emit(_EDJ(ad->ly_main), "hide,sim.state", "sim.state");
177 edje_object_signal_emit(_EDJ(ad->ly_main), "hide,rect.info", "rect.info");
178 if(ad->slider != NULL) {
179 evas_object_hide(ad->slider);
183 static void _set_sim_state(void *data)
185 struct appdata *ad = data;
193 int service_type = VCONFKEY_TELEPHONY_SVCTYPE_NONE;
195 if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
196 LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
199 ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));
201 LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
202 if (state != VCONFKEY_TELEPHONY_DISP_INVALID
203 && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
204 if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
205 buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);
206 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
209 if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
210 buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
211 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
214 edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", "");
219 static void _app_exit(void *data, Evas_Object *obj, const char *emission, const char *source)
221 struct appdata *ad = data;
225 static Eina_Bool _init_widget_cb(void *data)
227 struct appdata *ad = data;
228 LOGD("[ == %s == ]", __func__);
230 return ECORE_CALLBACK_CANCEL;
232 ad->slider = _make_slider(ad->ly_main);
233 evas_object_resize(ad->slider, ad->win_w, SLIDER_RATIO_H * ad->win_h);
234 evas_object_move(ad->slider, 0, SLIDER_RATIO_Y * ad->win_h);
235 evas_object_show(ad->slider);
236 evas_object_geometry_get(
237 edje_object_part_object_get(_EDJ(ad->slider), "lock.wrapper.image.l"),
238 &ad->slider_rel1.x, &ad->slider_rel1.y, &ad->slider_rel1.w,
240 evas_object_geometry_get(
241 edje_object_part_object_get(_EDJ(ad->slider), "lock.wrapper.image.r"),
242 &ad->slider_rel2.x, &ad->slider_rel2.y, &ad->slider_rel2.w,
247 ad->info = elm_layout_add(ad->win);
248 elm_layout_file_set(ad->info, EDJEFILE, "lock-info");
249 evas_object_show(ad->info);
250 elm_object_part_content_set(ad->ly_main, "rect.info", ad->info);
254 vconf_get_bool(VCONFKEY_LOCKSCREEN_EVENT_NOTIFICATION_DISPLAY, &state);
259 evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb_s, ad);
260 evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb_s, ad);
261 evas_object_event_callback_add(ad->event_bg, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb_s, ad);
263 evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_DOWN, _slider_down_cb, ad);
264 evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_UP, _slider_up_cb, ad);
265 evas_object_event_callback_add(ad->slider, EVAS_CALLBACK_MOUSE_MOVE, _slider_move_cb, ad);
267 edje_object_signal_callback_add(_EDJ(ad->ly_main), "exit,app", "event", _app_exit, ad);
269 vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK);
271 return ECORE_CALLBACK_CANCEL;
274 int _app_create(struct appdata *ad)
278 LOGD("[ == %s == ]", __func__);
280 ecore_x_icccm_name_class_set(elm_win_xwindow_get(ad->win), "LOCK_SCREEN", "LOCK_SCREEN");
281 evas_object_show(ad->win);
282 _set_win_property(ad->win);
284 elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
286 ad->ly_main = _make_top_layout(ad);
287 if (ad->ly_main == NULL)
289 ad->event_bg = _get_bg_image(ad->ly_main);
290 if (ad->event_bg == NULL)
292 elm_object_part_content_set(ad->ly_main, "sw.bg", ad->event_bg);
297 int _app_reset(struct appdata *ad)
302 static int initted = 0;
304 ecore_idler_add(_init_widget_cb, ad);
311 int _app_resume(struct appdata *ad)
319 int _app_terminate(struct appdata *ad)
321 vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
324 LOGD("[_app_terminate] Invalid argument : struct appdata is NULL\n");
328 LOGD("[%s] app termiante", __func__);