#include <stdbool.h>
#include <package-manager.h>
#include <pkgmgr-info.h>
+#include <appsvc.h>
+#include <app_manager.h>
#define WRT_PREFIX "wgt"
#define TPK_PREFIX "tpk"
static int _installed_cnt = 0;
static int _target_idx = 0;
static Eina_Bool _is_done = false;
+static Elm_Object_Item *_tabbar_item[VIEW_TYPE_MAX] = {NULL,};
+static Elm_Object_Item *_navi_it = NULL;
static Elm_Genlist_Item_Class *itc = NULL;
static Elm_Genlist_Item_Class *itc_sep = NULL;
{
MGR_APP_BEGIN();
+ mgr_app_app_info_t *app_info = NULL;
+ int i = 0;
+
+ for (i = 0; i < _installed_cnt; i++ ) {
+ app_info = (mgr_app_app_info_t *)g_list_nth_data(_installed_list, 0);
+ if (NULL == app_info) {
+ continue;
+ }
+ MGR_APP_MEM_FREE(app_info->pkg_label);
+ MGR_APP_MEM_FREE(app_info->pkg_name);
+ //MGR_APP_MEM_FREE(app_info->app_name);
+ //MGR_APP_MEM_FREE(app_info->app_type);
+ MGR_APP_MEM_FREE(app_info->pkg_type);
+ MGR_APP_MEM_FREE(app_info->icon_path);
+ //MGR_APP_MEM_FREE(app_info->appid);
+ _installed_list = g_list_remove(_installed_list, app_info);
+ }
+
elm_genlist_item_class_free(itc);
elm_genlist_item_class_free(itc_sep);
}
ret_if(data == NULL);
mgr_app_app_info_t *app_info = (mgr_app_app_info_t *)data;
-
+#if 0
// TODO
MGR_APP_MEM_FREE(app_info->pkg_name);
MGR_APP_MEM_FREE(app_info->pkg_label);
MGR_APP_MEM_FREE(app_info->icon_path);
//MGR_APP_MEM_FREE(app_info->appid);
//MGR_APP_MEM_FREE(app_info);
+#endif
+
MGR_APP_END();
}
return 0;
}
-static void _create_genlist_app_list(Evas_Object *parent, void *data)
+static void _create_genlist_app_list(seg_type_t seg, void *data)
{
MGR_APP_BEGIN();
Evas_Object *genlist = NULL;
Evas_Object *index = NULL;
Elm_Object_Item *item_sep = NULL;
+ Evas_Object *layout = NULL;
Elm_Object_Item *item = NULL;
char *letter = NULL;
int r = PKGMGR_R_ERROR;
int i = 0;
-
+ bool is_running = false;
/* set the genlist item style */
itc = elm_genlist_item_class_new();
itc_sep->func.state_get = NULL;
itc_sep->func.del = NULL;
+ layout = mgr_app_create_layout_file(ugd->navi_bar, EDC_FILE, EDC_GROUPS);
+ ret_if(NULL == layout);
/* Create index */
- index = elm_index_add(parent);
+ index = elm_index_add(layout);
ret_if(index == NULL);
- elm_object_part_content_set(parent, "elm.swallow.content.index", index);
+ elm_object_part_content_set(layout, "elm.swallow.content.index", index);
evas_object_show(index);
/* add a genlist */
- genlist = elm_genlist_add(parent);
+ genlist = elm_genlist_add(layout);
ret_if(genlist == NULL);
- elm_object_part_content_set(parent, "elm.swallow.content.genlist", genlist);
+ elm_object_part_content_set(layout, "elm.swallow.content.genlist", genlist);
evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
_index = index;
_index_cnt = 0;
-#if 0
- //r = pkgmgrinfo_appinfo_get_installed_list(_app_list_cb, NULL);
- //if (PKGMGR_R_OK != r) {
- // MGR_APP_DEBUG_ERR("pkgmgrinfo_appinfo_get_installed_list failed. %d", r);
- //}
-#endif
- r = pkgmgr_pkginfo_get_list(_pkgmgr_iter_fn, data);
- //r = pkgmgr_get_pkg_list(_pkgmgr_iter_fn, data); // deprecated api ??
- if (PKGMGR_R_OK != r) {
- MGR_APP_DEBUG_ERR("pkgmgr_get_pkg_list failed. %d", r);
- }
-
- /* sorting by pkg_name */
- _installed_list = g_list_sort(_installed_list, _app_list_qsort_cb);
/* header border */
item_sep = elm_genlist_item_append(genlist, itc_sep, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
}
MGR_APP_DEBUG("genlist %d app_info->pkg_label: %s", i, app_info->pkg_label);
+ if (LIST_SEG_TYPE_RUNNING == seg
+ && APP_MANAGER_ERROR_NONE == app_manager_is_running(app_info->pkg_name, &is_running)
+ && false == is_running) {
+ continue;
+ }
+
item = elm_genlist_item_append(genlist, itc, (void*)app_info, NULL, ELM_GENLIST_ITEM_NONE, _gl_sel, (void*)ugd);
/* fast scroll insertion */
}
MGR_APP_MEM_FREE(letter);
+
}
/* footer border */
evas_object_smart_callback_add(index, "changed", _index_changed, NULL);
evas_object_smart_callback_add(index, "selected", _index_selected, NULL);
+ elm_object_item_part_content_set(_navi_it, "elm.swallow.content", layout);
/* register pkg-mgr listener */
ret_if(ugd->pc_listen == NULL);
r = pkgmgr_client_listen_status(ugd->pc_listen, mgrapp_view_listen_cb, (void*)ugd);
if (r < 0) {
MGR_APP_DEBUG_ERR("status listen failed!\n");
- MGR_APP_MEM_FREE(genlist);
return ;
}
MGR_APP_END();
}
+static void _create_genlist_app_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MGR_APP_BEGIN();
+
+ ret_if(NULL == data);
+
+ _create_genlist_app_list(LIST_SEG_TYPE_APPLICATION, data);
+
+ MGR_APP_END();
+}
+
+static void _create_genlist_all_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MGR_APP_BEGIN();
+
+ ret_if(NULL == data);
+
+ _create_genlist_app_list(LIST_SEG_TYPE_ALL, data);
+
+ MGR_APP_END();
+}
+
+static void _create_genlist_running_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ MGR_APP_BEGIN();
+
+ ret_if(NULL == data);
+
+ _create_genlist_app_list(LIST_SEG_TYPE_RUNNING, data);
+
+ MGR_APP_END();
+}
+
void mgrapp_view_list_create(void *data)
{
MGR_APP_BEGIN();
struct ug_data *ugd = (struct ug_data *)data;
Evas_Object *layout = NULL;
Evas_Object *back_btn = NULL;
-
- mgrapp_set_view_type(VIEW_TYPE_APP_LIST);
+ Evas_Object *tabbar = NULL;
+ Elm_Object_Item *tool_it = NULL;
+ Elm_Object_Item *navi_it = NULL;
+ int r = 0;
- layout = mgr_app_create_layout_file(ugd->navi_bar, EDC_FILE, EDC_GROUPS);
- ret_if(NULL == layout);
+ mgrapp_set_view_type(VIEW_TYPE_APP_LIST);
- _create_genlist_app_list(layout, ugd);
+ Evas_Object *nocontents = NULL;
+ nocontents = elm_layout_add(ugd->navi_bar);
+ ret_if(NULL == nocontents);
+ elm_layout_theme_set(nocontents, "layout", "nocontents", "full");
/* back button */
back_btn = elm_button_add(ugd->navi_bar);
elm_object_style_set(back_btn, "naviframe/end_btn/default");
evas_object_smart_callback_add(back_btn, "clicked", _app_list_back_cb, (void*)ugd);
- elm_naviframe_item_push(ugd->navi_bar, MGRAPP_STR_MANAGE_APPLICATIONS, back_btn, NULL, layout, NULL);
+ _navi_it = navi_it = elm_naviframe_item_push(ugd->navi_bar, MGRAPP_STR_MANAGE_APPLICATIONS, back_btn, NULL, nocontents, "tabbar");
+
+#if 0
+ //r = pkgmgrinfo_appinfo_get_installed_list(_app_list_cb, NULL);
+ //if (PKGMGR_R_OK != r) {
+ // MGR_APP_DEBUG_ERR("pkgmgrinfo_appinfo_get_installed_list failed. %d", r);
+ //}
+#endif
+ r = pkgmgr_pkginfo_get_list(_pkgmgr_iter_fn, data);
+ //r = pkgmgr_get_pkg_list(_pkgmgr_iter_fn, data); // deprecated api ??
+ if (PKGMGR_R_OK != r) {
+ MGR_APP_DEBUG_ERR("pkgmgr_get_pkg_list failed. %d", r);
+ }
+
+ /* sorting by pkg_label */
+ _installed_list = g_list_sort(_installed_list, _app_list_qsort_cb);
+
+ /* create toolbar */
+ tabbar = elm_toolbar_add(ugd->navi_bar);
+ ret_if(NULL == tabbar);
+ elm_toolbar_shrink_mode_set(tabbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_object_style_set(tabbar, "tabbar");
+ elm_object_item_part_content_set(navi_it, "tabbar", tabbar);
+
+ _tabbar_item[LIST_SEG_TYPE_APPLICATION] = elm_toolbar_item_append(tabbar, NULL, MGRAPP_STR_APPLICATION, _create_genlist_app_cb, (void*)ugd);
+ _tabbar_item[LIST_SEG_TYPE_RUNNING] = elm_toolbar_item_append(tabbar, NULL, MGRAPP_STR_RUNNING, _create_genlist_running_cb, (void*)ugd);
+ _tabbar_item[LIST_SEG_TYPE_ALL] = elm_toolbar_item_append(tabbar, NULL, MGRAPP_STR_ALL, _create_genlist_all_cb, (void*)ugd);
+ elm_toolbar_item_selected_set(_tabbar_item[LIST_SEG_TYPE_APPLICATION], EINA_TRUE);
mgr_app_doubletap_sensor_set_cb(_doubletap_sensor_cb, _genlist);
mgr_app_doubletap_sensor_enable();