Accessor for string_list keys
authorEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Thu, 23 Oct 2014 14:10:05 +0000 (12:10 -0200)
committerEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Mon, 27 Oct 2014 20:47:22 +0000 (18:47 -0200)
Change-Id: Ie6c692829bcd05a409e7102e8b9f3e87b94d79d6
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
src/wkb-ibus-config-eet.c
src/wkb-ibus-config-eet.h
src/wkb-ibus-config-key.c
src/wkb-ibus-config-key.h
src/wkb-ibus-config.c
src/wkb-ibus-config.h

index ed0f8e9372739741b372cac0ef520e88f8979ac1..87d50bdaef9268b5ca71b4f78d7c54458608582f 100644 (file)
@@ -881,6 +881,22 @@ wkb_ibus_config_eet_get_value_string(struct wkb_ibus_config_eet *config_eet, con
    return wkb_config_key_get_string(key);
 }
 
+char **
+wkb_ibus_config_eet_get_value_string_list(struct wkb_ibus_config_eet *config_eet, const char *section, const char *name)
+{
+   struct wkb_config_key *key;
+
+   if (!(key = _config_section_find_key(config_eet->ibus_config, section, name)))
+     {
+        ERR("Config key with id '%s' not found", name);
+        return NULL;
+     }
+
+   DBG("Found key: section = <%s> name = <%s>", section, name);
+
+   return wkb_config_key_get_string_list(key);
+}
+
 Eina_Bool
 wkb_ibus_config_eet_get_values(struct wkb_ibus_config_eet *config_eet, const char *section, Eldbus_Message_Iter *reply)
 {
index 1d10905bfa044d8f98ce1fd05c7c17a53537d178..e47a1383b942710b57844f33ab940df3bc341418 100644 (file)
@@ -42,6 +42,7 @@ void wkb_ibus_config_eet_shutdown(void);
 int wkb_ibus_config_eet_get_value_int(struct wkb_ibus_config_eet *config_eet, const char *section, const char *name);
 Eina_Bool wkb_ibus_config_eet_get_value_bool(struct wkb_ibus_config_eet *config_eet, const char *section, const char *name);
 const char *wkb_ibus_config_eet_get_value_string(struct wkb_ibus_config_eet *config_eet, const char *section, const char *name);
+char **wkb_ibus_config_eet_get_value_string_list(struct wkb_ibus_config_eet *config_eet, const char *section, const char *name);
 #ifdef __cplusplus
 }
 #endif
index 94c3a8da44e7220579be17ca82a90fac12fab16e..e44ce0a02b738c7c77d1040f03f80752eef571aa 100644 (file)
@@ -292,3 +292,19 @@ wkb_config_key_get_string(struct wkb_config_key* key)
    return *((const char **) key->field);
 }
 
+char **
+wkb_config_key_get_string_list(struct wkb_config_key *key)
+{
+   Eina_List *node, **list = (Eina_List **) key->field;
+   char *str, **ret;
+   int i = 0;
+
+   assert(!strcmp(key->signature, "as"));
+
+   ret = calloc(eina_list_count(*list) + 1, sizeof(char *));
+   EINA_LIST_FOREACH(*list, node, str)
+      ret[i++] = str;
+
+   return ret;
+}
+
index fc8352ab242fa946fae11cc79f175312d8461b86..f76f8aa1dec644f11f330f6146ba3d6cc69ac34b 100644 (file)
@@ -41,6 +41,7 @@ Eina_Bool wkb_config_key_get(struct wkb_config_key *key, Eldbus_Message_Iter *re
 int         wkb_config_key_get_int(struct wkb_config_key* key);
 Eina_Bool   wkb_config_key_get_bool(struct wkb_config_key* key);
 const char *wkb_config_key_get_string(struct wkb_config_key* key);
+char      **wkb_config_key_get_string_list(struct wkb_config_key *key);
 
 #ifdef __cplusplus
 }
index 408abeae676d1760b3d10a1548ea1cba43fde360..cf155c1fe0e018e19783a8b22811794c1cf55e93 100644 (file)
@@ -70,6 +70,15 @@ wkb_ibus_config_get_value_string(const char *section, const char *name)
    return wkb_ibus_config_eet_get_value_string(_conf_eet, section, name);
 }
 
+char **
+wkb_ibus_config_get_value_string_list(const char *section, const char *name)
+{
+   if (!_conf_eet)
+      return NULL;
+
+   return wkb_ibus_config_eet_get_value_string_list(_conf_eet, section, name);
+}
+
 static Eldbus_Message *
 _config_set_value(const Eldbus_Service_Interface *iface, const Eldbus_Message *msg)
 {
index c329c37dbb7a51f5536f90ff10280158c93bd698..0c7fc78496cca6f7e18fc260ca2b3c52118a610f 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2014 Jaguar Landrover
+ * Copyright © 2014 Intel Corporation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,6 +28,7 @@ extern "C" {
 int         wkb_ibus_config_get_value_int(const char *section, const char *name);
 Eina_Bool   wkb_ibus_config_get_value_bool(const char *section, const char *name);
 const char *wkb_ibus_config_get_value_string(const char *section, const char *name);
+char      **wkb_ibus_config_get_value_string_list(const char *section, const char *name);
 
 #ifdef __cplusplus
 }