4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <setting-menuscreen-main.h>
22 #include <setting-common-draw-widget.h>
25 static int setting_menuscreen_main_create(void *cb);
26 static int setting_menuscreen_main_destroy(void *cb);
27 static int setting_menuscreen_main_update(void *cb);
28 static int setting_menuscreen_main_cleanup(void *cb);
32 static void _get_menuscreen_info2(/*[OUT]*/int* pkglist_cnt, void* data);
33 ail_cb_ret_e appinfo_menuscreen_func(const ail_appinfo_h appinfo, void *user_data);
35 static void setting_menuscreen_main_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info);
37 static void setting_menuscreen_mouse_up_Gendial_list_radio_cb(void *data, Evas_Object *obj, void *event_info);
39 setting_view setting_view_menuscreen_main = {
40 .create = setting_menuscreen_main_create,
41 .destroy = setting_menuscreen_main_destroy,
42 .update = setting_menuscreen_main_update,
43 .cleanup = setting_menuscreen_main_cleanup,
46 static int setting_menuscreen_main_create(void *cb)
49 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
50 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) cb;
51 Evas_Object *scroller = NULL;
53 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
55 _("IDS_ST_HEADER_HOME_SCREEN_ABB"), _("IDS_COM_BODY_BACK"),
57 setting_menuscreen_main_click_softkey_back_cb,
61 Elm_Object_Item *item = NULL;
62 item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
63 ELM_GENLIST_ITEM_NONE, NULL, NULL);
64 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
66 int* pkglist_cnt = &ad->pkglist_cnt;
68 _get_menuscreen_info2(pkglist_cnt, ad);
71 ad->chk_radio = elm_radio_add(scroller);
72 elm_radio_state_value_set(ad->chk_radio, -1);
74 Setting_GenGroupItem_Data *item_data = NULL;
75 Eina_List* elist = NULL;
76 ug_menuscreen_info* pnode = NULL;
78 char *sel_str = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
80 EINA_LIST_FOREACH( ad->menuscreen_list, elist, pnode)
82 item_data = setting_create_Gendial_field_2radio(scroller,
83 &(ad->itc_1text_1icon_2),
84 setting_menuscreen_mouse_up_Gendial_list_radio_cb,
94 item_data->userdata = ad;
96 SETTING_TRACE_ERROR("item_data is NULL");
98 SETTING_TRACE("pkgname[%s] sel_str[%s]", pnode->pkgname, sel_str);
99 if (0 == safeStrCmp(pnode->pkgname, sel_str))
101 elm_radio_value_set(ad->chk_radio, idx);
109 setting_view_menuscreen_main.is_create = 1;
110 return SETTING_RETURN_SUCCESS;
113 static int setting_menuscreen_main_destroy(void *cb)
117 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
119 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) cb;
121 if (ad->ly_main != NULL) {
122 evas_object_del(ad->ly_main);
123 /* if(ad->back_dialData) FREE(ad->back_dialData); */
124 setting_view_menuscreen_main.is_create = 0;
127 return SETTING_RETURN_SUCCESS;
130 static int setting_menuscreen_main_update(void *cb)
134 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
136 return SETTING_RETURN_SUCCESS;
139 static int setting_menuscreen_main_cleanup(void *cb)
143 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
145 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) cb;
147 if (ad->ly_main != NULL) {
148 /* evas_object_hide(ad->ly_main); */
151 return SETTING_RETURN_SUCCESS;
154 /* ***************************************************
158 ***************************************************/
161 setting_menuscreen_main_click_softkey_back_cb(void *data, Evas_Object *obj,
166 setting_retm_if(data == NULL,
167 "[Setting > Menuscreen] Data parameter is NULL");
169 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) data;
171 /* Send destroy request */
172 ug_destroy_me(ad->ug);
178 static void _get_menuscreen_info2(/*[OUT]*/int* pkglist_cnt, void* data)
181 SettingMenuscreenUG *ugd = (SettingMenuscreenUG *) data;
188 ret = ail_filter_new(&filter);
189 if (ret != AIL_ERROR_OK) {
193 ret = ail_filter_count_appinfo(filter, &n);
194 //printf("count =%d \n", n);
197 ret = ail_filter_add_str(filter, AIL_PROP_CATEGORIES_STR, "home-screen");
198 if (ret != AIL_ERROR_OK) {
199 ail_filter_destroy(filter);
203 ail_filter_list_appinfo_foreach(filter, appinfo_menuscreen_func, (void *)ugd);
204 ail_filter_destroy(filter);
208 /opt/home/root/aaa/cprog/ail_test # ./ail_test
212 ail_cb_ret_e appinfo_menuscreen_func(const ail_appinfo_h appinfo, void *user_data)
215 SettingMenuscreenUG *ugd = (SettingMenuscreenUG *) user_data;
221 ail_appinfo_get_str(appinfo, AIL_PROP_PACKAGE_STR, &package);
222 ail_appinfo_get_str(appinfo, AIL_PROP_NAME_STR, &appname);
224 Eina_List** d_menuscreen_list = &ugd->menuscreen_list;
226 ug_menuscreen_info* pnode = (ug_menuscreen_info*)malloc(sizeof(ug_menuscreen_info));
227 pnode->pkgname = strdup(package);
228 pnode->appname = strdup(appname);
230 SETTING_TRACE(" >>>>>>>>>> s_i=%d %s\n", s_i++, package);
232 *d_menuscreen_list = eina_list_append(*d_menuscreen_list, pnode);
235 return AIL_CB_RET_CANCEL;
237 return AIL_CB_RET_CONTINUE;
240 static void setting_menuscreen_mouse_up_Gendial_list_radio_cb(void *data, Evas_Object *obj, void *event_info)
244 setting_retm_if(data == NULL, "Data parameter is NULL");
245 setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL");
247 Evas_Object *radio = (Evas_Object *) data;
248 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
249 elm_genlist_item_selected_set(item, 0);
251 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
252 if (list_item->chk_status == elm_radio_value_get(radio))
253 {//select the same item
257 SettingMenuscreenUG *ad = (SettingMenuscreenUG *) list_item->userdata;
259 SETTING_TRACE("---------------------------------------------");
260 SETTING_TRACE("chk_status = %d ", list_item->chk_status);
261 SETTING_TRACE("sub_desc= %s", list_item->sub_desc);
262 SETTING_TRACE("KeyStr= %s", list_item->keyStr);
263 SETTING_TRACE("---------------------------------------------");
265 // store list_itemdata
266 ad->selected_theme = list_item->sub_desc;
268 if ( 0 == strcmp(list_item->sub_desc, SETTING_THEME_LIVE_MAGAZINE))
270 setting_view_change(&setting_view_menuscreen_main, &setting_view_menuscreen_password, ad);
273 else if (0 == strcmp(list_item->sub_desc, SETTING_THEME_CLUSTER_HOME))
275 setting_view_change(&setting_view_menuscreen_main, &setting_view_menuscreen_password, ad);
279 elm_radio_value_set(radio, list_item->chk_status);
280 vconf_set_str( VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, ad->selected_theme);
282 ug_destroy_me(ad->ug);