*
*/
#include <aul_svc.h>
+#include <package_manager.h>
#include <pkgmgr-info.h>
#include "setting-storage-utils.h"
static void _move_more_ctxpopup(Evas_Object *ctxpopup)
{
+ SETTING_TRACE_BEGIN;
+
Evas_Object *win = NULL;
Evas_Coord w = 0;
Evas_Coord h = 0;
evas_object_move(ctxpopup, (h / 2), w);
break;
}
+
+ SETTING_TRACE_END;
}
static void _naviframe_resize_cb(void *data, Evas *e, Evas_Object *obj,
void *event_info)
{
+ SETTING_TRACE_BEGIN;
+
_move_more_ctxpopup((Evas_Object *)data);
+
+ SETTING_TRACE_END;
}
static void _genlist_check_hide(SettingStorage *ad, bool hide)
{
+ SETTING_TRACE_BEGIN;
+
Setting_GenGroupItem_Data *sel = NULL;
Elm_Object_Item *it = elm_genlist_first_item_get(ad->misces_genlist);
ELM_GENLIST_ITEM_FIELD_CONTENT);
it = elm_genlist_item_next_get(it);
}
+
+ SETTING_TRACE_END;
}
/**
static void _ctx_uninstall_click_cb(void *data, Evas_Object *ctxpopup,
void *event_info)
{
+ SETTING_TRACE_BEGIN;
+
retm_if(data == NULL, "Data parameter is NULL");
SettingStorage *ad = (SettingStorage *)data;
storage_naviframe_update_buttons(ad);
storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
SETTING_STORAGE_STR_SELECT_APPS);
+
+ SETTING_TRACE_END;
}
static Evas_Object *_create_ctxpopup(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
Evas_Object *ctxpopup = elm_ctxpopup_add(ad->md.naviframe);
elm_object_style_set(ctxpopup, "more/default");
evas_object_event_callback_add(ad->md.naviframe, EVAS_CALLBACK_RESIZE,
_naviframe_resize_cb, ctxpopup);
_move_more_ctxpopup(ctxpopup);
+
+ SETTING_TRACE_END;
return ctxpopup;
}
static void _create_sort_by_sub_menu(SettingStorage *ad)
{
SETTING_TRACE_BEGIN;
+
Evas_Object *check = NULL;
Evas_Object *menu_glist = NULL;
NULL);
elm_radio_value_set(check, ad->sort_type_app_view);
+
+ SETTING_TRACE_END;
}
static void _create_more_main_menu(SettingStorage *ad)
{
SETTING_TRACE_BEGIN;
+
ad->main_menu_popup = _create_ctxpopup(ad);
ad->apps_uninstall_ctx_it = elm_ctxpopup_item_append(ad->main_menu_popup,
elm_ctxpopup_item_append(ad->main_menu_popup,
_("IDS_ST_HEADER_SORT_BY"), NULL,
_show_sort_by_menu_cb, ad);
+
+ SETTING_TRACE_END;
}
static void _show_more_menu_cb(void *data, Evas_Object *obj,
void *event_info)
{
SETTING_TRACE_BEGIN;
+
Node_Info *node = NULL;
Eina_List *cur = NULL;
int removable_count = 0;
(removable_count <= 0));
evas_object_show(ad->main_menu_popup);
+
+ SETTING_TRACE_END;
}
static void _show_sort_by_menu_cb(void *data, Evas_Object *sub_menu_ctxpopup,
void *event_info)
{
SETTING_TRACE_BEGIN;
+
SettingStorage *ad = (SettingStorage *)data;
ret_if(!ad);
elm_ctxpopup_dismiss(ad->main_menu_popup);
_create_sort_by_sub_menu(ad);
+
+ SETTING_TRACE_END;
}
static void _sort_by_check_change_cb(void *data, Evas_Object *obj,
void *event_info)
{
+ SETTING_TRACE_BEGIN;
+
SettingStorage *ad = data;
Elm_Object_Item *item = event_info;
elm_radio_value_set(ad->sort_by_radio_group, ad->sort_type_app_view);
_sort_apps(data);
_update_ui_list(data);
+
+ SETTING_TRACE_END;
}
/*/////////////////////////////////////////////////////////////////////////// */
static Eina_Bool _apps_view_pop_cb(void *data, Elm_Object_Item *it)
{
SETTING_TRACE_BEGIN;
+
SettingStorage *ad = data;
retv_if(data == NULL, EINA_FALSE);
}
setting_view_change(ad->apps_view, ad->main_view, ad);
+
+ SETTING_TRACE_END;
return EINA_TRUE;
}
static void storage_misces_handle_selecting(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
Evas_Object *gl = NULL;
Elm_Object_Item *it = NULL;
Setting_GenGroupItem_Data *d_item = NULL;
storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
SETTING_STORAGE_STR_SELECT_APPS);
+
+ SETTING_TRACE_END;
}
static void storage_apps_genlist_sel(void *data, Evas_Object *obj,
void *event_info)
{
SETTING_TRACE_BEGIN;
+
Elm_Object_Item *item = event_info;
SettingStorage *ad = data;
Node_Info *node = NULL;
app_control_send_launch_request(svc, NULL, NULL);
app_control_destroy(svc);
}
+
+ SETTING_TRACE_END;
}
static void storage_apps_genlist_chk_cb(void *data, Evas_Object *obj,
SettingStorage *ad)
{
SETTING_TRACE_BEGIN;
+
Evas_Object *gl = ad->misces_genlist;
Elm_Object_Item *it = elm_genlist_first_item_get(gl);
if (it)
elm_object_item_del(it);
+
+ SETTING_TRACE_END;
}
static void storage_apps_gl_append_removable_items(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
Node_Info *node;
Eina_List *cur;
Setting_GenGroupItem_Data *item_data = NULL;
SETTING_TRACE_ERROR("item_data is NULL");
}
}
+
storage_misces_handle_selecting(ad);
+
+ SETTING_TRACE_END;
}
static void storage_apps_gl_append_items(SettingStorage *ad)
{
SETTING_TRACE_BEGIN;
+
Node_Info *node;
Eina_List *cur;
Setting_GenGroupItem_Data *item_data = NULL;
SETTING_TRACE_ERROR("item_data is NULL");
}
}
+
storage_misces_handle_selecting(ad);
+
+ SETTING_TRACE_END;
}
static void _update_ui_list(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
Evas_Object *toolbar = NULL;
SETTING_TRACE("Entering _update_ui_list");
elm_toolbar_last_item_get(toolbar),
EINA_TRUE);
}
+
+ SETTING_TRACE_END;
}
/******************************************************************************/
void _uninstall_app_thread_func_cb(int fn_result, SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
ret_if(NULL == ad);
ad->del_worker = NULL;
fn_result);
storage_fail_popup(ad);
}
+
+ SETTING_TRACE_END;
}
/**
static int _uninstall_app_thread_func(SettingStorage *ad)
{
SETTING_TRACE_BEGIN;
+
Node_Info *node = NULL;
Setting_GenGroupItem_Data *item_data = NULL;
Elm_Object_Item *it = NULL;
sleep(4);
+ SETTING_TRACE_END;
+
return SETTING_RETURN_SUCCESS;
}
/**
* [UI] Done button -> create popup -> button handler
*/
-static void _apps_delete_popup_cb(void *data, Evas_Object *obj,
- void *event_info)
+static void _apps_delete_popup_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
+
int response_type;
SettingStorage *ad = data;
STORAGE_STR_NO_SELECTED, storage_popup_del,
SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE, 0);
}
+
+ SETTING_TRACE_END;
+}
+
+static void _move_request_cb(int id,
+ const char *type,
+ const char *package,
+ package_manager_event_type_e event_type,
+ package_manager_event_state_e event_state,
+ int progress,
+ package_manager_error_e error,
+ void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+
+ SettingStorage *ad = (SettingStorage *)user_data;
+ char *event_type_str = NULL;
+ char *event_state_str = NULL;
+
+ switch (event_type) {
+ case PACKAGE_MANAGER_EVENT_TYPE_INSTALL:
+ event_type_str = "TYPE_INSTALL";
+ break;
+ case PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL:
+ event_type_str = "TYPE_UNINSTALL";
+ break;
+ case PACKAGE_MANAGER_EVENT_TYPE_UPDATE:
+ event_type_str = "TYPE_UPDATE";
+ break;
+ case PACKAGE_MANAGER_EVENT_TYPE_MOVE:
+ event_type_str = "TYPE_MOVE";
+ break;
+ case PACKAGE_MANAGER_EVENT_TYPE_CLEAR:
+ event_type_str = "TYPE_CLEAR";
+ break;
+ default:
+ event_type_str = "TYPE_UNKNOWN";
+ break;
+ }
+
+ switch (event_state) {
+ case PACKAGE_MANAGER_EVENT_STATE_STARTED:
+ event_state_str = "STATE_STARTED";
+ break;
+ case PACKAGE_MANAGER_EVENT_STATE_PROCESSING:
+ event_state_str = "STATE_PROCESSING";
+ break;
+ case PACKAGE_MANAGER_EVENT_STATE_COMPLETED:
+ event_state_str = "STATE_COMPLETED";
+ break;
+ case PACKAGE_MANAGER_EVENT_STATE_FAILED:
+ event_state_str = "STATE_FAILED";
+ break;
+ default:
+ event_state_str = "STATE_UNKNOWN";
+ break;
+ }
+
+ if (event_state == PACAKGE_MANAGER_EVENT_STATE_COMPLETED || event_state == PACAKGE_MANAGER_EVENT_STATE_FAILED || error != PACKAGE_MANAGER_ERROR_NONE)
+ ad->apps_to_move--;
+
+ if (ad->apps_to_move <= 0) {
+ dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved. Closing the popup.\033[0m", basename(__FILE__), __LINE__);
+
+ if (ad->popup) {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ }
+
+ dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d]\033[0;35m ID:%d, pkg:{%s, %s} {%s, %s}, %d%%, ERR: %s,\033[0m",
+ basename(__FILE__), __LINE__,
+ id,
+ type, package,
+ event_type_str, event_state_str,
+ progress,
+ get_error_message(error));
+
+ SETTING_TRACE_END;
+}
+
+static void _move_to_sd(SettingStorage *ad)
+{
+ SETTING_TRACE_BEGIN;
+
+ Setting_GenGroupItem_Data *d_item = NULL;
+ Node_Info *node = NULL;
+ package_manager_move_type_e move_type;
+ int sd_card_status;
+ package_manager_request_h request = NULL;
+ int id = 0;
+ Elm_Genlist_Item *it = elm_genlist_first_item_get(ad->misces_genlist);
+
+ if (!it) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] it == NULL\033[0m", __FILE__, __LINE__);
+ return;
+ }
+
+ int ret = package_manager_request_create(&request);
+ if (ret != PACKAGE_MANAGER_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] package_manager_request_create() error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+ return;
+ }
+
+ ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &sd_card_status);
+ if (ret != 0) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] vconf_get_int() error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+ return;
+ }
+
+ if (sd_card_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
+ move_type = PACKAGE_MANAGER_REQUEST_MOVE_TO_EXTERNAL;
+ } else if (sd_card_status == VCONFKEY_SYSMAN_MMC_EXTENDEDINTERNAL_MOUNTED) {
+ move_type = PACKAGE_MANAGER_REQUEST_MOVE_TO_INTERNAL;
+ } else {
+ dlog_print(DLOG_WARN, LOG_TAG, "[%s:%d] Wrong sd card state: %d", basename(__FILE__), __LINE__, sd_card_status);
+ return;
+ }
+
+ ad->popup = setting_create_popup_with_progressbar(ad, ad->md.window,
+ PROGRESSBAR_STYLE,
+ NULL, "Move to SD card", storage_popup_del,
+ 0, TRUE, TRUE, 0);
+
+ ad->apps_to_move = ad->misces_checked;
+
+
+ while (it) {
+ d_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(it);
+ if (!d_item) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] d_item == NULL\033[0m", __FILE__, __LINE__);
+ it = elm_genlist_item_next_get(it);
+ continue;
+ }
+
+ node = d_item->userdata;
+ if (!node) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] node == NULL\033[0m", __FILE__, __LINE__);
+ it = elm_genlist_item_next_get(it);
+ continue;
+ }
+
+ dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] app: %s, chk_status: %d\033[0m",
+ basename(__FILE__), __LINE__,
+ node->id, d_item->chk_status);
+
+ if (!d_item->chk_status) {
+ it = elm_genlist_item_next_get(it);
+ continue;
+ }
+
+ dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] name: %s, move_type=%d", basename(__FILE__), __LINE__, node->name, move_type);
+
+ ret = package_manager_request_move_with_cb(request, node->id, move_type, _move_request_cb, ad, &id);
+ if (ret != PACKAGE_MANAGER_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "\033[0;31m[%s:%d] cause error: %s\033[0m", __FILE__, __LINE__, get_error_message(ret));
+ it = elm_genlist_item_next_get(it);
+ ad->apps_to_move--;
+ continue;
+ }
+
+ dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved: %d to move: %d\033[0m",
+ basename(__FILE__), __LINE__, ad->apps_to_move, ad->misces_checked);
+
+
+ it = elm_genlist_item_next_get(it);
+ }
+
+ _update_ui_list(ad);
+
+ if (ad->apps_to_move <= 0) {
+ dlog_print(DLOG_DEBUG, LOG_TAG, "\033[0;32m[%s:%d] Apps moved. Closing the popup.\033[0m", basename(__FILE__), __LINE__);
+
+ if (ad->popup) {
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ }
+
+
+ SETTING_TRACE_END;
}
/**
* Done button handler for 'delete'
*/
-static void _apps_delete_click_cb(void *data, Evas_Object *obj,
- void *event_info)
+static void _apps_delete_click_cb(void *data, Evas_Object *obj, void *event_info)
{
- SettingStorage *ad = (SettingStorage *)data;
+ SETTING_TRACE_BEGIN;
+ SettingStorage *ad = (SettingStorage *)data;
ret_if(NULL == data);
+ dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] Launch mode: %s", basename(__FILE__), __LINE__, ad->launch_mode);
+
+ if (safeStrCmp(ad->launch_mode, "appselect") == 0) {
+ _move_to_sd(ad);
+ return;
+ }
+
if (ad->launched_by_external_app) {
/* TODO: add the code to handle external launch case: */
ui_app_exit();
ad->popup = setting_create_popup(ad, ad->md.window, NULL,
STORAGE_STR_DELETE_Q, _apps_delete_popup_cb, 0, FALSE, FALSE,
2, STORAGE_STR_DELETE, STORAGE_STR_CANCEL);
+
+ SETTING_TRACE_END;
}
/*****************************************************************************/
/*-------------------------------------------------- */
static int storage_apps_create(void *data)
{
+ SETTING_TRACE_BEGIN;
+
+ dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] ********** Compiled: %s %s **********",
+ basename(__FILE__), __LINE__,
+ __DATE__, __TIME__);
+
SettingStorage *ad = data;
retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
}
setting_view_storage_apps.is_create = 1;
+ SETTING_TRACE_END;
return SETTING_RETURN_SUCCESS;
}
static int storage_apps_destroy(void *data)
{
- SettingStorage *ad = data;
+ SETTING_TRACE_BEGIN;
+ SettingStorage *ad = data;
retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
evas_object_event_callback_del_full(ad->md.naviframe,
setting_view_storage_apps.is_create = 0;
+ SETTING_TRACE_END;
return SETTING_RETURN_SUCCESS;
}
static int storage_apps_cleanup(void *data)
{
+ SETTING_TRACE_BEGIN;
+
return storage_apps_destroy(data);
}
void storage_apps_init(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
ret_if(NULL == ad);
ret_if(ad->apps_view);
setting_view_storage_apps.cleanup = storage_apps_cleanup;
ad->sort_type_app_view = BY_NAME;
ad->apps_view = &setting_view_storage_apps;
+
+ SETTING_TRACE_END;
}
static void __select_all(SettingStorage *ad)
{
+ SETTING_TRACE_BEGIN;
+
Eina_List *cur = NULL;
int removable_count = 0;
Node_Info *node = NULL;
else
storage_update_naviframe_title(ad, _(IDS_ST_BODY_APPLICATION),
SETTING_STORAGE_STR_SELECT_APPS);
+
+ SETTING_TRACE_END;
}
static void __select_all_cb(void *data, Evas_Object *obj, void *event_info)
{
+ SETTING_TRACE_BEGIN;
+
Node_Info *node = NULL;
SettingStorage *ad = data;
Setting_GenGroupItem_Data *item_data = NULL;
ad->misces_is_select_all = item_data->chk_status;
__select_all(ad);
}
+
+ SETTING_TRACE_END;
}
static void __select_all_chk_btn_cb(void *data, Evas_Object *obj,
void *event_info)
{
SETTING_TRACE_BEGIN;
+
/* error check */
retm_if(data == NULL, "Data parameter is NULL");
Setting_GenGroupItem_Data *list_item =
ad->misces_is_select_all = elm_check_state_get(obj);
__select_all(ad);
+
+ SETTING_TRACE_END;
}