Merge lp:~nick-dedekind/unity/preview-action-extra-text into lp:unity

Proposed by Nick Dedekind
Status: Merged
Approved by: Michal Hruby
Approved revision: no longer in the source branch.
Merged at revision: 2689
Proposed branch: lp:~nick-dedekind/unity/preview-action-extra-text
Merge into: lp:unity
Diff against target: 550 lines (+190/-17)
10 files modified
dash/previews/ActionButton.cpp (+47/-4)
dash/previews/ActionButton.h (+8/-1)
dash/previews/Preview.cpp (+5/-1)
dash/previews/StandaloneApplicationPreview.cpp (+18/-7)
tests/test_previews_application.cpp (+25/-1)
tests/test_previews_generic.cpp (+25/-1)
tests/test_previews_movie.cpp (+25/-1)
tests/test_previews_music.cpp (+25/-1)
unity-shared/PreviewStyle.cpp (+9/-0)
unity-shared/PreviewStyle.h (+3/-0)
To merge this branch: bzr merge lp:~nick-dedekind/unity/preview-action-extra-text
Reviewer Review Type Date Requested Status
Michal Hruby (community) Approve
Review via email: mp+124168@code.launchpad.net

Commit message

Added extra-text to preview actions (for price tags).

Description of the change

Added extra-text to preview actions (for price tags).

To post a comment you must log in.
Revision history for this message
Michal Hruby (mhr3) wrote :

Could we get a test? Or will that be done in a separate branch?

review: Needs Information
Revision history for this message
Nick Dedekind (nick-dedekind) wrote :

Added unity tests

Revision history for this message
Michal Hruby (mhr3) wrote :

