summaryrefslogtreecommitdiff
diff options
authorMichal Hruby <michal.mhr@gmail.com>2012-09-11 10:14:22 -0400
committerTarmac <>2012-09-11 10:14:22 -0400
commit33581c91eefa0edb221e6babc0d7dfc76cb54906 (patch)
tree54b26a1ac12f71217ecd28ba320eb06de4a4b2a6
parent0502fb641b9d36bd41b3eed09eccbbb9593ba7f3 (diff)
parent6c1ed645feb90bb43eb396190857d7e4a5ca9aea (diff)
Adds the extra_text property to preview Action. Fixes: https://bugs.launchpad.net/bugs/1049008. Approved by Pawel Stolowski, Nick Dedekind.
(bzr r2679)
-rw-r--r--UnityCore/Preview.cpp3
-rw-r--r--UnityCore/Preview.h19
-rw-r--r--tests/test_previews.cpp7
3 files changed, 25 insertions, 4 deletions
diff --git a/UnityCore/Preview.cpp b/UnityCore/Preview.cpp
index 6f8b6bfff..3c9342994 100644
--- a/UnityCore/Preview.cpp
+++ b/UnityCore/Preview.cpp
@@ -177,7 +177,8 @@ Preview::Impl::Impl(Preview* owner, glib::Object<GObject> const& proto_obj)
actions_list_.push_back(std::make_shared<Action>(
raw_action->id, raw_action->display_name,
raw_action->icon_hint,
- static_cast<LayoutHint>(raw_action->layout_hint)));
+ static_cast<LayoutHint>(raw_action->layout_hint),
+ raw_action->hints));
}
int info_hints_len;
diff --git a/UnityCore/Preview.h b/UnityCore/Preview.h
index 1b43b1033..b9b1f5f4f 100644
--- a/UnityCore/Preview.h
+++ b/UnityCore/Preview.h
@@ -59,16 +59,31 @@ public:
std::string id;
std::string display_name;
std::string icon_hint;
+ std::string extra_text;
LayoutHint layout_hint;
// TODO: there's also a HashTable here (although unused atm)
Action() {};
Action(const gchar* id_, const gchar* display_name_,
- const gchar* icon_hint_, LayoutHint layout_hint_)
+ const gchar* icon_hint_, LayoutHint layout_hint_,
+ GHashTable* hints)
: id(id_ != NULL ? id_ : "")
, display_name(display_name_ != NULL ? display_name_ : "")
, icon_hint(icon_hint_ != NULL ? icon_hint_ : "")
- , layout_hint(layout_hint_) {};
+ , layout_hint(layout_hint_)
+ {
+ GHashTableIter iter;
+ gpointer key, value;
+ g_hash_table_iter_init(&iter, hints);
+ while (g_hash_table_iter_next(&iter, &key, &value))
+ {
+ if (g_strcmp0((gchar*)key, "extra-text") == 0)
+ {
+ glib::Variant val(static_cast<GVariant*>(value));
+ extra_text = val.GetString();
+ }
+ }
+ };
};
struct InfoHint
diff --git a/tests/test_previews.cpp b/tests/test_previews.cpp
index a688c7727..7707bd05e 100644
--- a/tests/test_previews.cpp
+++ b/tests/test_previews.cpp
@@ -77,8 +77,11 @@ TEST(TestPreviews, DeserializeGenericWithMeta)
unity_protocol_preview_set_description(proto_obj, "Description");
unity_protocol_preview_set_image(proto_obj, icon);
unity_protocol_preview_set_image_source_uri(proto_obj, "Source");
+
+ GHashTable* hints = g_hash_table_new(g_str_hash, g_str_equal);
+ g_hash_table_insert(hints, g_strdup("extra-text"), g_variant_new_string("Foo"));
unity_protocol_preview_add_action(proto_obj, "action1", "Action #1", NULL, 0);
- unity_protocol_preview_add_action(proto_obj, "action2", "Action #2", NULL, 0);
+ unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action #2", NULL, 0, hints);
unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("i", 34));
unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint"));
@@ -106,11 +109,13 @@ TEST(TestPreviews, DeserializeGenericWithMeta)
EXPECT_EQ(action1->display_name, "Action #1");
EXPECT_EQ(action1->icon_hint, "");
EXPECT_EQ(action1->layout_hint, 0);
+ EXPECT_EQ(action1->extra_text, "");
auto action2 = actions[1];
EXPECT_EQ(action2->id, "action2");
EXPECT_EQ(action2->display_name, "Action #2");
EXPECT_EQ(action2->icon_hint, "");
+ EXPECT_EQ(action2->extra_text, "Foo");
EXPECT_EQ(info_hints.size(), 2);
auto hint1 = info_hints[0];