diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-07-28 12:26:08 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-07-30 17:19:55 -0500 |
commit | 5faa3951c2af362a134f781322f49950ae9510c5 (patch) | |
tree | 33620524acd832865122cda61b401b1d96a04b89 /src/stkagent.c | |
parent | 9654c69d7d2dff9a12b50a8b9c11d02798f2e5c0 (diff) | |
download | ofono-5faa3951c2af362a134f781322f49950ae9510c5.tar.bz2 |
stk: Utilities to deal with menus.
Diffstat (limited to 'src/stkagent.c')
-rw-r--r-- | src/stkagent.c | 36 |
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); +} |