#include <algorithm>
#include <tzplatform_config.h>
#include <inputmethod_manager.h>
+#include <package_manager.h>
+
#include "isf_control.h"
#define IM_SETTING_LIST_PACKAGE PACKAGE
static int g_active_ime_index = -1;
static list_item_text item_text[2];
static std::vector<gen_item_data> g_gen_item_data;
+static package_manager_h pkgmgr = NULL;
void im_setting_list_update_window(void *data);
elm_genlist_item_class_free(itc_im_list_title);
itc_im_list_title = NULL;
}
+
+ if (pkgmgr) {
+ package_manager_destroy(pkgmgr);
+ pkgmgr = NULL;
+ }
}
void im_setting_list_update_window(void *data)
im_setting_list_add_ime(ad);
}
+static void _package_manager_event_cb(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)
+{
+ appdata *ad = (appdata *)user_data;
+
+ if (!package || !type)
+ return;
+
+ if (event_state != PACKAGE_MANAGER_EVENT_STATE_COMPLETED)
+ return;
+
+ if (event_type == PACKAGE_MANAGER_EVENT_TYPE_INSTALL ||
+ event_type == PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL ||
+ event_type == PACKAGE_MANAGER_EVENT_TYPE_UPDATE) {
+ LOGD("PACKAGE_MANAGER_EVENT type : %d", event_type);
+ /* Wait for updating IME package list in ISF */
+ usleep(20000);
+ im_setting_list_popup_view_del(ad);
+ im_setting_list_popup_view_create(ad);
+ }
+}
+
void
im_setting_list_app_create(void *data)
{
im_setting_list_bg_create(ad->win);
im_setting_list_load_ime_info();
+ if (!pkgmgr) {
+ int ret = package_manager_create(&pkgmgr);
+ if (ret == PACKAGE_MANAGER_ERROR_NONE) {
+ ret = package_manager_set_event_cb(pkgmgr, _package_manager_event_cb, ad);
+ if (ret == PACKAGE_MANAGER_ERROR_NONE) {
+ LOGD("package_manager_set_event_cb succeeded.\n");
+ } else {
+ LOGD("package_manager_set_event_cb failed(%d)\n", ret);
+ }
+ } else {
+ LOGD("package_manager_create failed(%d)\n", ret);
+ }
+ }
+
im_setting_list_list_create(ad);
evas_object_show(ad->win);
}