Fix build of capi system-setting in pure Wayland.
[platform/core/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 #include <system_settings_private.h>
19
20 static void _quit_cb(void *data, Evas_Object* obj, void* event_info)
21 {
22     Evas_Object *win = (Evas_Object *) data;
23     elm_win_lower(win);
24 }
25
26 static Evas_Object* create_win(const char *name)
27 {
28     Evas_Object *eo;
29     int w, h;
30
31     eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
32     if (!eo) return NULL;
33
34     elm_win_title_set(eo, name);
35     elm_win_borderless_set(eo, EINA_TRUE);
36     elm_win_autodel_set(eo, EINA_TRUE);
37     evas_object_smart_callback_add(eo, "delete,request", _quit_cb, NULL);
38
39 #ifdef USE_X11
40     Ecore_X_Window xwin = 0;
41     xwin = elm_win_xwindow_get(eo);
42     if (xwin > 0) ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
43     else {
44 #endif
45 #ifdef USE_WAYLAND
46       Ecore_Wl_Window *wlwin = NULL;
47       wlwin = elm_win_wl_window_get(eo);
48       if (wlwin != NULL) ecore_wl_screen_size_get(&w, &h);
49 #endif
50 #ifdef USE_X11
51     }
52 #endif
53
54     evas_object_resize(eo, w, h);
55
56     return eo;
57 }
58
59 static Evas_Object* _create_bg(Evas_Object *parent)
60 {
61     Evas_Object *bg;
62
63     bg = elm_bg_add(parent);
64     evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
65     elm_win_resize_object_add(parent, bg);
66     evas_object_show(bg);
67
68     return bg;
69 }
70
71 static Evas_Object* _create_layout_main(Evas_Object* parent)
72 {
73     Evas_Object *layout;
74
75     layout = elm_layout_add(parent);
76
77     elm_layout_theme_set(layout, "layout", "application", "default");
78     evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
79     elm_win_resize_object_add(parent, layout);
80
81     evas_object_show(layout);
82
83     return layout;
84 }
85
86 static Evas_Object* _create_naviframe_layout(Evas_Object* parent)
87 {
88     Evas_Object *navi;
89
90     navi = elm_naviframe_add(parent);
91     elm_object_part_content_set(parent, "elm.swallow.content", navi);
92
93     evas_object_show(navi);
94
95     return navi;
96 }
97
98
99 static void _create_view_layout(struct appdata *ad)
100 {
101     Evas_Object *list;
102     Evas_Object *btn;
103
104     list = _create_list_winset(ad->win_main, ad);
105     btn = elm_button_add(ad->navi);
106     elm_object_style_set(btn, "naviframe/end_btn/default");
107     evas_object_smart_callback_add(btn, "clicked", _quit_cb, ad->win_main);
108     elm_naviframe_item_push(ad->navi, _("Tizen UI"), btn, NULL, list, NULL);
109 }
110
111 void list_item_touch_handler_exit(void* data, Evas_Object* obj, void* event_info)
112 {
113     elm_exit();
114 }
115
116 /**
117  * Huge
118  */
119 void list_item_touch_handler1(void* data, Evas_Object* obj, void* event_info)
120 {
121         int ret;
122     ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, SYSTEM_SETTINGS_FONT_SIZE_HUGE);
123     ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
124 }
125
126 /**
127  * Normal
128  */
129 void list_item_touch_handler2(void* data, Evas_Object* obj, void* event_info)
130 {
131         int ret;
132
133         ret = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, SYSTEM_SETTINGS_FONT_SIZE_NORMAL);
134         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
135 }
136
137 void list_item_touch_handler3(void* data, Evas_Object* obj, void* event_info)
138 {
139         int ret;
140         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
141 }
142
143 void list_item_touch_handler4(void* data, Evas_Object* obj, void* event_info)
144 {
145         int ret;
146     ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, "HelveticaNeue");
147 }
148
149 void list_item_touch_handler5(void* data, Evas_Object* obj, void* event_info)
150 {
151         SETTING_TRACE(">>>>>>>> motion activation ON (SET)");
152         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 1/*ON*/);
153
154         bool enableMotion = false;;
155         int errorcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &enableMotion);
156         SETTING_TRACE(">>>>>>>> motion activation (GET TEST  1) -- %d - errorcode : %d", enableMotion, errorcode);
157
158         SETTING_TRACE(">>>>>>>> motion activation ON (SET)");
159         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 0/*ON*/);
160
161         errorcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, &enableMotion);
162         SETTING_TRACE(">>>>>>>> motion activation (GET TEST  2) -- %d - errorcode : %d ", enableMotion, errorcode);
163 }
164
165 void list_item_touch_handler6(void* data, Evas_Object* obj, void* event_info)
166 {
167         SETTING_TRACE(">>>>>>>> motion activation OFF ");
168         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, 0/*OFF*/);
169 }
170
171 void system_settings_changed_font_size(system_settings_key_e key, void *user_data)
172 {
173         struct appdata* ad = (struct appdata*)user_data;
174         SETTING_TRACE(" font size -- %s ", ad->pkgname);
175         SETTING_TRACE(">>>>>>>> system_settings_changed_font_size key = %d ", key);
176         SETTING_TRACE("---------------------------------CALLED BY USER APPLICATION -FONT SIZE ");
177 }
178
179 void system_settings_changed_font_type(system_settings_key_e key, void *user_data)
180 {
181         struct appdata* ad = (struct appdata*)user_data;
182         SETTING_TRACE(" font type -- %s ", ad->pkgname);
183         SETTING_TRACE(">>>>>>>> system_settings_changed_font_type key = %d ", key);
184         SETTING_TRACE("---------------------------------CALLED BY USER APPLICATION -FONT TYPE ");
185 }
186
187 void system_settings_changed_motion_activation(system_settings_key_e key, void *user_data)
188 {
189         struct appdata* ad = (struct appdata*)user_data;
190         SETTING_TRACE(" motion type -- %s ", ad->pkgname);
191         SETTING_TRACE(">>>>>>>> system_settings_changed_motion_activation key = %d ", key);
192         SETTING_TRACE("---------------------------------CALLED BY USER APPLICATION-MOTION ACTIVIATION ");
193 }
194 void list_item_touch_handler7(void* data, Evas_Object* obj, void* event_info)
195 {
196         char* path = "/opt/usr/media/Images/image16.jpg";
197         int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, "/aaa.png");
198         SETTING_TRACE(">>>>>>>> home screen - error case :: %d ", ret);
199
200         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, path);
201         SETTING_TRACE(">>>>>>>> home screen - error case :: %d ", ret);
202
203 }
204
205 void list_item_touch_handler8(void* data, Evas_Object* obj, void* event_info)
206 {
207         char* path = "/opt/usr/media/Images/image16.jpg";
208         int ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, "aaa.png");
209         SETTING_TRACE(">>>>>>>> lock screen - error case  : %d ", ret);
210
211         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN, path);
212         SETTING_TRACE(">>>>>>>> lock screen - error case  : %d ", ret);
213 }
214
215 //      SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,  /**< Indicates whether the usb debugging is enabled */
216 // get 3g data network
217 void list_item_touch_handler9(void* data, Evas_Object* obj, void* event_info)
218 {
219         bool state = false;;
220         int errorcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, &state);
221         SETTING_TRACE(">>>>>>>> 3G data network (GET TEST) -- %d - errorcode : %d ", state, errorcode);
222 }
223
224 // set 3g data network to ON
225 void list_item_touch_handler10(void* data, Evas_Object* obj, void* event_info)
226 {
227         SETTING_TRACE(">>>>>>>> set 3G data network to ON ");
228         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, 1/*ON*/);
229 }
230
231 // set 3g data network to OFF
232 void list_item_touch_handler11(void* data, Evas_Object* obj, void* event_info)
233 {
234         SETTING_TRACE(">>>>>>>> set 3G data network to OFF ");
235         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED, 0/*OFF*/);
236 }
237
238 // get usg debugging
239 void list_item_touch_handler12(void* data, Evas_Object* obj, void* event_info)
240 {
241         bool state = false;;
242         int errorcode = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, &state);
243         SETTING_TRACE(">>>>>>>> USB Debugging (GET TEST) -- %d - errorcode : %d ", state, errorcode);
244 }
245
246 // set USB debugging to ON
247 void list_item_touch_handler13(void* data, Evas_Object* obj, void* event_info)
248 {
249         SETTING_TRACE(">>>>>>>> set USB debugging to ON ");
250         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, 1/*ON*/);
251 }
252
253 // set USB debugging to OFF
254 void list_item_touch_handler14(void* data, Evas_Object* obj, void* event_info)
255 {
256         SETTING_TRACE(">>>>>>>> set USB debugging to OFF ");
257         system_settings_set_value_bool(SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED, 0/*OFF*/);
258 }
259
260 // get ringtone path
261 void list_item_touch_handler15(void* data, Evas_Object* obj, void* event_info)
262 {
263         SETTING_TRACE(">>>>>>>> get ringtone path ");
264         char *ringtonepath = NULL;
265         int ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &ringtonepath);
266         SETTING_TRACE("current ringtone path : (%s) ", ringtonepath);
267
268 }
269
270 // get ringtone path - exception case
271 void list_item_touch_handler16(void* data, Evas_Object* obj, void* event_info)
272 {
273         SETTING_TRACE(">>>>>>>> get ringtone path - exception case ");
274         int ret;
275         char *ringtonepath = NULL;
276         //opt/share/settings/Ringtones/Over the horizon.mp3
277         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "/opt/share/settings/Ringtones/Over the horizon.mp3");
278         ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &ringtonepath);
279         SETTING_TRACE(" 1 current ringtone path : (%s) ", ringtonepath);
280         // set the key to the wrong value
281         ret = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, "aaa.wav");
282
283         ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE, &ringtonepath);
284         SETTING_TRACE("2 current ringtone path : (%s) ", ringtonepath);
285 }
286
287 static Evas_Object* _create_list_winset(Evas_Object* parent, struct appdata* ad)
288 {
289         Evas_Object *li;
290         int idx = 0;
291         //struct _menu_item *menu_its;
292         int ret;
293         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE, system_settings_changed_font_size, ad);
294
295         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, system_settings_changed_font_type, ad);
296         if (ret < 0) {
297                 SETTING_TRACE("SYSTEM_SETTINGS_KEY_FONT_TYPE returns negative values = %d ", ret);
298         } else {
299                 SETTING_TRACE("SYSTEM_SETTINGS_KEY_FONT_TYPE returns positive values = %d, means successful return. ", ret);
300         }
301
302         // callback registration
303         ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION, system_settings_changed_motion_activation, ad);
304         if (ret < 0) {
305                         SETTING_TRACE("SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION returns negative values = %d ", ret);
306         } else {
307                         SETTING_TRACE("SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION returns positive values = %d, means successful return. ", ret);
308         }
309
310         li = elm_list_add(parent);
311         elm_list_mode_set(li, ELM_LIST_COMPRESS);
312
313         elm_list_item_append( li, "QUIT", NULL, NULL, list_item_touch_handler_exit, ad);
314         elm_list_item_append( li, "font size - bigger ", NULL, NULL, list_item_touch_handler1, ad);
315         elm_list_item_append( li, "font size - normal ", NULL, NULL, list_item_touch_handler2, ad);
316         elm_list_item_append( li, "font type - choose Helvetica 1 ", NULL, NULL, list_item_touch_handler3, ad);
317         elm_list_item_append( li, "font type - choose Helvetica 2 ", NULL, NULL, list_item_touch_handler4, ad);
318         elm_list_item_append( li, "motion activation ON ", NULL, NULL, list_item_touch_handler5, ad);
319         elm_list_item_append( li, "motion activation OFF ", NULL, NULL, list_item_touch_handler6, ad);
320         elm_list_item_append( li, "homescreen - set ", NULL, NULL, list_item_touch_handler7, ad);
321         elm_list_item_append( li, "lockscreen - set ", NULL, NULL, list_item_touch_handler8, ad);
322
323         elm_list_item_append( li, "3g data network GET ", NULL, NULL, list_item_touch_handler9, ad);
324         elm_list_item_append( li, "3g data network SET - ON ", NULL, NULL, list_item_touch_handler10, ad);
325         elm_list_item_append( li, "3g data network SET - OFF ", NULL, NULL, list_item_touch_handler11, ad);
326
327         elm_list_item_append( li, "usb debugging GET ", NULL, NULL, list_item_touch_handler12, ad);
328         elm_list_item_append( li, "usb debugging SET - ON ", NULL, NULL, list_item_touch_handler13, ad);
329         elm_list_item_append( li, "usb debugging SET - OFF ", NULL, NULL, list_item_touch_handler14, ad);
330
331         elm_list_item_append( li, "get call ringtone ", NULL, NULL, list_item_touch_handler15, ad);
332         elm_list_item_append( li, "get call ringtone - exception ", NULL, NULL, list_item_touch_handler16, ad);
333         elm_list_go(li);
334         return li;
335 }
336
337 static void _mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
338 {
339         //struct appdata *ad = (struct appdata *)data;
340     //Evas_Event_Mouse_Down *ev = event_info;
341
342 }
343
344 static void _mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
345 {
346     //struct appdata *ad = (struct appdata *)data;
347
348 }
349
350 static void _mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
351 {
352     //struct appdata *ad = (struct appdata *)data;
353 }
354
355 static void _window_resize_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
356 {
357     struct appdata *ad = (struct appdata *)data;
358     evas_object_geometry_get(ad->win_main, NULL, NULL, &ad->root_w, &ad->root_h);
359 }
360
361 static int _rotation_cb(enum appcore_rm mode, void *data)
362 {
363     struct appdata *ad = (struct appdata *)data;
364     int angle;
365
366     switch (mode) {
367         case APPCORE_RM_LANDSCAPE_NORMAL:
368             angle = -90;
369             break;
370
371         case APPCORE_RM_LANDSCAPE_REVERSE:
372             angle = 90;
373             break;
374
375         case APPCORE_RM_PORTRAIT_REVERSE:
376             angle = 180;
377             break;
378
379         case APPCORE_RM_UNKNOWN:
380         case APPCORE_RM_PORTRAIT_NORMAL:
381         default:
382             angle = 0;
383             break;
384     }
385
386     elm_win_rotation_with_resize_set(ad->win_main, angle);
387     // set_rotation_degree(angle);
388
389     // This is need for customized rotation process.
390     // rotate_for_winset(mode);
391
392     return 0;
393 }
394
395 int app_create(void *data)
396 {
397     struct appdata *ad = (struct appdata *) data;
398
399     // Set the engine to opengl_x11
400     //elm_config_engine_set("opengl_x11");
401
402     ad->win_main = create_win(PACKAGE);
403
404     evas_object_event_callback_add(ad->win_main, EVAS_CALLBACK_RESIZE, _window_resize_cb, ad);
405     evas_object_show(ad->win_main);
406     ad->evas = evas_object_evas_get(ad->win_main);
407     appcore_set_rotation_cb(_rotation_cb, ad);
408
409     // set_edj_name(NULL);
410
411         ad->bg = _create_bg(ad->win_main);
412         ad->layout_main = _create_layout_main(ad->win_main);
413         elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
414
415         ad->navi = _create_naviframe_layout(ad->layout_main);
416
417         _create_view_layout(ad);
418
419     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, ad);
420     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb,  ad);
421     evas_object_event_callback_add(ad->navi, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, ad);
422
423     return 0;
424 }
425
426 int app_terminate(void *data)
427 {
428         //struct appdata *ad = data;
429
430         int ret;
431         // unregistration
432         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE);
433         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE);
434         ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION);
435         return 0;
436 }
437
438 int app_pause(void *data)
439 {
440         //struct appdata *ad = data;
441
442     return 0;
443 }
444
445 int app_resume(void *data)
446 {
447     //struct appdata *ad = data;
448
449     return 0;
450 }
451
452 int app_reset(bundle* b, void* data)
453 {
454         struct appdata* ad = data;
455
456         if (ad->win_main)
457                 elm_win_activate(ad->win_main);
458
459         return 0;
460 }
461
462
463 int main(int argc, char* argv[])
464 {
465         struct appdata ad;
466
467         ad.pkgname = "ARGUMENTATION SUCCESS *********************************";
468
469         struct appcore_ops ops = {
470                 .create = app_create,
471                 .terminate = app_terminate,
472                 .pause = app_pause,
473                 .resume = app_resume,
474                 .reset = app_reset
475         };
476
477         ops.data = &ad;
478
479         return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
480 }