2 * Copyright 2012 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://www.tizenopensource.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.
21 #include <Elementary.h>
26 #include "all_apps/list.h"
30 menu_screen_error_e list_count(app_list *list, int *count)
32 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
33 retv_if(NULL == list->list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
34 retv_if(NULL == count, MENU_SCREEN_ERROR_INVALID_PARAMETER);
36 *count = eina_list_count(list->list);
38 return MENU_SCREEN_ERROR_OK;
43 menu_screen_error_e list_first(app_list *list)
45 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
49 return MENU_SCREEN_ERROR_OK;
54 menu_screen_error_e list_next(app_list *list)
58 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
59 retv_if(NULL == list->list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
61 count = eina_list_count(list->list);
62 if (list->cur_idx + 1 == count) return MENU_SCREEN_ERROR_NO_DATA;
66 return MENU_SCREEN_ERROR_OK;
71 menu_screen_error_e list_is_ended(app_list *list, bool *flag)
75 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
76 retv_if(NULL == list->list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
78 count = eina_list_count(list->list);
79 *flag = (list->cur_idx == count) ? true : false;
81 return MENU_SCREEN_ERROR_OK;
86 menu_screen_error_e list_get_item(app_list *list, app_list_item **item)
88 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
89 retv_if(NULL == list->list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
91 *item = eina_list_nth(list->list, list->cur_idx);
93 return MENU_SCREEN_ERROR_OK;
99 menu_screen_error_e list_get_values(const char *package, app_info_t *ai)
101 ail_appinfo_h appinfo_h;
107 retv_if(NULL == package, MENU_SCREEN_ERROR_FAIL);
108 retv_if(NULL == ai, MENU_SCREEN_ERROR_FAIL);
109 retv_if(NULL == (ai->package = strdup(package)), MENU_SCREEN_ERROR_FAIL);
111 ret = ail_package_get_appinfo(ai->package, &appinfo_h);
112 if (AIL_ERROR_OK == ret) {
114 break_if(ail_appinfo_get_str(appinfo_h, AIL_PROP_EXEC_STR, &exec) < 0);
115 break_if(ail_appinfo_get_str(appinfo_h, AIL_PROP_NAME_STR, &name) < 0);
116 break_if(ail_appinfo_get_str(appinfo_h, AIL_PROP_ICON_STR, &icon) < 0);
117 break_if(ail_appinfo_get_bool(appinfo_h, AIL_PROP_NODISPLAY_BOOL, &ai->nodisplay) < 0);
118 break_if(ail_appinfo_get_bool(appinfo_h, AIL_PROP_X_SLP_REMOVABLE_BOOL, &ai->x_slp_removable) < 0);
119 break_if(ail_appinfo_get_bool(appinfo_h, AIL_PROP_X_SLP_TASKMANAGE_BOOL, &ai->x_slp_taskmanage) < 0);
121 break_if(NULL == exec || NULL == (ai->exec = strdup(exec)));
122 break_if(NULL == name || NULL == (ai->name = strdup(name)));
123 break_if(NULL == icon || NULL == (ai->icon = strdup(icon)));
125 ail_package_destroy_appinfo(appinfo_h);
127 return MENU_SCREEN_ERROR_OK;
130 ail_package_destroy_appinfo(appinfo_h);
131 list_free_values(ai);
132 return MENU_SCREEN_ERROR_FAIL;
133 } else if (AIL_ERROR_NO_DATA == ret) {
134 return MENU_SCREEN_ERROR_OK;
137 return MENU_SCREEN_ERROR_FAIL;
142 void list_free_values(app_info_t *ai)
147 if (ai->package) free(ai->package);
148 if (ai->exec) free(ai->exec);
149 if (ai->name) free(ai->name);
150 if (ai->icon) free(ai->icon);
155 menu_screen_error_e list_append_item(app_list *list, app_list_item *item)
157 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
158 retv_if(NULL == item, MENU_SCREEN_ERROR_INVALID_PARAMETER);
160 list->list = eina_list_append(list->list, item);
161 retv_if(NULL == list->list, MENU_SCREEN_ERROR_FAIL);
163 return MENU_SCREEN_ERROR_OK;
168 menu_screen_error_e list_remove_item(app_list *list, app_list_item *item)
170 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
171 retv_if(NULL == list->list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
172 retv_if(NULL == item, MENU_SCREEN_ERROR_INVALID_PARAMETER);
174 list->list = eina_list_remove(list->list, item);
176 return MENU_SCREEN_ERROR_OK;
181 menu_screen_error_e list_sort(app_list *list, int (*_sort_cb)(const void *d1, const void *d2))
183 retv_if(NULL == list, MENU_SCREEN_ERROR_INVALID_PARAMETER);
185 list->list = eina_list_sort(list->list, eina_list_count(list->list), _sort_cb);
186 retv_if(NULL == list->list, MENU_SCREEN_ERROR_FAIL);
188 return MENU_SCREEN_ERROR_OK;