summaryrefslogtreecommitdiffstats
path: root/src/stkagent.c
diff options
context:
space:
mode:
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>2010-07-28 12:26:08 +0200
committerDenis Kenzior <denkenz@gmail.com>2010-07-30 17:19:55 -0500
commit5faa3951c2af362a134f781322f49950ae9510c5 (patch)
tree33620524acd832865122cda61b401b1d96a04b89 /src/stkagent.c
parent9654c69d7d2dff9a12b50a8b9c11d02798f2e5c0 (diff)
downloadofono-5faa3951c2af362a134f781322f49950ae9510c5.tar.bz2
stk: Utilities to deal with menus.
Diffstat (limited to 'src/stkagent.c')
-rw-r--r--src/stkagent.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/stkagent.c b/src/stkagent.c
index d49fec39..3f80ba1f 100644
--- a/src/stkagent.c
+++ b/src/stkagent.c
@@ -297,3 +297,39 @@ struct stk_agent *stk_agent_new(const char *path, const char *sender,
return agent;
}
+
+static void append_menu_items(DBusMessageIter *iter,
+ const struct stk_menu_item *item)
+{
+ DBusMessageIter array, entry;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+ "(sy)", &array);
+
+ for (; item->text; item++) {
+ dbus_message_iter_open_container(&array, DBUS_TYPE_STRUCT,
+ NULL, &entry);
+
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING,
+ &item->text);
+ dbus_message_iter_append_basic(&entry, DBUS_TYPE_BYTE,
+ &item->icon_id);
+
+ dbus_message_iter_close_container(&array, &entry);
+ }
+
+ dbus_message_iter_close_container(iter, &array);
+}
+
+void append_menu_items_variant(DBusMessageIter *iter,
+ const struct stk_menu_item *items)
+{
+ DBusMessageIter variant;
+
+ dbus_message_iter_open_container(iter, DBUS_TYPE_VARIANT,
+ "a(sy)", &variant);
+
+ append_menu_items(&variant, items);
+
+ dbus_message_iter_close_container(iter, &variant);
+}