Пример #1
0
static void
_sub_path_process(Elm_App_Client *eo, Eldbus_Message_Iter *obj_iter, Elm_App_Client_Data *data, Eina_Bool loading_list)
{
   const char *obj_path;
   Eldbus_Message_Iter *array_iface, *iface;

   eldbus_message_iter_arguments_get(obj_iter, "oa{sa{sv}}", &obj_path, &array_iface);
   while (eldbus_message_iter_get_and_next(array_iface, '{', &iface))
     {
        const char *iface_name;
        Eldbus_Message_Iter *array_props;
        Elm_App_Client_View *view;

        eldbus_message_iter_arguments_get(iface, "sa{sv}", &iface_name,
                                          &array_props);
        if (strcmp(iface_name, "org.enlightenment.ApplicationView1"))
          continue;

        view = eina_hash_find(data->views, obj_path);
        if (view)
          continue;

        view = eo_add(ELM_APP_CLIENT_VIEW_CLASS, eo,
                             elm_app_client_view_path_set(obj_path));
        eina_hash_add(data->views, obj_path, view);
        if (!loading_list)
          eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_CREATED, view));
     }
}
Пример #2
0
EAPI void
eldbus_message_iter_dict_iterate(Eldbus_Message_Iter *array, const char *signature, Eldbus_Dict_Cb_Get cb, const void *data)
{
   Eldbus_Message_Iter *entry;
   char *iter_sig;
   unsigned len;
   EINA_SAFETY_ON_FALSE_RETURN(array);
   EINA_SAFETY_ON_NULL_RETURN(signature);

   iter_sig = eldbus_message_iter_signature_get(array);
   len = strlen(iter_sig + 1);
   if (strncmp(signature, iter_sig + 1, len - 1))
     {
        ERR("Unexpected signature, expected is: %s", iter_sig);
        free(iter_sig);
        return;
     }
   free(iter_sig);

   while (eldbus_message_iter_get_and_next(array, 'e', &entry))
     {
        const void *key;
        Eldbus_Message_Iter *var;
        if (!eldbus_message_iter_arguments_get(entry, signature, &key, &var))
          continue;
        cb((void *)data, key, var);
     }
}
Пример #3
0
static void
_warning_level_from_variant(Eldbus_Message_Iter *variant)
{
   unsigned int val;

   if (!eldbus_message_iter_get_and_next(variant, 'u', &val))
     {
        ERR("Error getting WarningLevel.");
        return;
     }

   _ecore_battery_level = val;
   _battery_eval();
}
Пример #4
0
static void
_dump_serializable(struct wkb_ibus_serializable *s)
{
   Eldbus_Message_Iter *entry, *iter;
   const char *str;

   DBG("Serializable:");
   DBG("\tText...: %s", s->text);
   while (eldbus_message_iter_get_and_next(s->dict, 'v', &entry))
     {
        eldbus_message_iter_arguments_get(entry, "sv", &str, &iter);
        DBG("\t\tEntry.: '%s':'%s'", str, eldbus_message_iter_signature_get(iter));
     }
}
Пример #5
0
static Eina_Array *
_wkb_ibus_attr_list_from_message_iter(Eldbus_Message_Iter *iter)
{
   struct wkb_ibus_serializable ignore = { 0 };
   Eldbus_Message_Iter *iter_array, *iter_attr;
   struct wkb_ibus_attr *attr = NULL;
   Eina_Array *attr_list = NULL;

   DBG("Message iter signature '%s'", eldbus_message_iter_signature_get(iter));

   eldbus_message_iter_arguments_get(iter, "(sa{sv}av)", &iter_attr);
   if (!eldbus_message_iter_arguments_get(iter_attr, "sa{sv}av", &ignore.text,
                                          &ignore.dict, &iter_array))
     {
        ERR("Error deserializing IBusAttrList");
        goto end;
     }

   if (!iter_array)
     {
        INF("AttrList has no attribute");
        goto end;
     }

   while (eldbus_message_iter_get_and_next(iter_array, 'v', &iter_attr))
     {
        if (!(attr = wkb_ibus_attr_from_message_iter(iter_attr)))
          {
             _free_eina_array(attr_list, (_free_func) free);
             attr_list = NULL;
             goto end;
          }

        if (!attr_list)
            attr_list = eina_array_new(10);

        DBG("Appending new attribute: %p", attr);
        eina_array_push(attr_list, attr);
     }

end:
   return attr_list;
}
Пример #6
0
Eina_Array *
wkb_ibus_properties_from_message_iter(Eldbus_Message_Iter *iter)
{
   struct wkb_ibus_serializable ignore = { 0 };
   struct wkb_ibus_property *property = NULL;
   Eina_Array *properties = NULL;
   Eldbus_Message_Iter *iter_props, *props, *prop;

   DBG("Message iter signature '%s'", eldbus_message_iter_signature_get(iter));

   eldbus_message_iter_arguments_get(iter, "(sa{sv}av)", &iter_props);
   if (!eldbus_message_iter_arguments_get(iter_props, "sa{sv}av", &ignore.text,
                                          &ignore.dict, &props))
     {
        ERR("Error deserializing IBusPropList");
        goto end;
     }

   if (!props)
     {
        INF("PropList has no property");
        goto end;
     }

   while (eldbus_message_iter_get_and_next(props, 'v', &prop))
     {
        if (!(property = wkb_ibus_property_from_message_iter(prop)))
          {
             wkb_ibus_properties_free(properties);
             properties = NULL;
             goto end;
          }

        if (!properties)
           properties = eina_array_new(10);

        DBG("Appending new property %p", property);
        eina_array_push(properties, property);
     }

end:
   return properties;
}
Пример #7
0
struct wkb_ibus_lookup_table *
wkb_ibus_lookup_table_from_message_iter(Eldbus_Message_Iter *iter)
{
   struct wkb_ibus_serializable ignore = { 0 };
   struct wkb_ibus_lookup_table *table = calloc(1, sizeof(*table));
   struct wkb_ibus_text *text = NULL;
   Eldbus_Message_Iter *iter_table, *candidates, *labels, *t;

   EINA_SAFETY_ON_NULL_RETURN_VAL(table, NULL);

   DBG("Message iter signature '%s'", eldbus_message_iter_signature_get(iter));

   eldbus_message_iter_arguments_get(iter, "(sa{sv}uubbiavav)", &iter_table);
   if (!eldbus_message_iter_arguments_get(iter_table, "sa{sv}uubbiavav",
                                          &ignore.text, &ignore.dict,
                                          &table->page_size, &table->cursor_pos,
                                          &table->cursor_visible, &table->round,
                                          &table->orientation, &candidates,
                                          &labels))
     {
        ERR("Error deserializing IBusLookupTable");
        free(table);
        table = NULL;
        goto end;
     }

   DBG("Lookup table:");
   DBG("\tPage size.......: '%d'", table->page_size);
   DBG("\tCursor position.: '%d'", table->cursor_pos);
   DBG("\tCursor visible..: '%d'", table->cursor_visible);
   DBG("\tRound...........: '%d'", table->round);
   DBG("\tOrientation.....: '%d'", table->orientation);
   DBG("\tCandidates......: '%p'", candidates);
   DBG("\tLabels..........: '%p'", labels);

   if (!candidates)
     {
        INF("Lookup table has no candidates");
        goto labels;
     }

   while (eldbus_message_iter_get_and_next(candidates, 'v', &t))
     {
        if (!(text = wkb_ibus_text_from_message_iter(t)))
          {
             wkb_ibus_lookup_table_free(table);
             table = NULL;
             goto end;
          }

        if (!table->candidates)
           table->candidates = eina_array_new(10);

        DBG("Appending new candidate %s", text->text);
        eina_array_push(table->candidates, text);
     }

labels:
   if (!labels)
     {
        INF("Lookup table has no labels");
        goto end;
     }

   while (eldbus_message_iter_get_and_next(labels, 'v', &t))
     {
        if (!(text = wkb_ibus_text_from_message_iter(t)))
          {
             wkb_ibus_lookup_table_free(table);
             table = NULL;
             goto end;
          }

        if (!table->labels)
           table->labels = eina_array_new(10);

        DBG("Appending new label %s", text->text);
        eina_array_push(table->labels, text);
     }

end:
   return table;
}