diff options
| author | Michal Hruby <michal.mhr@gmail.com> | 2012-09-11 10:14:22 -0400 | 
|---|---|---|
| committer | Tarmac <> | 2012-09-11 10:14:22 -0400 | 
| commit | 33581c91eefa0edb221e6babc0d7dfc76cb54906 (patch) | |
| tree | 54b26a1ac12f71217ecd28ba320eb06de4a4b2a6 | |
| parent | 0502fb641b9d36bd41b3eed09eccbbb9593ba7f3 (diff) | |
| parent | 6c1ed645feb90bb43eb396190857d7e4a5ca9aea (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.cpp | 3 | ||||
| -rw-r--r-- | UnityCore/Preview.h | 19 | ||||
| -rw-r--r-- | tests/test_previews.cpp | 7 | 
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]; | 
