removed the log message functions
[framework/api/system-settings.git] / TC_gui / main.c
1 /*
2  * Copyright (c) 2011 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 #include "main.h"
17 #include <system_settings.h>
18
19 static void _quit_cb(void *data, Evas_Object* obj, void* event_info)
20 {
21     Evas_Object *win = (Evas_Object *) data;
22     elm_win_lower(win);
23 }
24
25 static Evas_Object* create_win(const char *name)
26 {
27     Evas_Object *eo;
28     int w, h;
29
30     eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
31     if (!eo) return NULL;
32
33     elm_win_title_set(eo, name);
34     elm_win_borderless_set(eo, EINA_TRUE);
35     elm_win_autodel_set(eo, EINA_TRUE);
36     evas_object_smart_callback_add(eo, "delete,request", _quit_cb, NULL);
37     ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
38     evas_object_resize(eo, w, h);
39
40     return eo;
41 }
42
43 static Evas_Object* _create_bg(Evas_Object *parent)
44 {
45     Evas_Object *bg;
46
47     bg = elm_bg_add(parent);
48     evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
49     elm_win_resize_object_add(parent, bg);
50     evas_object_show(bg);
51
52     return bg;
53 }
54
55 static Evas_Object* _create_layout_main(Evas_Object* parent)
56 {
57     Evas_Object *layout;
58
59     layout = elm_layout_add(parent);
60
61     elm_layout_theme_set(layout, "layout", "application", "default");
62     evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
63     elm_win_resize_object_add(parent, layout);
64
65     evas_object_show(layout);
66
67     return layout;
68 }
69
70 static Evas_Object* _create_naviframe_layout(Evas_Object* parent)
71 {
72     Evas_Object *navi;
73
74     navi = elm_naviframe_add(parent);
75     elm_object_part_content_set(parent, "elm.swallow.content", navi);
76
77     evas_object_show(navi);
78
79     return navi;
80 }
81
82
83 static void _create_view_layout(struct appdata *ad)
84 {
85     Evas_Object *list;
86     Evas_Object *btn;
87
88     list = _create_list_winset(ad->win_main, ad);
89     btn = elm_button_add(ad->navi);
90     elm_object_style_set(btn, "naviframe/end_btn/default");
91     evas_object_smart_callback_add(btn, "clicked", _quit_cb, ad->win_main);
92     elm_naviframe_item_push(ad->navi, _("Tizen UI"), btn, NULL, list, NULL);
93 }
94
95 void list_item_touch_handler_exit(void* data, Evas_Object* obj, void* event_info)
96 {
97     elm_exit();
98 }
99
100 /**
101  * Huge
102  */
103 void list_item_touch_handler1(void* data, Evas_Object* obj, void* event_info)
104 {
105         int ret;
106     ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, SYSTEM_SETTINGS_FONT_SIZE_HUGE);
107     ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
108 }
109
110 /**
111  * Normal
112  */
113 void list_item_touch_handler2(void* data, Evas_Object* obj, void* event_info)
114 {
115         int ret;
116
117         ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, SYSTEM_SETTINGS_FONT_SIZE_NORMAL);
118         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
119 }
120
121 void list_item_touch_handler3(void* data, Evas_Object* obj, void* event_info)
122 {
123         int ret;
124         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
125 }
126
127 void list_item_touch_handler4(void* data, Evas_Object* obj, void* event_info)
128 {
129         int ret;
130     ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
131 }
132
133 void list_item_touch_handler5(void* data, Evas_Object* obj, void* event_info)
134 {
135         bool enableMotion = false;;
136         printf(">>>>>>>> motion activation (GET) \n");
137         int errorcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &enableMotion);
138
139
140         printf(">>>>>>>> motion activation ON (SET) \n");
141         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 1/*ON*/);
142 }
143
144 void list_item_touch_handler6(void* data, Evas_Object* obj, void* event_info)
145 {
146         printf(">>>>>>>> motion activation OFF \n");
147         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 0/*OFF*/);
148 }
149
150 void system_settings_changed_font_size(system_settings_key_e key, void *user_data)
151 {
152         printf(">>>>>>>> system_settings_changed_font_size key = %d \n", key);
153         printf("---------------------------------CALLED BY USER APPLICATION -FONT SIZE \n");
154 }
155
156 void system_settings_changed_font_type(system_settings_key_e key, void *user_data)
157 {
158         printf(">>>>>>>> system_settings_changed_font_type key = %d \n", key);
159         printf("---------------------------------CALLED BY USER APPLICATION -FONT TYPE \n");
160 }
161
162 void system_settings_changed_motion_activation(system_settings_key_e key, void *user_data)
163 {
164         printf(">>>>>>>> system_settings_changed_motion_activation key = %d \n", key);
165         printf("---------------------------------CALLED BY USER APPLICATION-MOTION ACTIVIATION \n");
166 }
167 void list_item_touch_handler7(void* data, Evas_Object* obj, void* event_info)
168 {
169         char* path = "/opt/usr/media/Images/image16.jpg";
170         int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, "/aaa.png");
171         printf(">>>>>>>> home screen - error case :: %d \n", ret);
172
173         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, path);
174         printf(">>>>>>>> home screen - error case :: %d \n", ret);
175
176 }
177
178 void list_item_touch_handler8(void* data, Evas_Object* obj, void* event_info)
179 {
180         char* path = "/opt/usr/media/Images/image16.jpg";
181         int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, "aaa.png");
182         printf(">>>>>>>> lock screen - error case  : %d \n", ret);
183
184         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, path);
185         printf(">>>>>>>> lock screen - error case  : %d \n", ret);
186 }
187
188 static Evas_Object* _create_list_winset(Evas_Object* parent, struct appdata* ad)
189 {
190         Evas_Object *li;
191         int idx = 0;
192         //struct _menu_item *menu_its;
193         int ret;
194         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, system_settings_changed_font_size, NULL);
195
196         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, system_settings_changed_font_type, NULL);
197         if (ret < 0) {
198                 printf("SYSTEM_SETTINGS_KEY_FONT_TYPE returns negative values = %d \n", ret);
199         } else {
200                 printf("SYSTEM_SETTINGS_KEY_FONT_TYPE returns positive values = %d, means successful return. \n", ret);
201         }
202
203         // callback registration
204         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, system_settings_changed_motion_activation, NULL);
205         if (ret < 0) {
206                         printf("SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION returns negative values = %d \n", ret);
207         } else {
208                         printf("SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION returns positive values = %d, means successful return. \n", ret);
209         }
210
211         li = elm_list_add(parent);
212         elm_list_mode_set(li, ELM_LIST_COMPRESS);
213
214         elm_list_item_append( li, "QUIT", NULL, NULL, list_item_touch_handler_exit, ad);
215         elm_list_item_append( li, "font size - bigger ", NULL, NULL, list_item_touch_handler1, ad);
216         elm_list_item_append( li, "font size - normal ", NULL, NULL, list_item_touch_handler2, ad);
217         elm_list_item_append( li, "font type - choose Helvetica 1 ", NULL, NULL, list_item_touch_handler3, ad);
218         elm_list_item_append( li, "font type - choose Helvetica 2 ", NULL, NULL, list_item_touch_handler4, ad);
219         elm_list_item_append( li, "motion activation ON ", NULL, NULL, list_item_touch_handler5, ad);
220         elm_list_item_append( li, "motion activation OFF ", NULL, NULL, list_item_touch_handler6, ad);
221         elm_list_item_append( li, "homescreen - set ", NULL, NULL, list_item_touch_handler7, ad);
222         elm_list_item_append( li, "lockscreen - set ", NULL, NULL, list_item_touch_handler8, ad);
223
224         elm_list_go(li);
225         return li;
226 }
227
228 static void _mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
229 {
230         //struct appdata *ad = (struct appdata *)data;
231     //Evas_Event_Mouse_Down *ev = event_info;
232
233 }
234
235 static void _mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
236 {
237     //struct appdata *ad = (struct appdata *)data;
238
239 }
240
241 static void _mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
242 {
243     //struct appdata *ad = (struct appdata *)data;
244 }
245
246 static void _window_resize_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
247 {
248     struct appdata *ad = (struct appdata *)data;
249     evas_object_geometry_get(ad->win_main, NULL, NULL, &ad->root_w, &ad->root_h);
250 }
251
252 static int _rotation_cb(enum appcore_rm mode, void *data)
253 {
254     struct appdata *ad = (struct appdata *)data;
255     int angle;
256
257     switch (mode) {
258         case APPCORE_RM_LANDSCAPE_NORMAL:
259             angle = -90;
260             break;
261
262         case APPCORE_RM_LANDSCAPE_REVERSE:
263             angle = 90;
264             break;
265
266         case APPCORE_RM_PORTRAIT_REVERSE:
267             angle = 180;
268             break;
269
270         case APPCORE_RM_UNKNOWN:
271         case APPCORE_RM_PORTRAIT_NORMAL:
272         default:
273             angle = 0;
274             break;
275     }
276
277     elm_win_rotation_with_resize_set(ad->win_main, angle);
278     // set_rotation_degree(angle);
279
280     // This is need for customized rotation process.
281     // rotate_for_winset(mode);
282
283     return 0;
284 }
285
286 int app_create(void *data)
287 {
288     struct appdata *ad = (struct appdata *) data;
289
290     // Set the engine to opengl_x11
291     //elm_config_engine_set("opengl_x11");
292
293     ad->win_main = create_win(PACKAGE);
294
295     evas_object_event_callback_add(ad->win_main, EVAS_CALLBACK_RESIZE, _window_resize_cb, ad);
296     evas_object_show(ad->win_main);
297     ad->evas = evas_object_evas_get(ad->win_main);
298     appcore_set_rotation_cb(_rotation_cb, ad);
299
300     // set_edj_name(NULL);
301
302         ad->bg = _create_bg(ad->win_main);
303         ad->layout_main = _create_layout_main(ad->win_main);
304         elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
305
306         ad->navi = _create_naviframe_layout(ad->layout_main);
307
308         _create_view_layout(ad);
309
310     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, ad);
311     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb,  ad);
312     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, ad);
313
314     return 0;
315 }
316
317 int app_terminate(void *data)
318 {
319         //struct appdata *ad = data;
320
321         int ret;
322         // unregistration
323         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE);
324         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE);
325         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION);
326         return 0;
327 }
328
329 int app_pause(void *data)
330 {
331         //struct appdata *ad = data;
332
333     return 0;
334 }
335
336 int app_resume(void *data)
337 {
338     //struct appdata *ad = data;
339
340     return 0;
341 }
342
343 int app_reset(bundle* b, void* data)
344 {
345         struct appdata* ad = data;
346
347         if (ad->win_main)
348                 elm_win_activate(ad->win_main);
349
350         return 0;
351 }
352
353
354 int main(int argc, char* argv[])
355 {
356         struct appdata ad;
357
358         struct appcore_ops ops = {
359                 .create = app_create,
360                 .terminate = app_terminate,
361                 .pause = app_pause,
362                 .resume = app_resume,
363                 .reset = app_reset
364         };
365
366         ops.data = &ad;
367
368         return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
369 }