SETTING_TRACE_BEGIN;
SETTING_TRACE("node type:%s", type);
Eina_List *check_list = _g_drawer_list;
- Object_Drawer *list_item = NULL;
+ Object_Drawer *list_item = NULL;
while (check_list) {
list_item = (Object_Drawer *) eina_list_data_get(check_list);
// access xml file
doc = xmlParseFile(plugin_path);
+ if (doc == NULL)
+ {
+ SETTING_TRACE("unable to parse file : %s", plugin_path);
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; /* xml parsing error */
+ }
// generate xml tree
xmlNode *root = xmlDocGetRootElement(doc);
// find a node
bool is_end = false;
+
+ // TODO : message queing
+ // get key/value from d-bus and parse xml and search xml data with key
+ static int count = 0;
+ SETTING_TRACE(" BEGIN ---------------------------- dbus--> before __node_finder : %d", count);
__node_finder((PluginNode*)ad->plugin_node, root, key_name ,val_name, &is_end);
+ SETTING_TRACE(" END ----------------------------- dbus--> after __node_finder : %d", count);
+ count += 1;
}
// update the node
GError *error = NULL;
xmlNode *xmlObj = data_parentItem->userdata;
- //char *value = (char*)xmlGetProp(xmlObj, "string");
char *value = (char*)xmlGetProp(xmlObj, "value");
SETTING_TRACE(">>> value = %s", value);
Evas_Object *rgd = NULL;
int subitem_index = 0;
int sel_idx = -1;
+#if 1
+ // print out debug message
+ if (data_parentItem->childs)
+ {
+ int howmany = 0;
+ Eina_List *li = data_parentItem->childs;
+ while(li)
+ {
+ Setting_GenGroupItem_Data* node = eina_list_data_get(li);
+ howmany += 1;
+ SETTING_TRACE(" <<< node->keyStr : %s >>> ", node->keyStr);
+
+ // go next
+ li = eina_list_next(li);
+ }
+ SETTING_TRACE(" <<<how many : %d>>> ", howmany);
+ }
+#endif
+ if (data_parentItem->childs)
+ {
+ eina_list_free(data_parentItem->childs);
+ data_parentItem->childs = NULL;
+ }
+
while (cur != NULL) {
if (!xmlStrcmp(cur->name, (const xmlChar*)"expanditem")) {
type = (char*)xmlGetProp(cur, "type");
subitem_index,
subitem_title, NULL);
- // SETTING_TRACE(">>> value = %s, subitem_title = %s ", value, subitem_title);
if (0 == safeStrCmp(value, subitem_title)) {
sel_idx = subitem_index;
SETTING_TRACE("%d is selected in Radio Group", sel_idx);
}
+ SETTING_TRACE(" eina list add >>> value = %s, subitem_title = %s ", value, subitem_title);
data_parentItem->childs = eina_list_append(data_parentItem->childs, list_item);
subitem_index++;
return layout;
}
+static void __plugin_genlist_unrealized_cb(void* data,Evas_Object* obj, void* event_info)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(data == NULL);
+
+ Elm_Object_Item *item = (Elm_Object_Item*)event_info;
+ Setting_GenGroupItem_Data *node = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+ ret_if(node== NULL);
+
+ SETTING_TRACE("keyStr : %s ", node->keyStr);
+ //item_to_update->childs)
+
+ if (node->childs)
+ {
+ eina_list_free(node->childs);
+ node->childs = NULL;
+ }
+}
+
// <setting>
static void* setting_func(void *data, xmlNode *xmlObj)
{
elm_object_style_set(pd->scroller, "dialogue");
elm_genlist_clear(pd->scroller); /* first to clear list */
+ evas_object_smart_callback_add(pd->scroller, "unrealized", __plugin_genlist_unrealized_cb, node);
+
+
SETTING_TRACE("_(title):%s", _(title));
setting_push_layout_navi_bar(
if (list_item) {
list_item->userdata = xmlObj;
list_item->belongs_to = (int)pd;
+ list_item->childs = NULL; /* init */
}
return list_item;
// case : toggle
if ( 0 == strcmp (cur_node->name, "bool"))
{
- SETTING_TRACE(">>>>> UPDATE TOGGLE CONTROL %x --- %s ",context->ui_list, id_name);
- Setting_GenGroupItem_Data* item_to_update = (Setting_GenGroupItem_Data*)eina_hash_find(context->ui_list, id_name);
+ SETTING_TRACE(">>>>> UPDATE TOGGLE CONTROL pluginpath:%s, ---- %x --- %s ", context->plugin_path, context->ui_list, id_name);
+ Setting_GenGroupItem_Data* item_to_update = NULL;
+ item_to_update = (Setting_GenGroupItem_Data*)eina_hash_find(context->ui_list, id_name);
if (item_to_update)
{
item_to_update->chk_status = atoi(value);
//-----------------------------------------------------------
if ( 0 == strcmp (cur_node->name, "expandlist"))
{
- SETTING_TRACE(">>>>> UPDATE EXPAND LIST CONTROL %x --- %s ",context->ui_list, id_name);
- Setting_GenGroupItem_Data* item_to_update = (Setting_GenGroupItem_Data*)eina_hash_find(context->ui_list, id_name);
- if (item_to_update)
- {
- char* old_string = item_to_update->sub_desc;
- item_to_update->sub_desc = strdup(value);
- SETTING_TRACE(">>> o-------------0 EXPAND LIST VALUE = %s ", value);
-
- // free old string
- // string update
- elm_object_item_data_set(item_to_update->item, item_to_update);
- elm_genlist_item_update(item_to_update->item);
-
- // TODO: need to update child elements
- // item_to_update->childs ---> expanded list
+ #if 1
+ SETTING_TRACE(">>>>> UPDATE EXPAND LIST CONTROL %x --- %s ",context->ui_list, id_name);
+ Setting_GenGroupItem_Data* item_to_update = NULL;
+ item_to_update = (Setting_GenGroupItem_Data*)eina_hash_find(context->ui_list, id_name);
+ if (item_to_update)
+ {
+ char* old_string = item_to_update->sub_desc;
+ item_to_update->sub_desc = strdup(value);
+ SETTING_TRACE(">>> o-------------0 EXPAND LIST VALUE = %s ", value);
+
+ // free old string
+ // string update
+ elm_object_item_data_set(item_to_update->item, item_to_update);
+ elm_genlist_item_update(item_to_update->item);
+
+ // TODO: need to update child elements
+ // item_to_update->childs ---> expanded list
+
+ // debug log
+ // there should have 4 sub items.
+ //-----------------------------------------------------
+ // has it already freed by someone?
+ //-----------------------------------------------------
if (item_to_update->childs)
{
+ int howmany2 =0;
Eina_List *li = item_to_update->childs;
- int radio_index = 0;
while(li)
{
Setting_GenGroupItem_Data* node = eina_list_data_get(li);
- // do something more
- // SETTING_TRACE(">>> RADIO LIST STRING VALUE = %s ", node->keyStr);
- // set position of radio button
- if (strcmp(node->keyStr, value) == 0)
- {
- elm_radio_value_set(node->rgd, radio_index);
- }
- elm_object_item_data_set(item_to_update->item, item_to_update);
- elm_genlist_item_update(item_to_update->item);
-
- // go next
+ howmany2 += 1;
li = eina_list_next(li);
- radio_index++;
}
-
+ SETTING_TRACE(" expandlist -- how many items are there? : %d ", howmany2);
}
- } else {
- SETTING_TRACE("item_to_update is NULL");
- }
- }
+ if (item_to_update->childs)
+ {
+ Eina_List *li = item_to_update->childs;
+ int radio_index = 0;
+ while(li)
+ {
+ Setting_GenGroupItem_Data* node = eina_list_data_get(li);
+
+ if (node->item && node->keyStr)
+ {
+ // do something more
+ // SETTING_TRACE(">>> RADIO LIST STRING VALUE = %s ", node->keyStr);
+ // set position of radio button
+ if (strcmp(node->keyStr, value) == 0) // << CRAAH !!!!
+ {
+ elm_radio_value_set(node->rgd, radio_index);
+ }
+ } else {
+ SETTING_TRACE(">>> node has unproper values - Setting_GenGroupItem_Data");
+ }
+ elm_object_item_data_set(item_to_update->item, item_to_update);
+ elm_genlist_item_update(item_to_update->item);
+
+ // go next
+ li = eina_list_next(li);
+ radio_index++;
+ }
+
+ }
+ } else {
+ SETTING_TRACE("item_to_update is NULL");
+ }
+
+
+ #endif
+ }
*is_end = true;
}
}
return -1;
}
-
-
// TODO: error handler here
__node_walker(context, context->pd->root);