tizen 2.3.1 release
[apps/home/settings.git] / setting-display / src / setting-display-smart-screen-smart-stay.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-display-smart-screen-smart-stay.h>
22
23
24
25
26
27
28
29 static int setting_display_smart_screen_smart_stay_create(void *cb);
30 static int setting_display_smart_screen_smart_stay_destroy(void *cb);
31 static int setting_display_smart_screen_smart_stay_update(void *cb);
32 static int setting_display_smart_screen_smart_stay_cleanup(void *cb);
33
34 setting_view setting_view_display_smart_screen_smart_stay = {
35         .create = setting_display_smart_screen_smart_stay_create,
36         .destroy = setting_display_smart_screen_smart_stay_destroy,
37         .update = setting_display_smart_screen_smart_stay_update,
38         .cleanup = setting_display_smart_screen_smart_stay_cleanup,
39 };
40
41 static int setting_display_smart_screen_smart_stay_create(void *cb)
42 {
43         SETTING_TRACE_BEGIN;
44         /* error check */
45         setting_retvm_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "cb is NULL");
46         SettingDisplayUG *ad = (SettingDisplayUG *) cb;
47
48         Elm_Object_Item *nav_item = NULL;
49         Evas_Object *sub_layout = elm_layout_add(ad->win_main_layout);
50         elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "smart_tryit");
51         /*top guide*/
52         edje_object_part_text_set(_EDJ(sub_layout), "top_popup.text", _(KeyStr_Smart_Top_Popup_Text));
53         Evas_Object *smart_icon = setting_create_image(sub_layout, IMG_SMART_SCREEN_ICON);
54         elm_object_part_content_set(sub_layout, "smart_icon", smart_icon);
55         /*elm_object_signal_emit(sub_layout,"elm,state,top,show","elm"); */
56         /*center guide*/
57         edje_object_part_text_set(_EDJ(sub_layout), "center_popup.text", _(KeyStr_Smart_Stay_Center_Popup_Text));
58         ad->smart_stay_sublayout = sub_layout;
59
60         Evas_Object *scroller = elm_scroller_add(sub_layout);
61         elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
62
63         elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
64         evas_object_show(scroller);
65         elm_object_part_content_set(ad->smart_stay_sublayout, "bg_swallow", scroller);
66
67         ad->smart_stay_image = evas_object_image_add(ad->evas);
68         int h = 0;
69         int w = 0;
70         app_device_orientation_e m = elm_win_rotation_get(ad->win_get);
71
72         if (APP_DEVICE_ORIENTATION_90 == m || APP_DEVICE_ORIENTATION_270 == m) {
73                 /*ecore_x_window_size_get(ecore_x_window_root_first_get(), &h, &w); */
74                 evas_object_image_file_set(ad->smart_stay_image, SMART_SCREEN_TRY_IT_IMAGE_L, NULL);
75                 h = SAMRT_SCREEN_TRY_IT_IAMGE_LANDSCAPE_H;
76                 w = SAMRT_SCREEN_TRY_IT_IAMGE_LANDSCAPE_W;
77         } else {
78                 /*ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); */
79                 evas_object_image_file_set(ad->smart_stay_image, SMART_SCREEN_TRY_IT_IMAGE_P, NULL);
80                 h = SAMRT_SCREEN_TRY_IT_IAMGE_PORTRAIT_H;
81                 w = SAMRT_SCREEN_TRY_IT_IAMGE_PORTRAIT_W;
82         }
83
84         evas_object_size_hint_weight_set(ad->smart_stay_image, 0.0, EVAS_HINT_EXPAND);
85         evas_object_image_fill_set(ad->smart_stay_image, 0, 0, w, h);
86         evas_object_image_border_set(ad->smart_stay_image, 16, 16, 16, 16); /*for round corner */
87         evas_object_image_filled_set(ad->smart_stay_image, 1); /*to full fill */
88         evas_object_size_hint_min_set(ad->smart_stay_image, ELM_SCALE_SIZE(w), ELM_SCALE_SIZE(h));
89         evas_object_size_hint_max_set(ad->smart_stay_image, w, h);
90
91
92         elm_object_content_set(scroller, ad->smart_stay_image);
93
94         /*setting_resize_object(ad->smart_stay_image, w, h); */
95         elm_scroller_region_bring_in(scroller, 0, 0, 0, 0);
96         setting_disable_evas_object(scroller);
97
98
99         if (ad->view_to_load == &setting_view_display_smart_screen_smart_stay) {
100                 ad->ly_main = setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get,
101                                                              NULL,
102                                                              "IDS_COM_BODY_BACK",
103                                                              NULL,
104                                                              NULL,
105                                                              __setting_display_smart_screen_smart_stay_click_softkey_back_cb,
106                                                              NULL, NULL,
107                                                              ad, sub_layout, &ad->navi_bar, NULL);
108                 nav_item = elm_naviframe_top_item_get(ad->navi_bar);
109         } else {
110                 nav_item = setting_push_layout_navi_bar(NULL,
111                                                         NULL,
112                                                         NULL,
113                                                         NULL,
114                                                         __setting_display_smart_screen_smart_stay_click_softkey_back_cb,
115                                                         NULL,
116                                                         NULL, ad, sub_layout, ad->navi_bar, NULL);
117         }
118         elm_naviframe_item_pop_cb_set(nav_item, (Elm_Naviframe_Item_Pop_Cb)__setting_display_smart_screen_smart_stay_click_softkey_back_cb, ad);
119         elm_naviframe_item_title_enabled_set(nav_item, EINA_FALSE, EINA_FALSE);
120
121
122         int smart_stay_status = 0;
123         vconf_get_int(VCONFKEY_SETAPPL_SMARTSCREEN_SMARTSTAY_STATUS, &smart_stay_status);
124         if (smart_stay_status && !safeStrCmp(ad->uri, URI_SMART_STAY)) {
125                 if (ad->smart_stay_sublayout) {
126                         elm_object_signal_emit(ad->smart_stay_sublayout, "elm,state,top,show", "elm");
127                         ad->timer_show_guide = ecore_timer_add(3, (Ecore_Task_Cb)__show_smartstay_guide_popup, ad);
128                 } else {
129                         SETTING_TRACE("layout is null");
130                 }
131         }
132         setting_view_display_smart_screen_smart_stay.is_create = 1;
133         return SETTING_RETURN_SUCCESS;
134 }
135
136 static int setting_display_smart_screen_smart_stay_destroy(void *cb)
137 {
138         SETTING_TRACE_BEGIN;
139         /* error check */
140         setting_retvm_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "cb is NULL");
141         retv_if(!(setting_view_display_smart_screen_smart_stay.is_create), SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
142         SettingDisplayUG *ad = (SettingDisplayUG *) cb;
143         if (ad->smart_stay_image) {
144                 ad->smart_stay_image = NULL;
145         }
146         if (ad->smart_stay_sublayout) {
147                 ad->smart_stay_sublayout = NULL;
148         }
149         if (ad->timer_show_guide) {
150                 ecore_timer_del(ad->timer_show_guide);
151                 ad->timer_show_guide = NULL;
152         }
153         if (&setting_view_display_smart_screen_smart_stay == ad->view_to_load) {
154                 if (ad->ly_main) {
155                         evas_object_del(ad->ly_main);
156                         ad->ly_main = NULL;
157                 }
158         } else {
159                 elm_naviframe_item_pop(ad->navi_bar);
160         }
161         setting_view_display_smart_screen_smart_stay.is_create = 0;
162
163         return SETTING_RETURN_SUCCESS;
164 }
165
166 static int setting_display_smart_screen_smart_stay_update(void *cb)
167 {
168         SETTING_TRACE_BEGIN;
169         /* error check */
170         setting_retvm_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "cb is NULL");
171
172         return SETTING_RETURN_SUCCESS;
173 }
174
175 static int setting_display_smart_screen_smart_stay_cleanup(void *cb)
176 {
177         SETTING_TRACE_BEGIN;
178         setting_retvm_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER, "cb is NULL");
179
180         SettingDisplayUG *ad = (SettingDisplayUG *) cb;
181
182         setting_display_smart_screen_smart_stay_destroy(ad);
183
184         return SETTING_RETURN_SUCCESS;
185 }
186
187 /* ***************************************************
188  *
189  *general func
190  *
191  ***************************************************/
192
193 static void __setting_display_smart_screen_smart_stay_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info)
194 {
195         SETTING_TRACE_BEGIN;
196         /* error check */
197         setting_retm_if(data == NULL,
198                         "[Setting > Display] Data parameter is NULL");
199
200         SettingDisplayUG *ad = (SettingDisplayUG *) data;
201         if (&setting_view_display_smart_screen_smart_stay == ad->view_to_load) {
202                 /* Send destroy request */
203                 ug_destroy_me(ad->ug);
204                 return;
205         } else {
206                 setting_view_cleanup(&setting_view_display_smart_screen_smart_stay, ad);
207         }
208 }