2 * Copyright (c) 2014 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://floralicense.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.
17 #include <app_manager.h>
20 #include <vconf-keys.h>
21 #include <system_settings.h>
22 #include <pkgmgr-info.h>
24 #include <media_content.h>
25 /*#include <media_info_comm_feature.h> */
29 #include "setting_data_vconf.h"
30 #include "setting-homescreen.h"
31 #include "setting_view_toast.h"
34 static struct _homescreen_menu_item homescreen_menu_its[] = {
35 { "IDS_HS_MBODY_HOME_ICON_SIZE_ABB", 0, 0, _homescreen_gl_viewtype_cb },
36 { "IDS_ST_MBODY_HOME_BACKGROUND_ABB", 0, 0, _wallpaper_gl_cb },
37 { "IDS_ST_OPT_EDIT_HOME_SCREEN_ABB", 0, 0, _homescreen_gl_edit_home_cb },
41 static struct _homebg_menu_item homebg_menu_its[] = {
42 { "IDS_COM_MBODY_COLOUR_PALETTE", _show_bg_slide_cb },
43 { "IDS_ST_BODY_WALLPAPERS", _wallpaper_gl_cb },
44 { "IDS_ST_BODY_GALLERY", _gallery_gl_cb },
48 static struct _color color[] = {
49 { 255, 111, 32, "FF6F20" },
50 { 244, 102, 141, "F4668D" },
51 { 249, 55, 66, "F93742" },
52 { 167, 63, 149, "A73F95" },
53 { 132, 0, 196, "8400C4" },
54 { 3, 54, 224, "0336E0" },
55 { 0, 175, 164, "00AFA4" },
56 { 96, 192, 30, "60C01E" },
57 { 31, 147, 0, "1F9300" },
58 { 107, 58, 51 , "6B3A33" },
59 { 48, 48, 48, "303030" },
60 { 0, 0, 0, "000000" }, /*default black */
64 static char *home_icon_sub_str[] = {
65 "IDS_HS_OPT_LARGE_ICONS_ABB",
66 "IDS_HS_OPT_SMALL_ICONS_ABB",
69 static char *thumb_path[] = {
70 SETTING_DEFAULT_WALLPAPER_PATH"/btn_icons/setting_icon_color_platte.png",
71 SETTING_DEFAULT_WALLPAPER_PATH"/btn_icons/setting_icon_wallpaper.png",
72 CROPPED_GALLERY_DEFAULT_WALLPAPER_PATH,
73 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_01.png",
74 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_02.png",
75 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_03.png",
76 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_04.png",
77 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_05.png",
78 SETTING_DEFAULT_WALLPAPER_PATH"/wallpaper_06.png"
81 static void _show_viewtype_list(void *data);
82 static void _show_homebg_list(void *data);
83 static void _show_edit_home(void *data);
84 static void _show_edit_apps(void *data);
85 static void _wallpaper_vconf_color_changed_cb(keynode_t *node, void *data);
86 static void _wallpaper_vconf_wallpaper_changed_cb(keynode_t *node, void *data);
88 static appdata *temp_ad = NULL;
89 static Evas_Object *g_home_bg_genlist = NULL;
90 static int touch_mode = NONE;
91 static int gallery_img_cnt = 0;
92 static int is_prev_update = 0;
93 static char *last_img_path = NULL;
94 static bool running_gallery = false;
95 static Ecore_Timer *running_gallery_timer = NULL;
97 static Evas_Object *g_wallpaper_layout = NULL;
98 static Evas_Object *g_wallpaper_scroller = NULL;
99 static Evas_Object *g_color_page = NULL;
100 static Evas_Object *g_gallery_prv = NULL;
101 static Evas_Object *g_wallpaper_box = NULL;
102 static bool wallpaper_touched = false;
104 static int _chk_pkg_install(const char *pkgid)
107 pkgmgrinfo_pkginfo_h pkginfo_h = NULL;
109 /*get pkg appinfo handler */
110 ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &pkginfo_h);
111 if (PMINFO_R_OK != ret || NULL == pkginfo_h) {
112 DBG("un-installed pkg [%s]", pkgid);
117 pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo_h);
123 _gallery_item_cb(media_info_h item, void *user_data)
125 if (user_data == NULL) {
126 DBG("user_data == NULL");
129 media_info_get_file_path(item, &last_img_path);
130 /*DBG("last gallery image path[%s]", last_img_path); */
135 static void _get_last_img_path()
137 Eina_List *item_list = NULL;
138 filter_h media_filter;
141 ret = media_filter_create(&media_filter);
142 if (ret != MEDIA_CONTENT_ERROR_NONE) {
143 DBG("Cannot create filter. err");
146 ret = media_filter_set_condition(media_filter, "((MEDIA_TYPE=0 OR MEDIA_TYPE=1) AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121))", MEDIA_CONTENT_COLLATE_DEFAULT);
147 if (ret != MEDIA_CONTENT_ERROR_NONE) {
148 DBG("Cannot set condition. err");
151 ret = media_filter_set_order(media_filter, MEDIA_CONTENT_ORDER_DESC, "MEDIA_TIMELINE, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_NOCASE);
152 if (ret != MEDIA_CONTENT_ERROR_NONE) {
153 DBG("media_filter_set_order is failed, err");
156 media_content_connect();
159 ret = media_info_foreach_media_from_db_with_media_mode(media_filter, _gallery_item_cb, &item_list);
160 if (ret != MEDIA_CONTENT_ERROR_NONE) {
161 DBG("Cannot retrive data err[%d]", ret);
164 media_content_disconnect();
165 media_filter_destroy(media_filter);
169 void _clear_homescreen_cb(void *data , Evas *e, Evas_Object *obj, void *event_info)
171 unregister_vconf_changing("db/wms/home_bg_palette", _wallpaper_vconf_color_changed_cb);
172 unregister_vconf_changing("db/wms/home_bg_mode", _wallpaper_vconf_wallpaper_changed_cb);
173 if (is_prev_update) {
174 Evas_Object *layout = NULL;
175 Elm_Object_Item *nf_it = NULL;
176 layout = create_wallpaper_list(temp_ad);
177 elm_naviframe_item_pop(temp_ad->nf);
178 nf_it = elm_naviframe_item_push(temp_ad->nf, NULL, NULL, NULL, layout, NULL);
179 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
186 ret = feedback_deinitialize();
187 if (ret != FEEDBACK_ERROR_NONE) {
188 DBG("feedback_deinitialize failed");
193 void _homescreen_gl_viewtype_cb(void *data, Evas_Object *obj, void *event_info)
195 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
198 _show_viewtype_list(data);
202 /* 2: home background */
203 void _homescreen_gl_homebg_cb(void *data, Evas_Object *obj, void *event_info)
205 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
208 _show_homebg_list(data);
212 /* 3: Edit home screen */
213 void _homescreen_gl_edit_home_cb(void *data, Evas_Object *obj, void *event_info)
215 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
218 _show_edit_home(data);
223 void _homescreen_gl_edit_apps_cb(void *data, Evas_Object *obj, void *event_info)
225 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
228 _show_edit_apps(data);
232 /* homescreen main list */
233 char *_gl_homescreen_title_get(void *data, Evas_Object *obj, const char *part)
235 char buf[1024] = {0,};
236 Homescreen_Item_Data *id = data;
237 int index = id->index;
239 if (!strcmp(part, "elm.text")) {
240 snprintf(buf, sizeof(buf) - 1, "%s", _(homescreen_menu_its[index].name));
246 Evas_Object *_gl_homescreen_check_get(void *data, Evas_Object *obj, const char *part)
248 Evas_Object *check = NULL;
250 Homescreen_Item_Data *id = data;
251 int index = id->index;
253 if (homescreen_menu_its[index % (HOME_MENU_COUNT)].is_check_type && !strcmp(part, "elm.icon")) {
254 check = elm_check_add(obj);
255 elm_check_state_set(check, (homescreen_menu_its[index % (HOME_MENU_COUNT)].state) ? EINA_TRUE : EINA_FALSE);
256 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
257 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
265 void _homescreen_gl_del(void *data, Evas_Object *obj)
267 Homescreen_Item_Data *id = data;
272 Evas_Object *_create_homescreen_list(void *data)
276 DBG("%s", "_create_homescreen_list - appdata is null");
279 Evas_Object *genlist = NULL;
280 struct _homescreen_menu_item *menu_its = NULL;
285 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
286 itc->item_style = "1text";
287 itc->func.text_get = _gl_homescreen_title_get;
288 itc->func.del = _homescreen_gl_del;
290 Evas_Object *layout = elm_layout_add(ad->nf);
291 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
292 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
294 genlist = elm_genlist_add(layout);
295 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
297 menu_its = homescreen_menu_its;
299 for (idx = 0; idx < HOME_MENU_COUNT; idx++) {
300 Homescreen_Item_Data *id = calloc(sizeof(Homescreen_Item_Data), 1);
303 id->item = elm_genlist_item_append(
304 genlist, /* genlist object */
305 itc, /* item class */
308 ELM_GENLIST_ITEM_NONE,
309 menu_its[idx].func, /* call back */
313 elm_genlist_item_class_free(itc);
314 elm_object_part_content_set(layout, "elm.genlist", genlist);
319 char *_get_homeview_type_subtitle()
322 vconf_get_int(VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT, &value);
323 DBG("VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT : %d", value);
326 substr = strdup(_(home_icon_sub_str[value]));
331 static char *_gl_viewtype_title_get(void *data, Evas_Object *obj, const char *part)
333 Item_Data *id = data;
335 if (!strcmp(part, "elm.text")) {
338 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_HS_OPT_LARGE_ICONS_ABB"));
342 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_HS_OPT_SMALL_ICONS_ABB"));
349 static Evas_Object *_gl_viewtype_radio_get(void *data, Evas_Object *obj, const char *part)
351 Evas_Object *radio = NULL;
352 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
353 Item_Data *id = data;
355 if (!strcmp(part, "elm.icon")) {
356 radio = elm_radio_add(obj);
357 elm_object_style_set(radio, "list");
358 elm_radio_state_value_set(radio, id->index);
359 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
360 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
361 evas_object_propagate_events_set(radio, EINA_FALSE);
362 evas_object_repeat_events_set(radio, EINA_TRUE);
363 elm_radio_group_add(radio, radio_main);
369 static void _viewtype_gl_del(void *data, Evas_Object *obj)
371 Item_Data *id = data;
376 static void _viewtype_gl_cb(void *data, Evas_Object *obj, void *event_info)
378 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
381 vconf_set_int(VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT, idx);
383 /*elm_genlist_realized_items_update(g_screen_time_genlist); */
384 elm_naviframe_item_pop(temp_ad->nf);
385 if (!temp_ad->homescreen_rdg) {
386 evas_object_del(temp_ad->homescreen_rdg);
387 temp_ad->homescreen_rdg = NULL;
391 void _show_viewtype_list(void *data)
395 DBG("%s", "_show_viewtype_list - appdata is null");
398 Evas_Object *layout = NULL;
399 Evas_Object *genlist = NULL;
400 Elm_Object_Item *nf_it = NULL;
406 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
407 itc->item_style = "1text.1icon.1";
408 itc->func.text_get = _gl_viewtype_title_get;
409 itc->func.content_get = _gl_viewtype_radio_get;
410 itc->func.del = _viewtype_gl_del;
412 layout = elm_layout_add(ad->nf);
413 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
414 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
416 genlist = elm_genlist_add(layout);
417 elm_genlist_block_count_set(genlist, 14);
418 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
419 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
421 for (idx = 0; idx < VIEWTYPE_COUNT; idx++) {
422 Item_Data *id = calloc(sizeof(Item_Data), 1);
425 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _viewtype_gl_cb, (void *)idx);
429 ad->homescreen_rdg = elm_radio_add(genlist);
430 elm_radio_state_value_set(ad->homescreen_rdg, -1);
432 vconf_get_int(VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT, &value);
433 elm_radio_value_set(ad->homescreen_rdg, value);
434 evas_object_data_set(genlist, "radio_main", ad->homescreen_rdg);
436 elm_object_part_content_set(layout, "elm.genlist", genlist);
438 elm_genlist_item_class_free(itc);
440 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
441 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
444 /* home background */
445 static char *_gl_homebg_title_get(void *data, Evas_Object *obj, const char *part)
447 char buf[1024] = {0,};
448 Item_Data *id = data;
450 if (!strcmp(part, "elm.text")) {
451 snprintf(buf, sizeof(buf) - 1, "%s", _(homebg_menu_its[id->index].name));
456 static void _homebg_gl_del(void *data, Evas_Object *obj)
458 Item_Data *id = data;
463 static void _show_homebg_list(void *data)
467 DBG("%s", "_show_homebg_list - appdata is null");
470 Evas_Object *genlist = NULL;
471 Elm_Object_Item *nf_it = NULL;
472 struct _homebg_menu_item *menu_its = NULL;
477 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
478 itc->item_style = "1text";
479 itc->func.text_get = _gl_homebg_title_get;
480 itc->func.del = _homebg_gl_del;
482 Evas_Object *layout = elm_layout_add(ad->nf);
483 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
484 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
486 genlist = elm_genlist_add(layout);
487 elm_genlist_block_count_set(genlist, 14);
489 menu_its = homebg_menu_its;
491 for (idx = 0; idx < HOME_BG_LIST_COUNT; idx++) {
492 Item_Data *id = calloc(sizeof(Item_Data), 1);
495 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, menu_its[idx].func, ad);
499 g_home_bg_genlist = genlist;
501 elm_object_part_content_set(layout, "elm.genlist", genlist);
503 elm_genlist_item_class_free(itc);
505 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
506 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
509 static void _layout_del_cb(void *data , Evas *e, Evas_Object *obj, void *event_info)
511 page_data *pd = data;
515 static Eina_Bool animator_cb(void *data)
517 page_data *pd = (page_data *)data;
519 /*Since mapbuf is not perfect, Enable them after the size calculation is finished */
521 for (idx = 0; idx < BG_COLOR_COUNT / WALLPAPER_CNT_PER_PAGE; idx++) {
522 elm_mapbuf_enabled_set(pd->mapbuf[idx], EINA_TRUE);
524 return ECORE_CALLBACK_CANCEL;
527 static int _set_bg_color_type(int type_num)
529 if (type_num < 0 || type_num > BG_COLOR_COUNT - 1)
532 /*set color -> set mode */
533 vconf_set_str("db/wms/home_bg_palette", color[type_num].hex); /*ex. fcb800 */
534 vconf_set_int("db/wms/home_bg_mode", 0);
536 /*vconf_set_int(VCONFKEY_SETAPPL_HOME_BG_COLOR_TYPE_INT, type_num); */
537 DBG("color [%s]", color[type_num].hex);
542 static int _set_wallpaper_path(int thumbIdx)
544 if (thumbIdx < NUM_DEFAULT_THUMB_BUTTON || thumbIdx > DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON)
547 if (system_settings_set_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, thumb_path[thumbIdx]) != SYSTEM_SETTINGS_ERROR_NONE) {
548 DBG("Homescreen set Error : %s", thumb_path[thumbIdx]);
552 /*caution : set mode after change wallpaper */
553 if (gallery_img_cnt && thumbIdx == NUM_DEFAULT_THUMB_BUTTON) {
555 vconf_set_str("db/wms/home_bg_wallpaper", ".bgwallpaper.jpg");
556 vconf_set_int("db/wms/home_bg_mode", 2);
559 char *wallpaper_name = NULL;
560 wallpaper_name = strstr(thumb_path[thumbIdx], "wallpaper_");
561 vconf_set_str("db/wms/home_bg_wallpaper", wallpaper_name);
562 /*DBG("wallpaper_name[%s]",wallpaper_name); */
564 vconf_set_int("db/wms/home_bg_mode", 1);
571 static int prev_x = 0;
573 static void _mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
575 if (running_gallery == true) {
580 touch_mode = TOUCH_DOWN;
581 Evas_Event_Mouse_Down *ev = event_info;
582 prev_x = ev->canvas.x;
585 static void _mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
587 if (touch_mode == TOUCH_MOVE)
590 int type = (int)data;
592 DBG("Setting - BG type is %d", type);
597 feedback_play(FEEDBACK_PATTERN_TOUCH_TAP);
599 if (_set_bg_color_type(type)) {
600 if (temp_ad != NULL) {
601 elm_naviframe_item_pop(temp_ad->nf);
604 /* automatic freed!! */
605 struct _toast_data *toast = _create_toast(temp_ad, REPL(_("IDS_GALLERY_TPOP_HOME_BACKGROUND_SET"), "\n", "<br>"));
607 _show_toast(temp_ad, toast);
610 DBG("Setting - BG type is wrong!!");
614 static void _mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
616 if (running_gallery == true) {
621 Evas_Event_Mouse_Move *ev = event_info;
623 int cur_x = ev->cur.canvas.x;
625 if (abs(cur_x - prev_x) > 15) {
626 /* todo : confirm and remove */
627 touch_mode = TOUCH_MOVE;
631 static void _mouse_up_wallpaper_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
633 if (running_gallery == true) {
638 if (touch_mode == TOUCH_MOVE)
643 DBG("Setting - wallpaper idx is %d", idx);
650 feedback_play(FEEDBACK_PATTERN_TOUCH_TAP);
651 _show_bg_slide_cb(temp_ad, obj, event_info);
653 } else if (idx == 1) {
654 feedback_play(FEEDBACK_PATTERN_TOUCH_TAP);
655 _gallery_gl_cb(temp_ad, obj, event_info);
656 running_gallery = true;
657 elm_object_scroll_freeze_push(obj);
661 if (_set_wallpaper_path(idx)) {
662 feedback_play(FEEDBACK_PATTERN_TOUCH_TAP);
663 wallpaper_touched = true;
664 if (temp_ad != NULL) {
665 elm_naviframe_item_pop(temp_ad->nf);
668 /* automatic freed!! */
669 struct _toast_data *toast = _create_toast(temp_ad, REPL(_("IDS_GALLERY_TPOP_HOME_BACKGROUND_SET"), "\n", "<br>"));
671 _show_toast(temp_ad, toast);
675 DBG("Setting - wallpaper path is wrong!!");
679 static void _page_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
684 vconf_get_int(VCONFKEY_SETAPPL_HOME_BG_COLOR_TYPE_INT, &idx);
685 page = (idx - 1) / WALLPAPER_CNT_PER_PAGE;
689 elm_scroller_page_show(obj, page, 0);
692 static Evas_Object *_create_index(Evas_Object *parent)
694 Evas_Object *layout, *scroller, *box, *page_layout, *page, *mapbuf;
701 layout = elm_layout_add(parent);
705 page_data *pd = calloc(1, sizeof(page_data));
709 elm_layout_file_set(layout, EDJE_PATH, "setting-test/index");
710 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
711 evas_object_show(layout);
712 evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _layout_del_cb, pd);
714 /* Create Scroller */
715 scroller = elm_scroller_add(layout);
716 elm_scroller_loop_set(scroller, EINA_FALSE, EINA_FALSE);
717 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
718 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
719 /*elm_scroller_page_relative_set(scroller, 1.0, 0.0); */
720 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
721 elm_scroller_page_scroll_limit_set(scroller, 1, 0);
722 elm_object_scroll_lock_y_set(scroller, EINA_TRUE);
723 elm_scroller_page_size_set(scroller, WIN_SIZE, WIN_SIZE);
724 elm_object_part_content_set(layout, "scroller", scroller);
725 elm_object_style_set(scroller, "effect");
726 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
727 evas_object_show(scroller);
730 box = elm_box_add(scroller);
731 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
732 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
733 elm_box_horizontal_set(box, EINA_TRUE);
734 elm_object_content_set(scroller, box);
735 evas_object_show(box);
738 int totalPageCnt = 0;
739 totalPageCnt = (BG_COLOR_COUNT + 1) / NUM_MAX_THUMB_IN_PAGES;
740 for (index = 0; index < totalPageCnt; index++) {
741 page_layout = elm_layout_add(box);
742 evas_object_size_hint_weight_set(page_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
743 evas_object_size_hint_align_set(page_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
745 elm_layout_file_set(page_layout, EDJE_PATH, "thumbnail_page");
746 evas_object_show(page_layout);
749 for (thumbIdx = index * NUM_MAX_THUMB_IN_PAGES; thumbIdx < ((index * NUM_MAX_THUMB_IN_PAGES) + NUM_MAX_THUMB_IN_PAGES); thumbIdx++) {
750 Evas_Object *thumbnail_layout = elm_layout_add(page_layout);
751 evas_object_size_hint_weight_set(thumbnail_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
752 evas_object_size_hint_align_set(thumbnail_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
753 elm_layout_file_set(thumbnail_layout, EDJE_PATH, "thumbnail");
754 evas_object_show(thumbnail_layout);
757 page = evas_object_rectangle_add(evas_object_evas_get(page_layout));
758 evas_object_color_set(page, color[thumbIdx].r, color[thumbIdx].g, color[thumbIdx].b, 255);
759 evas_object_size_hint_weight_set(page, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
760 evas_object_size_hint_align_set(page, EVAS_HINT_FILL, EVAS_HINT_FILL);
762 elm_object_part_content_set(thumbnail_layout, "thumb", page);
763 evas_object_show(page);
765 switch (thumbIdx % NUM_MAX_THUMB_IN_PAGES) {
767 elm_object_part_content_set(page_layout, "thumb1", thumbnail_layout);
770 elm_object_part_content_set(page_layout, "thumb2", thumbnail_layout);
775 evas_object_event_callback_add(page, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL);
776 evas_object_event_callback_add(page, EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, (void *)(thumbIdx));
777 evas_object_event_callback_add(page, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, NULL);
779 elm_box_pack_end(box, page_layout);
782 evas_object_event_callback_add(scroller, EVAS_CALLBACK_RESIZE, _page_show, NULL);
784 /*ecore_animator_add(animator_cb, pd); */
790 _wallpaper_layout_del_cb(void *data , Evas *e, Evas_Object *obj, void *event_info)
792 wallpaper_page_data *pd = data;
797 wallpaper_animator_cb(void *data)
799 wallpaper_page_data *pd = (wallpaper_page_data *)data;
801 /*Since mapbuf is not perfect, Enable them after the size calculation is finished */
803 for (idx = 0; idx < DEFAULT_WALLPAPER_COUNT / WALLPAPER_CNT_PER_PAGE; idx++) {
804 elm_mapbuf_enabled_set(pd->mapbuf[idx], EINA_TRUE);
806 return ECORE_CALLBACK_CANCEL;
809 static void _wallpaper_page_show(void *data, Evas *e, Evas_Object *obj, void *event_info)
811 DBG("_wallpaper_page_show");
813 char *ret_wallpaper = NULL;
816 if (system_settings_get_value_string(SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN, &ret_wallpaper) != SYSTEM_SETTINGS_ERROR_NONE) {
819 for (idx; idx < DEFAULT_WALLPAPER_COUNT; idx++) {
820 if (ret_wallpaper && !strcmp(ret_wallpaper, thumb_path[idx])) {
821 DBG("wallpaper[%s] idx [%d]", ret_wallpaper, idx);
822 page_idx = idx / WALLPAPER_CNT_PER_PAGE;
828 /*set just first page to show */
830 elm_scroller_page_show(obj, page_idx, 0);
833 static void _update_wallpaper()
835 Evas_Object *page_layout, *thumbnail, *color_page, *gallery_page, *touch_eo;
836 Evas_Object *box = g_wallpaper_box;
838 if (box && !wallpaper_touched) {
840 int totalPageCnt = 0;
841 totalPageCnt = (DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt + 1) / NUM_MAX_THUMB_IN_PAGES;
843 for (index = 0; index < totalPageCnt; index++) {
844 page_layout = elm_layout_add(box);
845 evas_object_size_hint_weight_set(page_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
846 evas_object_size_hint_align_set(page_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
848 elm_layout_file_set(page_layout, EDJE_PATH, "thumbnail_page");
849 evas_object_show(page_layout);
852 for (thumbIdx = index * NUM_MAX_THUMB_IN_PAGES; thumbIdx < ((index * NUM_MAX_THUMB_IN_PAGES) + NUM_MAX_THUMB_IN_PAGES); thumbIdx++) {
853 DBG("total : %d, thumbIdx : %d", DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt + 1, thumbIdx);
854 if (DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt == thumbIdx) {
858 Evas_Object *thumbnail_layout = elm_layout_add(page_layout);
859 evas_object_size_hint_weight_set(thumbnail_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
860 evas_object_size_hint_align_set(thumbnail_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
861 elm_layout_file_set(thumbnail_layout, EDJE_PATH, "thumbnail");
862 evas_object_show(thumbnail_layout);
863 /*elm_object_signal_emit(thumbnail_layout, "thumb_bg,white", "thumb_bg"); */
865 /* color palette - set color box */
867 char *bg_color = NULL;
868 int R = 0x00, G = 0x00, B = 0x00;
869 bg_color = vconf_get_str("db/wms/home_bg_palette");
870 colorstr_to_decimal(bg_color, &R, &G, &B);
871 DBG("R : [%d] G : [%d] B : [%d]", R, G, B);
872 color_page = evas_object_rectangle_add(evas_object_evas_get(page_layout));
873 evas_object_color_set(color_page, R, G, B, 255);
874 evas_object_size_hint_weight_set(color_page, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
875 evas_object_size_hint_align_set(color_page, EVAS_HINT_FILL, EVAS_HINT_FILL);
876 elm_object_part_content_set(thumbnail_layout, "thumb", color_page);
877 evas_object_show(color_page);
878 g_color_page = color_page;
882 _get_last_img_path();
883 gallery_page = elm_image_add(page_layout);
884 elm_image_file_set(gallery_page, last_img_path, NULL);
885 elm_object_part_content_set(thumbnail_layout, "thumb", gallery_page);
886 evas_object_show(gallery_page);
891 thumbnail = elm_image_add(page_layout);/*thumb_path */
894 /*default 1,2page thumbnail button : pallette btn, gallery btn */
895 if (gallery_img_cnt || thumbIdx == 0 || thumbIdx == 1) {
898 idx_arr = thumbIdx + 1;
901 snprintf(buf, sizeof(buf), "%s", thumb_path[idx_arr]);
903 if (ecore_file_exists(buf)) {
904 elm_image_file_set(thumbnail, buf, NULL);
906 elm_image_file_set(thumbnail, NULL, NULL);
908 elm_image_aspect_fixed_set(thumbnail, EINA_FALSE);
909 elm_image_resizable_set(thumbnail, EINA_TRUE, EINA_TRUE);
911 if (thumbIdx == 0 || thumbIdx == 1)
912 elm_object_part_content_set(thumbnail_layout, "thumb_btn", thumbnail);
914 elm_object_part_content_set(thumbnail_layout, "thumb", thumbnail);
916 if (thumbIdx == 2 && gallery_img_cnt) {
917 g_gallery_prv = thumbnail;
919 evas_object_show(thumbnail);
923 vconf_get_int("db/wms/home_bg_mode", &bg_mode);
926 char *sel_wallpaper = NULL;
927 sel_wallpaper = vconf_get_str("db/menu_widget/bgset");
928 Evas_Object *selected_rect = elm_image_add(page_layout);
929 elm_image_file_set(selected_rect, SETTING_DEFAULT_WALLPAPER_PATH"/btn_icons/settings_wallpaper_selected.png", NULL);
930 elm_image_aspect_fixed_set(selected_rect, EINA_FALSE);
931 elm_image_resizable_set(selected_rect, EINA_TRUE, EINA_TRUE);
932 elm_object_part_content_set(thumbnail_layout, "thumb_select", selected_rect);
933 evas_object_show(selected_rect);
936 switch (thumbIdx % NUM_MAX_THUMB_IN_PAGES) {
938 elm_object_part_content_set(page_layout, "thumb1", thumbnail_layout);
941 elm_object_part_content_set(page_layout, "thumb2", thumbnail_layout);
947 touch_eo = color_page;
948 elm_object_signal_emit(thumbnail_layout, "thumbnail,opacity", "thumb_op");
949 } else if (thumbIdx == 1) {
950 touch_eo = gallery_page;
951 elm_object_signal_emit(thumbnail_layout, "thumbnail,opacity", "thumb_op");
953 touch_eo = thumbnail;
954 elm_object_signal_emit(thumbnail_layout, "thumbnail,default", "thumb_op");
957 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL);
958 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_UP, _mouse_up_wallpaper_cb, (void *)idx_arr);
959 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, NULL);
961 elm_box_pack_end(box, page_layout);
963 /*_wallpaper_page_show(NULL, NULL, g_wallpaper_scroller, NULL); */
968 static void _wallpaper_page_refresh(void *data, Evas *e, Evas_Object *obj, void *event_info)
970 DBG("is_prev_update , %d", is_prev_update);
973 bool _is_file_exist(const char *filepath)
975 if (ecore_file_exists(filepath) == EINA_TRUE) {
979 DBG("not exist %s", filepath);
983 static void _wallpaper_vconf_color_changed_cb(keynode_t *node, void *data)
985 char *bg_color = NULL;
986 int R = 0x00, G = 0x00, B = 0x00;
987 bg_color = vconf_get_str("db/wms/home_bg_palette");
988 colorstr_to_decimal(bg_color, &R, &G, &B);
989 evas_object_color_set(g_color_page, R, G, B, 255);
990 evas_object_show(g_color_page);
993 static void _wallpaper_vconf_wallpaper_changed_cb(keynode_t *node, void *data)
995 DBG("_wallpaper_vconf_wallpaper_changed_cb");
997 vconf_get_int("db/wms/home_bg_mode", &bg_mode);
998 if (bg_mode == 2 && !gallery_img_cnt) {
999 DBG("gallery_img_cnt : %d", gallery_img_cnt);
1001 if (g_wallpaper_layout) {
1002 evas_object_del(g_wallpaper_layout);
1003 g_wallpaper_layout = NULL;
1006 if (bg_mode == 2 && gallery_img_cnt) {
1008 /*char *bg_gallery = NULL; */
1009 /*bg_gallery = vconf_get_str(VCONFKEY_BGSET); */
1010 /*DBG(" bg mode 2 , gallery true , [%s]", bg_gallery); */
1011 /*elm_image_file_set(g_gallery_prv, bg_gallery, NULL); */
1012 /*evas_object_show(g_gallery_prv); */
1013 _update_wallpaper();
1016 if (bg_mode == 0 || bg_mode == 1) {
1017 _update_wallpaper();
1019 wallpaper_touched = false;
1022 static Evas_Object *_create_wallpaper_thumbnail(Evas_Object *parent)
1024 Evas_Object *layout, *scroller, *box, *page_layout, *thumbnail, *mapbuf, *color_page, *gallery_page;
1027 Evas_Object *touch_eo = NULL;
1032 if (_is_file_exist(CROPPED_GALLERY_DEFAULT_WALLPAPER_PATH) == true) {
1033 /*cropped gallery image exist or not */
1034 gallery_img_cnt = 1; /*fixed on 1page */
1039 layout = elm_layout_add(parent);
1043 elm_layout_file_set(layout, EDJE_PATH, "setting-test/index");
1044 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1045 evas_object_show(layout);
1046 g_wallpaper_layout = layout;
1048 /* Create Scroller */
1049 scroller = elm_scroller_add(layout);
1050 elm_scroller_loop_set(scroller, EINA_FALSE, EINA_FALSE);
1051 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1052 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
1053 /*elm_scroller_page_relative_set(scroller, 1.0, 0.0); */
1054 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF);
1055 elm_scroller_page_scroll_limit_set(scroller, 1, 0);
1056 elm_object_scroll_lock_y_set(scroller, EINA_TRUE);
1057 elm_scroller_page_size_set(scroller, WIN_SIZE, WIN_SIZE);
1058 elm_object_part_content_set(layout, "scroller", scroller);
1059 elm_object_style_set(scroller, "effect");
1060 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
1061 evas_object_show(scroller);
1062 g_wallpaper_scroller = scroller;
1065 box = elm_box_add(scroller);
1066 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1067 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
1068 elm_box_horizontal_set(box, EINA_TRUE);
1069 elm_object_content_set(scroller, box);
1070 evas_object_show(box);
1071 g_wallpaper_box = box;
1073 int totalPageCnt = 0;
1074 totalPageCnt = (DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt + 1) / NUM_MAX_THUMB_IN_PAGES;
1075 for (index = 0; index < totalPageCnt; index++) {
1076 page_layout = elm_layout_add(box);
1077 evas_object_size_hint_weight_set(page_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1078 evas_object_size_hint_align_set(page_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
1080 elm_layout_file_set(page_layout, EDJE_PATH, "thumbnail_page");
1081 evas_object_show(page_layout);
1084 for (thumbIdx = index * NUM_MAX_THUMB_IN_PAGES; thumbIdx < ((index * NUM_MAX_THUMB_IN_PAGES) + NUM_MAX_THUMB_IN_PAGES); thumbIdx++) {
1085 DBG("total : %d, thumbIdx : %d", DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt + 1, thumbIdx);
1086 if (DEFAULT_WALLPAPER_COUNT + NUM_DEFAULT_THUMB_BUTTON + gallery_img_cnt == thumbIdx) {
1090 Evas_Object *thumbnail_layout = elm_layout_add(page_layout);
1091 evas_object_size_hint_weight_set(thumbnail_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1092 evas_object_size_hint_align_set(thumbnail_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
1093 elm_layout_file_set(thumbnail_layout, EDJE_PATH, "thumbnail");
1094 evas_object_show(thumbnail_layout);
1095 /*elm_object_signal_emit(thumbnail_layout, "thumb_bg,white", "thumb_bg"); */
1097 /* color palette - set color box */
1098 if (thumbIdx == 0) {
1099 char *bg_color = NULL;
1100 int R = 0x00, G = 0x00, B = 0x00;
1101 bg_color = vconf_get_str("db/wms/home_bg_palette");
1102 colorstr_to_decimal(bg_color, &R, &G, &B);
1103 DBG("R : [%d] G : [%d] B : [%d]", R, G, B);
1104 color_page = evas_object_rectangle_add(evas_object_evas_get(page_layout));
1105 evas_object_color_set(color_page, R, G, B, 255);
1106 evas_object_size_hint_weight_set(color_page, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1107 evas_object_size_hint_align_set(color_page, EVAS_HINT_FILL, EVAS_HINT_FILL);
1108 elm_object_part_content_set(thumbnail_layout, "thumb", color_page);
1109 evas_object_show(color_page);
1110 g_color_page = color_page;
1113 if (thumbIdx == 1) {
1114 _get_last_img_path();
1115 gallery_page = elm_image_add(page_layout);
1116 elm_image_file_set(gallery_page, last_img_path, NULL);
1117 elm_object_part_content_set(thumbnail_layout, "thumb", gallery_page);
1118 evas_object_show(gallery_page);
1123 thumbnail = elm_image_add(page_layout);/*thumb_path */
1126 /*default 1,2page thumbnail button : pallette btn, gallery btn */
1127 if (gallery_img_cnt || thumbIdx == 0 || thumbIdx == 1) {
1130 idx_arr = thumbIdx + 1;
1133 snprintf(buf, sizeof(buf), "%s", thumb_path[idx_arr]);
1135 if (ecore_file_exists(buf)) {
1136 elm_image_file_set(thumbnail, buf, NULL);
1138 elm_image_file_set(thumbnail, NULL, NULL);
1140 elm_image_aspect_fixed_set(thumbnail, EINA_FALSE);
1141 elm_image_resizable_set(thumbnail, EINA_TRUE, EINA_TRUE);
1143 if (thumbIdx == 0 || thumbIdx == 1)
1144 elm_object_part_content_set(thumbnail_layout, "thumb_btn", thumbnail);
1146 elm_object_part_content_set(thumbnail_layout, "thumb", thumbnail);
1148 if (thumbIdx == 2 && gallery_img_cnt) {
1149 g_gallery_prv = thumbnail;
1151 evas_object_show(thumbnail);
1155 vconf_get_int("db/wms/home_bg_mode", &bg_mode);
1158 char *sel_wallpaper = NULL;
1159 sel_wallpaper = vconf_get_str("db/menu_widget/bgset");
1160 Evas_Object *selected_rect = elm_image_add(page_layout);
1161 elm_image_file_set(selected_rect, SETTING_DEFAULT_WALLPAPER_PATH"/btn_icons/settings_wallpaper_selected.png", NULL);
1162 elm_image_aspect_fixed_set(selected_rect, EINA_FALSE);
1163 elm_image_resizable_set(selected_rect, EINA_TRUE, EINA_TRUE);
1164 elm_object_part_content_set(thumbnail_layout, "thumb_select", selected_rect);
1165 evas_object_show(selected_rect);
1168 switch (thumbIdx % NUM_MAX_THUMB_IN_PAGES) {
1170 elm_object_part_content_set(page_layout, "thumb1", thumbnail_layout);
1173 elm_object_part_content_set(page_layout, "thumb2", thumbnail_layout);
1178 if (thumbIdx == 0) {
1179 touch_eo = color_page;
1180 elm_object_signal_emit(thumbnail_layout, "thumbnail,opacity", "thumb_op");
1181 } else if (thumbIdx == 1) {
1182 touch_eo = gallery_page;
1183 elm_object_signal_emit(thumbnail_layout, "thumbnail,opacity", "thumb_op");
1185 touch_eo = thumbnail;
1186 elm_object_signal_emit(thumbnail_layout, "thumbnail,default", "thumb_op");
1189 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, NULL);
1190 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_UP, _mouse_up_wallpaper_cb, (void *)idx_arr);
1191 evas_object_event_callback_add(touch_eo, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move_cb, NULL);
1193 elm_box_pack_end(box, page_layout);
1196 evas_object_event_callback_add(scroller, EVAS_CALLBACK_RESIZE, _wallpaper_page_show, NULL);
1197 register_vconf_changing("db/wms/home_bg_palette", _wallpaper_vconf_color_changed_cb, NULL);
1198 register_vconf_changing("db/wms/home_bg_mode", _wallpaper_vconf_wallpaper_changed_cb, NULL);
1203 static Eina_Bool _wallpaper_pop_cb(void *data, Elm_Object_Item *it)
1205 DBG("_wallpaper_pop_cb");
1206 unregister_vconf_changing("db/wms/home_bg_palette", _wallpaper_vconf_color_changed_cb);
1207 unregister_vconf_changing("db/wms/home_bg_mode", _wallpaper_vconf_wallpaper_changed_cb);
1211 void _wallpaper_gl_cb(void *data, Evas_Object *obj, void *event_info)
1213 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
1216 Evas_Object *layout_inner;
1217 Elm_Object_Item *it;
1219 ad = (appdata *)data;
1225 layout_inner = _create_wallpaper_thumbnail(ad->nf);
1226 it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout_inner, NULL);
1227 elm_naviframe_item_pop_cb_set(it, _wallpaper_pop_cb, ad);
1228 elm_naviframe_item_title_enabled_set(it, EINA_FALSE, EINA_FALSE);
1231 Evas_Object *create_wallpaper_list(void *data)
1234 Evas_Object *layout_inner;
1235 Elm_Object_Item *it;
1237 ad = (appdata *)data;
1244 ret = feedback_initialize();
1245 if (ret != FEEDBACK_ERROR_NONE) {
1246 DBG("feedback_initialize failed");
1249 layout_inner = _create_wallpaper_thumbnail(ad->nf);
1250 return layout_inner;
1253 void _gallery_result_cb(app_control_h service, app_control_h reply, app_control_result_e result, void *data)
1255 DBG("_gallery_result_cb");
1256 if (running_gallery) {
1257 running_gallery = false;
1258 elm_object_scroll_freeze_pop(data);
1262 static Eina_Bool _timer_cb(void *data)
1264 DBG("reset gallery running flag");
1265 if (running_gallery) {
1266 running_gallery = false;
1267 running_gallery_timer = NULL;
1268 elm_object_scroll_freeze_pop(data);
1270 return ECORE_CALLBACK_CANCEL;
1273 void _gallery_gl_cb(void *data, Evas_Object *obj, void *event_info)
1275 /*elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE); */
1276 DBG("_gallery_gl_cb");
1279 Evas_Object *layout_inner;
1280 Elm_Object_Item *it;
1282 ad = (appdata *)data;
1286 /*app_manager_is_running("org.tizen.w-gallery.appcontrol.setting_wallpaper", &running); */
1287 if (!running_gallery) {
1288 app_control_h service;
1289 app_control_create(&service);
1290 app_control_set_app_id(service, "org.tizen.w-gallery.appcontrol.setting_wallpaper");
1291 app_control_send_launch_request(service, _gallery_result_cb, obj);
1292 app_control_destroy(service);
1294 if (running_gallery_timer) {
1295 ecore_timer_del(running_gallery_timer);
1296 running_gallery_timer = NULL;
1298 running_gallery_timer = ecore_timer_add(1.0, (Ecore_Task_Cb)_timer_cb, obj);
1302 void _show_bg_slide_cb(void *data, Evas_Object *obj, void *event_info)
1304 /*elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE); */
1307 Evas_Object *layout_inner;
1308 Elm_Object_Item *it;
1310 ad = (appdata *)data;
1316 layout_inner = _create_index(ad->nf);
1317 it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout_inner, NULL);
1318 elm_naviframe_item_title_enabled_set(it, EINA_FALSE, EINA_FALSE);
1321 /* edit home screen */
1322 static void _show_edit_home(void *data)
1326 DBG("%s", "_show_edit_home - appdata is null");
1330 app_control_h service;
1331 app_control_create(&service);
1332 app_control_set_app_id(service, "org.tizen.w-home");
1333 app_control_add_extra_data(service, "home_op", "edit");
1334 app_control_send_launch_request(service, NULL, NULL);
1335 app_control_destroy(service);
1338 /* edit home screen */
1339 static void _show_edit_apps(void *data)
1343 DBG("%s", "_show_edit_home - appdata is null");
1347 app_control_h service;
1348 app_control_create(&service);
1349 app_control_set_app_id(service, "org.tizen.w-launcher-app");
1350 app_control_add_extra_data(service, "home_op", "apps_edit");
1351 app_control_send_launch_request(service, NULL, NULL);
1352 app_control_destroy(service);