apply naviframe to plugin-model
[apps/core/preloaded/settings.git] / src / setting-main.c
index aec632f..eaa7d1a 100755 (executable)
@@ -1105,6 +1105,8 @@ bool is_3rdapp_installed_setting_cfg(char* pkgname)
 
 /**
  * @param data
+ * ex) name : AppSetting4
+ * ex) pkgname : UBKFwQidax.AppSetting4
  */
 static void draw_3rdapp(void* data, char* name, char* pkgname)
 {
@@ -1123,21 +1125,15 @@ static void draw_3rdapp(void* data, char* name, char* pkgname)
 
        if (ad)
        {
-               if (ad->plugin_path)
-               {
-                       free(ad->plugin_path);
-                       ad->plugin_path = NULL;
-               }
-               ad->plugin_path = strdup(fullpath);
-
-               setting_create_Gendial_field_groupitem(ad->main_genlist,
+               char* plugin_path =  strdup(fullpath);
+               Setting_GenGroupItem_Data * plugin_node = setting_create_Gendial_field_groupitem(ad->main_genlist,
                                                           &(ad->itc[GENDIAL_Type_1text_1icon_2]),
                                                           NULL,
                                                           setting_main_click_list_plugin_cb,
                                                           ad,
                                                           SWALLOW_Type_INVALID,
                                                           IMG_DefaultIcon, NULL,
-                                                          0, name, NULL,
+                                                          0, name, plugin_path,        // <<-- refactoring
                                                           NULL);
        }
        SETTING_TRACE_END;
@@ -1778,6 +1774,7 @@ static int setting_main_create(void *cb)
 
        setting_view_main.is_create = 1;
 
+       setting_drawer_list_init();
        return SETTING_RETURN_SUCCESS;
 }
 
@@ -1839,6 +1836,9 @@ static int setting_main_destroy(void *cb)
 
        evas_object_smart_callback_del(ad->main_genlist, "realized", __gl_realized);
 
+       setting_dbus_handler_fini();
+       setting_drawer_list_fini();
+
        setting_view_main.is_create = 0;
        SETTING_TRACE_END;
        return SETTING_RETURN_SUCCESS;
@@ -2193,25 +2193,23 @@ setting_main_click_list_plugin_cb(void *data, Evas_Object *obj,
        retm_if(event_info == NULL, "Invalid argument: event info is NULL");
        Elm_Object_Item *item = (Elm_Object_Item *) event_info;
        elm_genlist_item_selected_set(item, EINA_FALSE);
+       Setting_GenGroupItem_Data *selected_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
 
        setting_main_appdata *ad = data;
-       if (ad->plugin_path)
-       {
-               PluginNode* plugin_node = setting_plugin_create();
 
-               plugin_node->plugin_path = strdup(ad->plugin_path);
 
-               setting_plugin_load(plugin_node, (const char *)ad->plugin_path);
-               ad->plugin_node = (void*)plugin_node;
+       ad->plugin_path = strdup(selected_item->sub_desc);
+       SETTING_TRACE(" >> SELECTED plugin name : %s \n", ad->plugin_path);
 
-               #if 0
-               if(ad->plugin_path)
-               {
-                       free(ad->plugin_path);
-                       ad->plugin_path = NULL;
-               }
-               #endif
-       }
+       setting_dbus_handler_init( ad );
+
+       #if 1
+       PluginNode* plugin_node = setting_plugin_create(ad);
+       plugin_node->plugin_path = strdup(ad->plugin_path);
+       setting_plugin_load(plugin_node, (const char *)plugin_node->plugin_path);
+
+       ad->plugin_node = plugin_node; // the selected plugin name
+       #endif
 }
 
 /**