Awesome!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'dash/previews/ActionButton.cpp'
--- dash/previews/ActionButton.cpp 2012-09-10 15:43:52 +0000
+++ dash/previews/ActionButton.cpp 2012-09-13 16:15:29 +0000
@@ -50,7 +50,7 @@
50 SetAcceptKeyNavFocusOnMouseDown(false);50 SetAcceptKeyNavFocusOnMouseDown(false);
51 SetAcceptKeyNavFocusOnMouseEnter(false);51 SetAcceptKeyNavFocusOnMouseEnter(false);
52 Init();52 Init();
53 BuildLayout(label, icon_hint);53 BuildLayout(label, icon_hint, "");
54}54}
5555
56ActionButton::~ActionButton()56ActionButton::~ActionButton()
@@ -105,7 +105,19 @@
105 SetMinimumWidth(kMinButtonWidth);105 SetMinimumWidth(kMinButtonWidth);
106}106}
107107
108void ActionButton::BuildLayout(std::string const& label, std::string const& icon_hint)108void ActionButton::SetExtraHint(std::string const& extra_hint, std::string const& font_hint)
109{
110 extra_font_hint_= font_hint;
111 if (extra_text_)
112 {
113 extra_text_->SetFont(extra_font_hint_);
114 ComputeContentSize();
115 QueueDraw();
116 }
117 BuildLayout(label_, icon_hint_, extra_hint);
118}
119
120void ActionButton::BuildLayout(std::string const& label, std::string const& icon_hint, std::string const& extra_hint)
109{121{
110 if (icon_hint != icon_hint_)122 if (icon_hint != icon_hint_)
111 {123 {
@@ -121,7 +133,7 @@
121 image_ = new IconTexture(icon_hint, icon_size);133 image_ = new IconTexture(icon_hint, icon_size);
122 image_->texture_updated.connect([&](nux::BaseTexture*)134 image_->texture_updated.connect([&](nux::BaseTexture*)
123 {135 {
124 BuildLayout(label_, icon_hint_);136 BuildLayout(label_, icon_hint_, extra_hint_);
125 });137 });
126 image_->SetInputEventSensitivity(false);138 image_->SetInputEventSensitivity(false);
127 image_->SetMinMaxSize(icon_size, icon_size);139 image_->SetMinMaxSize(icon_size, icon_size);
@@ -147,16 +159,37 @@
147 }159 }
148 }160 }
149161
162 if (extra_hint != extra_hint_)
163 {
164 extra_hint_ = extra_hint;
165 if (extra_text_)
166 {
167 extra_text_.Release();
168 extra_text_ = NULL;
169 }
170
171 if (!extra_hint_.empty())
172 {
173 extra_text_ = new nux::StaticCairoText(extra_hint_, true, NUX_TRACKER_LOCATION);
174 if (!extra_font_hint_.empty())
175 extra_text_->SetFont(extra_font_hint_);
176 extra_text_->SetInputEventSensitivity(false);
177 extra_text_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_CENTRE);
178 }
179 }
180
150 RemoveLayout();181 RemoveLayout();
151182
152 nux::HLayout* layout = new nux::HLayout();183 nux::HLayout* layout = new nux::HLayout();
153 layout->SetHorizontalInternalMargin(6);184 layout->SetHorizontalInternalMargin(6);
154 layout->SetPadding(2, 11, 2, 11);185 layout->SetPadding(2, 0, 2, 0);
155 layout->AddSpace(0,1);186 layout->AddSpace(0,1);
156 if (image_)187 if (image_)
157 layout->AddView(image_.GetPointer(), 1, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_MATCHCONTENT);188 layout->AddView(image_.GetPointer(), 1, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_MATCHCONTENT);
158 if (static_text_)189 if (static_text_)
159 layout->AddView(static_text_.GetPointer(), 1, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_MATCHCONTENT);190 layout->AddView(static_text_.GetPointer(), 1, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_MATCHCONTENT);
191 if (extra_text_)
192 layout->AddView(extra_text_.GetPointer(), 1, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_MATCHCONTENT);
160 layout->AddSpace(0,1);193 layout->AddSpace(0,1);
161 SetLayout(layout);194 SetLayout(layout);
162195
@@ -302,5 +335,15 @@
302 QueueDraw();335 QueueDraw();
303}336}
304337
338std::string ActionButton::GetLabel() const
339{
340 return label_;
341}
342
343std::string ActionButton::GetExtraText() const
344{
345 return extra_hint_;
346}
347
305} // namespace dash348} // namespace dash
306} // namespace unity349} // namespace unity
307350
=== modified file 'dash/previews/ActionButton.h'
--- dash/previews/ActionButton.h 2012-08-16 09:09:37 +0000
+++ dash/previews/ActionButton.h 2012-09-13 16:15:29 +0000
@@ -49,10 +49,14 @@
49 sigc::signal<void, ActionButton*, std::string const&> click;49 sigc::signal<void, ActionButton*, std::string const&> click;
5050
51 void SetFont(std::string const& font_hint);51 void SetFont(std::string const& font_hint);
52 void SetExtraHint(std::string const& extra_hint, std::string const& font_hint);
5253
53 void Activate();54 void Activate();
54 void Deactivate();55 void Deactivate();
5556
57 std::string GetLabel() const;
58 std::string GetExtraText() const;
59
56protected:60protected:
57 virtual long ComputeContentSize();61 virtual long ComputeContentSize();
58 virtual void Draw(nux::GraphicsEngine& GfxContext, bool force_draw);62 virtual void Draw(nux::GraphicsEngine& GfxContext, bool force_draw);
@@ -64,7 +68,7 @@
64 void RedrawTheme(nux::Geometry const& geom, cairo_t* cr, nux::ButtonVisualState faked_state);68 void RedrawTheme(nux::Geometry const& geom, cairo_t* cr, nux::ButtonVisualState faked_state);
65 void RedrawFocusOverlay(nux::Geometry const& geom, cairo_t* cr);69 void RedrawFocusOverlay(nux::Geometry const& geom, cairo_t* cr);
6670
67 void BuildLayout(std::string const& label, std::string const& icon_hint);71 void BuildLayout(std::string const& label, std::string const& icon_hint, std::string const& extra_hint);
68 72
69 // From debug::Introspectable73 // From debug::Introspectable
70 std::string GetName() const;74 std::string GetName() const;
@@ -83,9 +87,12 @@
83 std::string action_hint_;87 std::string action_hint_;
84 std::string icon_hint_;88 std::string icon_hint_;
85 std::string font_hint_;89 std::string font_hint_;
90 std::string extra_hint_;
91 std::string extra_font_hint_;
8692
87 nux::ObjectPtr<IconTexture> image_;93 nux::ObjectPtr<IconTexture> image_;
88 nux::ObjectPtr<nux::StaticCairoText> static_text_;94 nux::ObjectPtr<nux::StaticCairoText> static_text_;
95 nux::ObjectPtr<nux::StaticCairoText> extra_text_;
89};96};
9097
91} // namespace dash98} // namespace dash
9299
=== modified file 'dash/previews/Preview.cpp'
--- dash/previews/Preview.cpp 2012-08-22 08:16:02 +0000
+++ dash/previews/Preview.cpp 2012-09-13 16:15:29 +0000
@@ -136,6 +136,8 @@
136 dash::Preview::ActionPtr action = actions[action_iter];136 dash::Preview::ActionPtr action = actions[action_iter];
137137
138 ActionButton* button = new ActionButton(action->id, action->display_name, action->icon_hint, NUX_TRACKER_LOCATION);138 ActionButton* button = new ActionButton(action->id, action->display_name, action->icon_hint, NUX_TRACKER_LOCATION);
139 button->SetFont(style.action_font());
140 button->SetExtraHint(action->extra_text, style.action_extra_font());
139 AddChild(button);141 AddChild(button);
140 button->click.connect(sigc::mem_fun(this, &Preview::OnActionActivated));142 button->click.connect(sigc::mem_fun(this, &Preview::OnActionActivated));
141 buttons.push_back(button);143 buttons.push_back(button);
@@ -165,9 +167,11 @@
165 uint action_iter = 0;167 uint action_iter = 0;
166 for (uint i = 0; i < actions.size(); i++)168 for (uint i = 0; i < actions.size(); i++)
167 {169 {
168 dash::Preview::ActionPtr action = actions[action_iter];170 dash::Preview::ActionPtr action = actions[action_iter++];
169171
170 ActionButton* button = new ActionButton(action->id, action->display_name, action->icon_hint, NUX_TRACKER_LOCATION);172 ActionButton* button = new ActionButton(action->id, action->display_name, action->icon_hint, NUX_TRACKER_LOCATION);
173 button->SetFont(style.action_font());
174 button->SetExtraHint(action->extra_text, style.action_extra_font());
171 AddChild(button);175 AddChild(button);
172 button->click.connect(sigc::mem_fun(this, &Preview::OnActionActivated));176 button->click.connect(sigc::mem_fun(this, &Preview::OnActionActivated));
173 buttons.push_back(button);177 buttons.push_back(button);
174178
=== modified file 'dash/previews/StandaloneApplicationPreview.cpp'
--- dash/previews/StandaloneApplicationPreview.cpp 2012-08-10 12:55:06 +0000
+++ dash/previews/StandaloneApplicationPreview.cpp 2012-09-13 16:15:29 +0000
@@ -164,6 +164,9 @@
164 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));164 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));
165 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));165 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));
166166
167 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
168 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£30.99"));
169
167 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));170 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));
168171
169 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));172 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));
@@ -173,13 +176,12 @@
173 unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 0.5);176 unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 0.5);
174 unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 17);177 unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 17);
175178
176
177 unity_protocol_preview_set_image_source_uri(proto_obj, "file:///home/nick/Skype.png");179 unity_protocol_preview_set_image_source_uri(proto_obj, "file:///home/nick/Skype.png");
178 unity_protocol_preview_set_title(proto_obj, app_name.str().c_str());180 unity_protocol_preview_set_title(proto_obj, app_name.str().c_str());
179 unity_protocol_preview_set_subtitle(proto_obj, subtitle);181 unity_protocol_preview_set_subtitle(proto_obj, subtitle);
180 unity_protocol_preview_set_description(proto_obj, description);182 unity_protocol_preview_set_description(proto_obj, description);
181 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);183 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);
182 unity_protocol_preview_add_action(proto_obj, "launch", "Launch", iconHint2, 0);184 unity_protocol_preview_add_action_with_hints(proto_obj, "launch", "Download", iconHint2, 0, action_hints1);
183 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));185 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));
184 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));186 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));
185 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("i", 12));187 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("i", 12));
@@ -190,6 +192,7 @@
190 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));192 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));
191 container_->Preview(preview_model, previews::Navigation::RIGHT);193 container_->Preview(preview_model, previews::Navigation::RIGHT);
192194
195 g_hash_table_unref(action_hints1);
193}196}
194197
195void TestRunner::NavRight()198void TestRunner::NavRight()
@@ -206,10 +209,11 @@
206 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));209 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));
207 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));210 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));
208211
212 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
213 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£30.99"));
214
209 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));215 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));
210216
211
212
213 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));217 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));
214 unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "Proprietary");218 unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "Proprietary");
215 unity_protocol_application_preview_set_copyright(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "(c) Skype 2012");219 unity_protocol_application_preview_set_copyright(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "(c) Skype 2012");
@@ -222,7 +226,7 @@
222 unity_protocol_preview_set_subtitle(proto_obj, subtitle);226 unity_protocol_preview_set_subtitle(proto_obj, subtitle);
223 unity_protocol_preview_set_description(proto_obj, description);227 unity_protocol_preview_set_description(proto_obj, description);
224 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);228 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);
225 unity_protocol_preview_add_action(proto_obj, "launch", "Launch", iconHint2, 0);229 unity_protocol_preview_add_action_with_hints(proto_obj, "launch", "Download", iconHint2, 0, action_hints1);
226 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));230 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));
227 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));231 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));
228 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("d", 12.1));232 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("d", 12.1));
@@ -232,6 +236,8 @@
232236
233 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));237 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));
234 container_->Preview(preview_model, previews::Navigation::RIGHT);238 container_->Preview(preview_model, previews::Navigation::RIGHT);
239
240 g_hash_table_unref(action_hints1);
235}241}
236242
237void TestRunner::NavLeft()243void TestRunner::NavLeft()
@@ -251,7 +257,10 @@
251 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));257 glib::Object<GIcon> iconHint2(g_icon_new_for_string("/usr/share/unity/5/lens-nav-home.svg", NULL));
252 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));258 glib::Object<GIcon> iconHint3(g_icon_new_for_string("/usr/share/unity/5/lens-nav-people.svg", NULL));
253259
254 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));260 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
261 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£30.99"));
262
263 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));
255264
256265
257 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));266 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));
@@ -266,7 +275,7 @@
266 unity_protocol_preview_set_subtitle(proto_obj, subtitle);275 unity_protocol_preview_set_subtitle(proto_obj, subtitle);
267 unity_protocol_preview_set_description(proto_obj, description);276 unity_protocol_preview_set_description(proto_obj, description);
268 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);277 unity_protocol_preview_add_action(proto_obj, "uninstall", "Uninstall", iconHint1, 0);
269 unity_protocol_preview_add_action(proto_obj, "launch", "Launch", iconHint2, 0);278 unity_protocol_preview_add_action_with_hints(proto_obj, "launch", "Download", iconHint2, 0, action_hints1);
270 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));279 unity_protocol_preview_add_info_hint(proto_obj, "time", "Total time", iconHint1, g_variant_new("s", "16 h 34miin 45sec"));
271 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));280 unity_protocol_preview_add_info_hint(proto_obj, "energy", "Energy", iconHint2, g_variant_new("s", "58.07 mWh"));
272 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("i", 22));281 unity_protocol_preview_add_info_hint(proto_obj, "load", "CPU Load", iconHint3, g_variant_new("i", 22));
@@ -277,6 +286,8 @@
277 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));286 dash::Preview::Ptr preview_model(dash::Preview::PreviewForVariant(v));
278 container_->Preview(preview_model, previews::Navigation::LEFT);287 container_->Preview(preview_model, previews::Navigation::LEFT);
279288
289 g_hash_table_unref(action_hints1);
290
280 return false;291 return false;
281 }));292 }));
282}293}
283294
=== modified file 'tests/test_previews_application.cpp'
--- tests/test_previews_application.cpp 2012-08-21 09:47:11 +0000
+++ tests/test_previews_application.cpp 2012-09-13 16:15:29 +0000
@@ -34,6 +34,7 @@
34#include "dash/previews/ApplicationPreview.h"34#include "dash/previews/ApplicationPreview.h"
35#include "dash/previews/PreviewInfoHintWidget.h"35#include "dash/previews/PreviewInfoHintWidget.h"
36#include "dash/previews/PreviewRatingsWidget.h"36#include "dash/previews/PreviewRatingsWidget.h"
37#include "dash/previews/ActionButton.h"
37#include "test_utils.h"38#include "test_utils.h"
38using namespace unity;39using namespace unity;
39using namespace unity::dash;40using namespace unity::dash;
@@ -69,6 +70,9 @@
69 {70 {
70 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));71 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));
7172
73 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
74 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£30.99"));
75
72 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));76 unity_protocol_application_preview_set_app_icon(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), g_icon_new_for_string("/home/nick/SkypeIcon.png", NULL));
73 unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "License & special char");77 unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "License & special char");
74 unity_protocol_application_preview_set_copyright(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "Copywrite & special char");78 unity_protocol_application_preview_set_copyright(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "Copywrite & special char");
@@ -81,13 +85,15 @@
81 unity_protocol_preview_set_subtitle(proto_obj, "Application Subtitle > special char");85 unity_protocol_preview_set_subtitle(proto_obj, "Application Subtitle > special char");
82 unity_protocol_preview_set_description(proto_obj, "Application Desctiption &lt; special char");86 unity_protocol_preview_set_description(proto_obj, "Application Desctiption &lt; special char");
83 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);87 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);
84 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);88 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action 2", NULL, 0, action_hints1);
85 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));89 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
86 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));90 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));
87 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));91 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));
8892
89 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());93 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());
90 preview_model_ = dash::Preview::PreviewForVariant(v);94 preview_model_ = dash::Preview::PreviewForVariant(v);
95
96 g_hash_table_unref(action_hints1);
91 }97 }
9298
93 nux::BaseWindow* parent_window_;99 nux::BaseWindow* parent_window_;
@@ -119,6 +125,24 @@
119125
120 EXPECT_EQ(preview_view->app_rating_->GetRating(), 0.8f);126 EXPECT_EQ(preview_view->app_rating_->GetRating(), 0.8f);
121 EXPECT_EQ(preview_view->action_buttons_.size(), 2);127 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
128
129 if (preview_view->action_buttons_.size() >= 2)
130 {
131 auto iter = preview_view->action_buttons_.begin();
132 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
133 {
134 ActionButton *action = static_cast<ActionButton*>(*iter);
135 EXPECT_EQ(action->GetLabel(), "Action 1");
136 EXPECT_EQ(action->GetExtraText(), "");
137 }
138 iter++;
139 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
140 {
141 ActionButton *action = static_cast<ActionButton*>(*iter);
142 EXPECT_EQ(action->GetLabel(), "Action 2");
143 EXPECT_EQ(action->GetExtraText(), "£30.99");
144 }
145 }
122}146}
123147
124}148}
125149
=== modified file 'tests/test_previews_generic.cpp'
--- tests/test_previews_generic.cpp 2012-08-21 09:47:11 +0000
+++ tests/test_previews_generic.cpp 2012-09-13 16:15:29 +0000
@@ -32,6 +32,7 @@
32#include <unity-protocol.h>32#include <unity-protocol.h>
33#include "UnityCore/GenericPreview.h"33#include "UnityCore/GenericPreview.h"
34#include "dash/previews/GenericPreview.h"34#include "dash/previews/GenericPreview.h"
35#include "dash/previews/ActionButton.h"
35#include "test_utils.h"36#include "test_utils.h"
36using namespace unity;37using namespace unity;
37using namespace unity::dash;38using namespace unity::dash;
@@ -63,18 +64,23 @@
63 {64 {
64 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_generic_preview_new()));65 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_generic_preview_new()));
6566
67 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
68 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("2.00"));
69
66 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");70 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");
67 unity_protocol_preview_set_title(proto_obj, "Generic Title & special char");71 unity_protocol_preview_set_title(proto_obj, "Generic Title & special char");
68 unity_protocol_preview_set_subtitle(proto_obj, "Generic Subtitle > special char");72 unity_protocol_preview_set_subtitle(proto_obj, "Generic Subtitle > special char");
69 unity_protocol_preview_set_description(proto_obj, "Generic Desctiption &lt; special char");73 unity_protocol_preview_set_description(proto_obj, "Generic Desctiption &lt; special char");
70 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);74 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);
71 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);75 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action 2", NULL, 0, action_hints1);
72 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));76 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
73 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));77 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));
74 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));78 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));
7579
76 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());80 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());
77 preview_model_ = dash::Preview::PreviewForVariant(v);81 preview_model_ = dash::Preview::PreviewForVariant(v);
82
83 g_hash_table_unref(action_hints1);
78 }84 }
7985
80 nux::BaseWindow* parent_window_;86 nux::BaseWindow* parent_window_;
@@ -102,6 +108,24 @@
102 EXPECT_EQ(preview_view->description_->GetText(), "Generic Desctiption &lt; special char");108 EXPECT_EQ(preview_view->description_->GetText(), "Generic Desctiption &lt; special char");
103109
104 EXPECT_EQ(preview_view->action_buttons_.size(), 2);110 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
111
112 if (preview_view->action_buttons_.size() >= 2)
113 {
114 auto iter = preview_view->action_buttons_.begin();
115 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
116 {
117 ActionButton *action = static_cast<ActionButton*>(*iter);
118 EXPECT_EQ(action->GetLabel(), "Action 1");
119 EXPECT_EQ(action->GetExtraText(), "");
120 }
121 iter++;
122 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
123 {
124 ActionButton *action = static_cast<ActionButton*>(*iter);
125 EXPECT_EQ(action->GetLabel(), "Action 2");
126 EXPECT_EQ(action->GetExtraText(), "2.00");
127 }
128 }
105}129}
106130
107}131}
108132
=== modified file 'tests/test_previews_movie.cpp'
--- tests/test_previews_movie.cpp 2012-08-21 09:47:11 +0000
+++ tests/test_previews_movie.cpp 2012-09-13 16:15:29 +0000
@@ -34,6 +34,7 @@
34#include "dash/previews/MoviePreview.h"34#include "dash/previews/MoviePreview.h"
35#include "dash/previews/PreviewInfoHintWidget.h"35#include "dash/previews/PreviewInfoHintWidget.h"
36#include "dash/previews/PreviewRatingsWidget.h"36#include "dash/previews/PreviewRatingsWidget.h"
37#include "dash/previews/ActionButton.h"
37#include "test_utils.h"38#include "test_utils.h"
38using namespace unity;39using namespace unity;
39using namespace unity::dash;40using namespace unity::dash;
@@ -66,6 +67,9 @@
66 {67 {
67 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_movie_preview_new()));68 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_movie_preview_new()));
6869
70 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
71 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£1.00"));
72
69 unity_protocol_movie_preview_set_rating(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 0.8);73 unity_protocol_movie_preview_set_rating(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 0.8);
70 unity_protocol_movie_preview_set_num_ratings(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 12);74 unity_protocol_movie_preview_set_num_ratings(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 12);
7175
@@ -74,13 +78,15 @@
74 unity_protocol_preview_set_subtitle(proto_obj, "Movie Subtitle > special char");78 unity_protocol_preview_set_subtitle(proto_obj, "Movie Subtitle > special char");
75 unity_protocol_preview_set_description(proto_obj, "Movie Desctiption &lt; special char");79 unity_protocol_preview_set_description(proto_obj, "Movie Desctiption &lt; special char");
76 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);80 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);
77 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);81 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action 2", NULL, 0, action_hints1);
78 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));82 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
79 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));83 unity_protocol_preview_add_info_hint(proto_obj, "hint2", "Hint 2", NULL, g_variant_new("s", "string hint 2"));
80 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));84 unity_protocol_preview_add_info_hint(proto_obj, "hint3", "Hint 3", NULL, g_variant_new("i", 12));
8185
82 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());86 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());
83 preview_model_ = dash::Preview::PreviewForVariant(v);87 preview_model_ = dash::Preview::PreviewForVariant(v);
88
89 g_hash_table_unref(action_hints1);
84 }90 }
8591
86 nux::BaseWindow* parent_window_;92 nux::BaseWindow* parent_window_;
@@ -109,6 +115,24 @@
109115
110 EXPECT_EQ(preview_view->rating_->GetRating(), 0.8f);116 EXPECT_EQ(preview_view->rating_->GetRating(), 0.8f);
111 EXPECT_EQ(preview_view->action_buttons_.size(), 2);117 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
118
119 if (preview_view->action_buttons_.size() >= 2)
120 {
121 auto iter = preview_view->action_buttons_.begin();
122 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
123 {
124 ActionButton *action = static_cast<ActionButton*>(*iter);
125 EXPECT_EQ(action->GetLabel(), "Action 1");
126 EXPECT_EQ(action->GetExtraText(), "");
127 }
128 iter++;
129 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
130 {
131 ActionButton *action = static_cast<ActionButton*>(*iter);
132 EXPECT_EQ(action->GetLabel(), "Action 2");
133 EXPECT_EQ(action->GetExtraText(), "£1.00");
134 }
135 }
112}136}
113137
114}138}
115139
=== modified file 'tests/test_previews_music.cpp'
--- tests/test_previews_music.cpp 2012-08-21 09:47:11 +0000
+++ tests/test_previews_music.cpp 2012-09-13 16:15:29 +0000
@@ -34,6 +34,7 @@
34#include "dash/previews/MusicPreview.h"34#include "dash/previews/MusicPreview.h"
35#include "dash/previews/PreviewInfoHintWidget.h"35#include "dash/previews/PreviewInfoHintWidget.h"
36#include "dash/previews/PreviewRatingsWidget.h"36#include "dash/previews/PreviewRatingsWidget.h"
37#include "dash/previews/ActionButton.h"
37#include "test_utils.h"38#include "test_utils.h"
38using namespace unity;39using namespace unity;
39using namespace unity::dash;40using namespace unity::dash;
@@ -64,12 +65,15 @@
64 {65 {
65 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_music_preview_new()));66 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_music_preview_new()));
6667
68 GHashTable* action_hints1(g_hash_table_new(g_direct_hash, g_direct_equal));
69 g_hash_table_insert (action_hints1, g_strdup ("extra-text"), g_variant_new_string("£3.99"));
70
67 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");71 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");
68 unity_protocol_preview_set_title(proto_obj, "Music Title & special char");72 unity_protocol_preview_set_title(proto_obj, "Music Title & special char");
69 unity_protocol_preview_set_subtitle(proto_obj, "Music Subtitle > special char");73 unity_protocol_preview_set_subtitle(proto_obj, "Music Subtitle > special char");
70 unity_protocol_preview_set_description(proto_obj, "Music Desctiption &lt; special char");74 unity_protocol_preview_set_description(proto_obj, "Music Desctiption &lt; special char");
71 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);75 unity_protocol_preview_add_action(proto_obj, "action1", "Action 1", NULL, 0);
72 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);76 unity_protocol_preview_add_action_with_hints(proto_obj, "action2", "Action 2", NULL, 0, action_hints1);
73 unity_protocol_preview_add_action(proto_obj, "action3", "Action 3", NULL, 0);77 unity_protocol_preview_add_action(proto_obj, "action3", "Action 3", NULL, 0);
74 unity_protocol_preview_add_action(proto_obj, "action4", "Action 4", NULL, 0);78 unity_protocol_preview_add_action(proto_obj, "action4", "Action 4", NULL, 0);
75 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));79 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
@@ -78,6 +82,8 @@
7882
79 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());83 glib::Variant v(dee_serializable_serialize(DEE_SERIALIZABLE(proto_obj.RawPtr())), glib::StealRef());
80 preview_model_ = dash::Preview::PreviewForVariant(v);84 preview_model_ = dash::Preview::PreviewForVariant(v);
85
86 g_hash_table_unref(action_hints1);
81 }87 }
8288
83 nux::BaseWindow* parent_window_;89 nux::BaseWindow* parent_window_;
@@ -104,6 +110,24 @@
104 EXPECT_EQ(preview_view->subtitle_->GetText(), "Music Subtitle &gt; special char");110 EXPECT_EQ(preview_view->subtitle_->GetText(), "Music Subtitle &gt; special char");
105111
106 EXPECT_EQ(preview_view->action_buttons_.size(), 4);112 EXPECT_EQ(preview_view->action_buttons_.size(), 4);
113
114 if (preview_view->action_buttons_.size() >= 2)
115 {
116 auto iter = preview_view->action_buttons_.begin();
117 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
118 {
119 ActionButton *action = static_cast<ActionButton*>(*iter);
120 EXPECT_EQ(action->GetLabel(), "Action 1");
121 EXPECT_EQ(action->GetExtraText(), "");
122 }
123 iter++;
124 if ((*iter)->Type().IsDerivedFromType(ActionButton::StaticObjectType))
125 {
126 ActionButton *action = static_cast<ActionButton*>(*iter);
127 EXPECT_EQ(action->GetLabel(), "Action 2");
128 EXPECT_EQ(action->GetExtraText(), "£3.99");
129 }
130 }
107}131}
108132
109}133}
110134
=== modified file 'unity-shared/PreviewStyle.cpp'
--- unity-shared/PreviewStyle.cpp 2012-09-10 15:43:52 +0000
+++ unity-shared/PreviewStyle.cpp 2012-09-13 16:15:29 +0000
@@ -305,6 +305,15 @@
305std::string Style::description_font() const305std::string Style::description_font() const
306{306{
307 return "Ubuntu Light 10";307 return "Ubuntu Light 10";
308
309}
310std::string Style::action_font() const
311{
312 return "Ubuntu 11";
313}
314std::string Style::action_extra_font() const
315{
316 return "Ubuntu Bold 11";
308}317}
309318
310std::string Style::app_license_font() const319std::string Style::app_license_font() const
311320
=== modified file 'unity-shared/PreviewStyle.h'
--- unity-shared/PreviewStyle.h 2012-09-04 10:45:31 +0000
+++ unity-shared/PreviewStyle.h 2012-09-13 16:15:29 +0000
@@ -90,6 +90,9 @@
90 std::string subtitle_size_font() const;90 std::string subtitle_size_font() const;
91 std::string description_font() const;91 std::string description_font() const;
9292
93 std::string action_font() const;
94 std::string action_extra_font() const;
95
93 nux::AbstractPaintLayer* GetBackgroundLayer() const;96 nux::AbstractPaintLayer* GetBackgroundLayer() const;
9497
95 ////////////////////////////////98 ////////////////////////////////