Merge lp:~nick-dedekind/unity/lp1039020.preview-text-escape into lp:unity

Proposed by Nick Dedekind
Status: Merged
Approved by: Nick Dedekind
Approved revision: no longer in the source branch.
Merged at revision: 2633
Proposed branch: lp:~nick-dedekind/unity/lp1039020.preview-text-escape
Merge into: lp:unity
Diff against target: 424 lines (+71/-54)
14 files modified
dash/previews/ActionButton.cpp (+1/-1)
dash/previews/ApplicationPreview.cpp (+7/-8)
dash/previews/GenericPreview.cpp (+3/-4)
dash/previews/MoviePreview.cpp (+3/-4)
dash/previews/MusicPreview.cpp (+2/-2)
dash/previews/PreviewInfoHintWidget.cpp (+2/-2)
dash/previews/PreviewRatingsWidget.cpp (+1/-1)
dash/previews/Track.cpp (+1/-1)
tests/test_previews_application.cpp (+10/-10)
tests/test_previews_generic.cpp (+6/-6)
tests/test_previews_movie.cpp (+6/-6)
tests/test_previews_music.cpp (+5/-5)
unity-shared/StaticCairoText.cpp (+20/-3)
unity-shared/StaticCairoText.h (+4/-1)
To merge this branch: bzr merge lp:~nick-dedekind/unity/lp1039020.preview-text-escape
Reviewer Review Type Date Requested Status
Andrea Azzarone (community) Approve
Sam Spilsbury (community) Approve
Review via email: mp+120522@code.launchpad.net

Commit message

Fixes non-escaped character sequences in dash previews. (LP #1039020)

Description of the change

Fixes non-escaped character sequences in dash previews. (LP #1039020)

Added escape sequent argument to a new StaticCairoText constructor for ease of access.
Dash Previews escape all strings from UnityCore preview models.

To post a comment you must log in.
Revision history for this message
Sam Spilsbury (smspillaz) wrote :

LGTM

review: Approve
Revision history for this message
Andrea Azzarone (azzar1) wrote :

+ std::string tmp_text = escape_text ? GetEscapedText(text) : text;

You can do:

std::string tmp_text = escape_text ? GetEscapedText(text) : std::move(text);

But using the gcc implementation of std::string coping and moving are equivalent.

review: Approve
Revision history for this message
Unity Merger (unity-merger) wrote :

Attempt to merge into lp:unity failed due to conflicts:

text conflict in dash/previews/PreviewRatingsWidget.cpp

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-08-17 08:20:41 +0000
+++ dash/previews/ActionButton.cpp 2012-08-28 08:32:21 +0000
@@ -139,7 +139,7 @@
139139
140 if (!label_.empty())140 if (!label_.empty())
141 {141 {
142 static_text_ = new nux::StaticCairoText(label_, NUX_TRACKER_LOCATION);142 static_text_ = new nux::StaticCairoText(label_, true, NUX_TRACKER_LOCATION);
143 if (!font_hint_.empty())143 if (!font_hint_.empty())
144 static_text_->SetFont(font_hint_);144 static_text_->SetFont(font_hint_);
145 static_text_->SetInputEventSensitivity(false);145 static_text_->SetInputEventSensitivity(false);
146146
=== modified file 'dash/previews/ApplicationPreview.cpp'
--- dash/previews/ApplicationPreview.cpp 2012-08-22 08:16:02 +0000
+++ dash/previews/ApplicationPreview.cpp 2012-08-28 08:32:21 +0000
@@ -202,14 +202,14 @@
202 title_subtitle_layout_ = new nux::VLayout();202 title_subtitle_layout_ = new nux::VLayout();
203 title_subtitle_layout_->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());203 title_subtitle_layout_->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());
204204
205 title_ = new nux::StaticCairoText(app_preview_model->title);205 title_ = new nux::StaticCairoText(preview_model_->title, true, NUX_TRACKER_LOCATION);
206 title_->SetLines(-1);206 title_->SetLines(-1);
207 title_->SetFont(style.title_font().c_str());207 title_->SetFont(style.title_font().c_str());
208 title_subtitle_layout_->AddView(title_.GetPointer(), 1);208 title_subtitle_layout_->AddView(title_.GetPointer(), 1);
209209
210 if (!app_preview_model->subtitle.Get().empty())210 if (!preview_model_->subtitle.Get().empty())
211 {211 {
212 subtitle_ = new nux::StaticCairoText(app_preview_model->subtitle);212 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle, true, NUX_TRACKER_LOCATION);
213 subtitle_->SetFont(style.subtitle_size_font().c_str());213 subtitle_->SetFont(style.subtitle_size_font().c_str());
214 subtitle_->SetLines(-1);214 subtitle_->SetLines(-1);
215 title_subtitle_layout_->AddView(subtitle_.GetPointer(), 1);215 title_subtitle_layout_->AddView(subtitle_.GetPointer(), 1);
@@ -220,7 +220,7 @@
220220
221 if (!app_preview_model->license.Get().empty())221 if (!app_preview_model->license.Get().empty())
222 {222 {
223 license_ = new nux::StaticCairoText(app_preview_model->license);223 license_ = new nux::StaticCairoText(app_preview_model->license, true, NUX_TRACKER_LOCATION);
224 license_->SetFont(style.app_license_font().c_str());224 license_->SetFont(style.app_license_font().c_str());
225 license_->SetLines(-1);225 license_->SetLines(-1);
226 app_updated_copywrite_layout->AddView(license_.GetPointer(), 1);226 app_updated_copywrite_layout->AddView(license_.GetPointer(), 1);
@@ -231,14 +231,14 @@
231 std::stringstream last_update;231 std::stringstream last_update;
232 last_update << _("Last Updated") << " " << app_preview_model->last_update.Get();232 last_update << _("Last Updated") << " " << app_preview_model->last_update.Get();
233233
234 last_update_ = new nux::StaticCairoText(last_update.str());234 last_update_ = new nux::StaticCairoText(last_update.str(), true, NUX_TRACKER_LOCATION);
235 last_update_->SetFont(style.app_last_update_font().c_str());235 last_update_->SetFont(style.app_last_update_font().c_str());
236 app_updated_copywrite_layout->AddView(last_update_.GetPointer(), 1);236 app_updated_copywrite_layout->AddView(last_update_.GetPointer(), 1);
237 }237 }
238238
239 if (!app_preview_model->copyright.Get().empty())239 if (!app_preview_model->copyright.Get().empty())
240 {240 {
241 copywrite_ = new nux::StaticCairoText(app_preview_model->copyright);241 copywrite_ = new nux::StaticCairoText(app_preview_model->copyright, true, NUX_TRACKER_LOCATION);
242 copywrite_->SetFont(style.app_copywrite_font().c_str());242 copywrite_->SetFont(style.app_copywrite_font().c_str());
243 copywrite_->SetLines(-1);243 copywrite_->SetLines(-1);
244 app_updated_copywrite_layout->AddView(copywrite_.GetPointer(), 1);244 app_updated_copywrite_layout->AddView(copywrite_.GetPointer(), 1);
@@ -265,12 +265,11 @@
265265
266 if (!preview_model_->description.Get().empty())266 if (!preview_model_->description.Get().empty())
267 {267 {
268 description_ = new nux::StaticCairoText("");268 description_ = new nux::StaticCairoText(preview_model_->description, false, NUX_TRACKER_LOCATION); // not escaped!
269 description_->SetFont(style.description_font().c_str());269 description_->SetFont(style.description_font().c_str());
270 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);270 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);
271 description_->SetLines(-style.GetDescriptionLineCount());271 description_->SetLines(-style.GetDescriptionLineCount());
272 description_->SetLineSpacing(style.GetDescriptionLineSpacing());272 description_->SetLineSpacing(style.GetDescriptionLineSpacing());
273 description_->SetText(app_preview_model->description);
274 app_info_layout->AddView(description_.GetPointer());273 app_info_layout->AddView(description_.GetPointer());
275 }274 }
276275
277276
=== modified file 'dash/previews/GenericPreview.cpp'
--- dash/previews/GenericPreview.cpp 2012-08-22 08:16:02 +0000
+++ dash/previews/GenericPreview.cpp 2012-08-28 08:32:21 +0000
@@ -168,14 +168,14 @@
168 nux::VLayout* preview_data_layout = new nux::VLayout();168 nux::VLayout* preview_data_layout = new nux::VLayout();
169 preview_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());169 preview_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());
170170
171 title_ = new nux::StaticCairoText(preview_model_->title);171 title_ = new nux::StaticCairoText(preview_model_->title, true, NUX_TRACKER_LOCATION);
172 title_->SetLines(-1);172 title_->SetLines(-1);
173 title_->SetFont(style.title_font().c_str());173 title_->SetFont(style.title_font().c_str());
174 preview_data_layout->AddView(title_.GetPointer(), 1);174 preview_data_layout->AddView(title_.GetPointer(), 1);
175175
176 if (!preview_model_->subtitle.Get().empty())176 if (!preview_model_->subtitle.Get().empty())
177 {177 {
178 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle);178 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle, true, NUX_TRACKER_LOCATION);
179 subtitle_->SetLines(-1);179 subtitle_->SetLines(-1);
180 subtitle_->SetFont(style.subtitle_size_font().c_str());180 subtitle_->SetFont(style.subtitle_size_font().c_str());
181 preview_data_layout->AddView(subtitle_.GetPointer(), 1);181 preview_data_layout->AddView(subtitle_.GetPointer(), 1);
@@ -193,12 +193,11 @@
193193
194 if (!preview_model_->description.Get().empty())194 if (!preview_model_->description.Get().empty())
195 {195 {
196 description_ = new nux::StaticCairoText("");196 description_ = new nux::StaticCairoText(preview_model_->description, false, NUX_TRACKER_LOCATION); // not escaped!
197 description_->SetFont(style.description_font().c_str());197 description_->SetFont(style.description_font().c_str());
198 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);198 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);
199 description_->SetLines(-style.GetDescriptionLineCount());199 description_->SetLines(-style.GetDescriptionLineCount());
200 description_->SetLineSpacing(style.GetDescriptionLineSpacing());200 description_->SetLineSpacing(style.GetDescriptionLineSpacing());
201 description_->SetText(preview_model_->description);
202 preview_info_layout->AddView(description_.GetPointer());201 preview_info_layout->AddView(description_.GetPointer());
203 }202 }
204203
205204
=== modified file 'dash/previews/MoviePreview.cpp'
--- dash/previews/MoviePreview.cpp 2012-08-22 08:16:02 +0000
+++ dash/previews/MoviePreview.cpp 2012-08-28 08:32:21 +0000
@@ -178,14 +178,14 @@
178 nux::VLayout* app_data_layout = new nux::VLayout();178 nux::VLayout* app_data_layout = new nux::VLayout();
179 app_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());179 app_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());
180180
181 title_ = new nux::StaticCairoText(preview_model_->title);181 title_ = new nux::StaticCairoText(preview_model_->title, true, NUX_TRACKER_LOCATION);
182 title_->SetLines(-1);182 title_->SetLines(-1);
183 title_->SetFont(style.title_font().c_str());183 title_->SetFont(style.title_font().c_str());
184 app_data_layout->AddView(title_.GetPointer(), 1);184 app_data_layout->AddView(title_.GetPointer(), 1);
185185
186 if (!preview_model_->subtitle.Get().empty())186 if (!preview_model_->subtitle.Get().empty())
187 {187 {
188 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle);188 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle, true, NUX_TRACKER_LOCATION);
189 subtitle_->SetLines(-1);189 subtitle_->SetLines(-1);
190 subtitle_->SetFont(style.subtitle_size_font().c_str());190 subtitle_->SetFont(style.subtitle_size_font().c_str());
191 app_data_layout->AddView(subtitle_.GetPointer(), 1);191 app_data_layout->AddView(subtitle_.GetPointer(), 1);
@@ -217,12 +217,11 @@
217217
218 if (!preview_model_->description.Get().empty())218 if (!preview_model_->description.Get().empty())
219 {219 {
220 description_ = new nux::StaticCairoText("");220 description_ = new nux::StaticCairoText(preview_model_->description, false, NUX_TRACKER_LOCATION); // not escaped!
221 description_->SetFont(style.description_font().c_str());221 description_->SetFont(style.description_font().c_str());
222 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);222 description_->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_TOP);
223 description_->SetLines(-style.GetDescriptionLineCount());223 description_->SetLines(-style.GetDescriptionLineCount());
224 description_->SetLineSpacing(style.GetDescriptionLineSpacing());224 description_->SetLineSpacing(style.GetDescriptionLineSpacing());
225 description_->SetText(preview_model_->description);
226 preview_info_layout->AddView(description_.GetPointer());225 preview_info_layout->AddView(description_.GetPointer());
227 }226 }
228 /////////////////////227 /////////////////////
229228
=== modified file 'dash/previews/MusicPreview.cpp'
--- dash/previews/MusicPreview.cpp 2012-08-22 08:16:02 +0000
+++ dash/previews/MusicPreview.cpp 2012-08-28 08:32:21 +0000
@@ -160,14 +160,14 @@
160 nux::VLayout* album_data_layout = new nux::VLayout();160 nux::VLayout* album_data_layout = new nux::VLayout();
161 album_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());161 album_data_layout->SetSpaceBetweenChildren(style.GetSpaceBetweenTitleAndSubtitle());
162162
163 title_ = new nux::StaticCairoText(preview_model_->title);163 title_ = new nux::StaticCairoText(preview_model_->title, true, NUX_TRACKER_LOCATION);
164 title_->SetFont(style.title_font().c_str());164 title_->SetFont(style.title_font().c_str());
165 title_->SetLines(-1);165 title_->SetLines(-1);
166 album_data_layout->AddView(title_.GetPointer(), 1);166 album_data_layout->AddView(title_.GetPointer(), 1);
167167
168 if (!preview_model_->subtitle.Get().empty())168 if (!preview_model_->subtitle.Get().empty())
169 {169 {
170 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle);170 subtitle_ = new nux::StaticCairoText(preview_model_->subtitle, true, NUX_TRACKER_LOCATION);
171 subtitle_->SetFont(style.subtitle_size_font().c_str());171 subtitle_->SetFont(style.subtitle_size_font().c_str());
172 subtitle_->SetLines(-1);172 subtitle_->SetLines(-1);
173 album_data_layout->AddView(subtitle_.GetPointer(), 1);173 album_data_layout->AddView(subtitle_.GetPointer(), 1);
174174
=== modified file 'dash/previews/PreviewInfoHintWidget.cpp'
--- dash/previews/PreviewInfoHintWidget.cpp 2012-08-17 08:20:41 +0000
+++ dash/previews/PreviewInfoHintWidget.cpp 2012-08-28 08:32:21 +0000
@@ -160,14 +160,14 @@
160 std::string tmp_display_name = info_hint->display_name;160 std::string tmp_display_name = info_hint->display_name;
161 tmp_display_name += ":";161 tmp_display_name += ":";
162162
163 info_name = new nux::StaticCairoText(tmp_display_name, NUX_TRACKER_LOCATION);163 info_name = new nux::StaticCairoText(tmp_display_name, true, NUX_TRACKER_LOCATION);
164 info_name->SetFont(style.info_hint_bold_font());164 info_name->SetFont(style.info_hint_bold_font());
165 info_name->SetLines(-1);165 info_name->SetLines(-1);
166 info_name->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_RIGHT);166 info_name->SetTextAlignment(nux::StaticCairoText::NUX_ALIGN_RIGHT);
167 hint_layout->AddView(info_name.GetPointer(), 0, nux::MINOR_POSITION_CENTER);167 hint_layout->AddView(info_name.GetPointer(), 0, nux::MINOR_POSITION_CENTER);
168 }168 }
169169
170 StaticCairoTextPtr info_value(new nux::StaticCairoText(StringFromVariant(info_hint->value), NUX_TRACKER_LOCATION));170 StaticCairoTextPtr info_value(new nux::StaticCairoText(StringFromVariant(info_hint->value), true, NUX_TRACKER_LOCATION));
171 info_value->SetFont(style.info_hint_font());171 info_value->SetFont(style.info_hint_font());
172 info_value->SetLines(-1);172 info_value->SetLines(-1);
173 hint_layout->AddView(info_value.GetPointer(), 1, nux::MINOR_POSITION_CENTER);173 hint_layout->AddView(info_value.GetPointer(), 1, nux::MINOR_POSITION_CENTER);
174174
=== modified file 'dash/previews/PreviewRatingsWidget.cpp'
--- dash/previews/PreviewRatingsWidget.cpp 2012-08-17 08:20:41 +0000
+++ dash/previews/PreviewRatingsWidget.cpp 2012-08-28 08:32:21 +0000
@@ -52,7 +52,7 @@
52 ratings_->SetEditable(false);52 ratings_->SetEditable(false);
53 layout->AddView(ratings_);53 layout->AddView(ratings_);
54 54
55 reviews_ = new nux::StaticCairoText("");55 reviews_ = new nux::StaticCairoText("", NUX_TRACKER_LOCATION);
56 reviews_->SetFont(style.user_rating_font());56 reviews_->SetFont(style.user_rating_font());
57 layout->AddView(reviews_);57 layout->AddView(reviews_);
5858
5959
=== modified file 'dash/previews/Track.cpp'
--- dash/previews/Track.cpp 2012-08-22 10:03:52 +0000
+++ dash/previews/Track.cpp 2012-08-28 08:32:21 +0000
@@ -159,7 +159,7 @@
159 uri_ = track.uri;159 uri_ = track.uri;
160 progress_ = track.progress;160 progress_ = track.progress;
161161
162 title_->SetText(track.title);162 title_->SetText(track.title, true);
163163
164 std::stringstream ss_track_number;164 std::stringstream ss_track_number;
165 ss_track_number << track.track_number;165 ss_track_number << track.track_number;
166166
=== modified file 'tests/test_previews_application.cpp'
--- tests/test_previews_application.cpp 2012-08-15 11:23:55 +0000
+++ tests/test_previews_application.cpp 2012-08-28 08:32:21 +0000
@@ -70,16 +70,16 @@
70 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));70 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_application_preview_new()));
7171
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));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));
73 unity_protocol_application_preview_set_license(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "License");73 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");74 unity_protocol_application_preview_set_copyright(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "Copywrite & special char");
75 unity_protocol_application_preview_set_last_update(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "11th Apr 2012");75 unity_protocol_application_preview_set_last_update(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), "11th Apr 2012");
76 unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 0.8);76 unity_protocol_application_preview_set_rating(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 0.8);
77 unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 12);77 unity_protocol_application_preview_set_num_ratings(UNITY_PROTOCOL_APPLICATION_PREVIEW(proto_obj.RawPtr()), 12);
7878
79 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");79 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");
80 unity_protocol_preview_set_title(proto_obj, "Application Title");80 unity_protocol_preview_set_title(proto_obj, "Application Title & special char");
81 unity_protocol_preview_set_subtitle(proto_obj, "Application Subtitle");81 unity_protocol_preview_set_subtitle(proto_obj, "Application Subtitle > special char");
82 unity_protocol_preview_set_description(proto_obj, "Application Desctiption");82 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);83 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);84 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);
85 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));85 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
@@ -110,12 +110,12 @@
110{ 110{
111 MockApplicationPreview::Ptr preview_view(new MockApplicationPreview(preview_model_));111 MockApplicationPreview::Ptr preview_view(new MockApplicationPreview(preview_model_));
112112
113 EXPECT_EQ(preview_view->title_->GetText(), "Application Title");113 EXPECT_EQ(preview_view->title_->GetText(), "Application Title &amp; special char");
114 EXPECT_EQ(preview_view->subtitle_->GetText(), "Application Subtitle");114 EXPECT_EQ(preview_view->subtitle_->GetText(), "Application Subtitle &gt; special char");
115 EXPECT_EQ(preview_view->description_->GetText(), "Application Desctiption");115 EXPECT_EQ(preview_view->description_->GetText(), "Application Desctiption &lt; special char");
116 EXPECT_EQ(preview_view->license_->GetText(), "License");116 EXPECT_EQ(preview_view->license_->GetText(), "License &amp; special char");
117 //EXPECT_EQ(preview_view->last_update_->GetText(), "Last Updated 11th Apr 2012"); // Not 100% sure this will work with translations.117 //EXPECT_EQ(preview_view->last_update_->GetText(), "Last Updated 11th Apr 2012"); // Not 100% sure this will work with translations.
118 EXPECT_EQ(preview_view->copywrite_->GetText(), "Copywrite");118 EXPECT_EQ(preview_view->copywrite_->GetText(), "Copywrite &amp; special char");
119119
120 EXPECT_EQ(preview_view->app_rating_->GetRating(), 0.8f);120 EXPECT_EQ(preview_view->app_rating_->GetRating(), 0.8f);
121 EXPECT_EQ(preview_view->action_buttons_.size(), 2);121 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
122122
=== modified file 'tests/test_previews_generic.cpp'
--- tests/test_previews_generic.cpp 2012-08-15 11:23:55 +0000
+++ tests/test_previews_generic.cpp 2012-08-28 08:32:21 +0000
@@ -64,9 +64,9 @@
64 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_generic_preview_new()));64 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_generic_preview_new()));
6565
66 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");66 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");67 unity_protocol_preview_set_title(proto_obj, "Generic Title & special char");
68 unity_protocol_preview_set_subtitle(proto_obj, "Generic Subtitle");68 unity_protocol_preview_set_subtitle(proto_obj, "Generic Subtitle > special char");
69 unity_protocol_preview_set_description(proto_obj, "Generic Desctiption");69 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);70 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);71 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);
72 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));72 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
@@ -97,9 +97,9 @@
97{97{
98 MockGenericPreview::Ptr preview_view(new MockGenericPreview(preview_model_));98 MockGenericPreview::Ptr preview_view(new MockGenericPreview(preview_model_));
9999
100 EXPECT_EQ(preview_view->title_->GetText(), "Generic Title");100 EXPECT_EQ(preview_view->title_->GetText(), "Generic Title &amp; special char");
101 EXPECT_EQ(preview_view->subtitle_->GetText(), "Generic Subtitle");101 EXPECT_EQ(preview_view->subtitle_->GetText(), "Generic Subtitle &gt; special char");
102 EXPECT_EQ(preview_view->description_->GetText(), "Generic Desctiption");102 EXPECT_EQ(preview_view->description_->GetText(), "Generic Desctiption &lt; special char");
103103
104 EXPECT_EQ(preview_view->action_buttons_.size(), 2);104 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
105}105}
106106
=== modified file 'tests/test_previews_movie.cpp'
--- tests/test_previews_movie.cpp 2012-08-15 11:23:55 +0000
+++ tests/test_previews_movie.cpp 2012-08-28 08:32:21 +0000
@@ -70,9 +70,9 @@
70 unity_protocol_movie_preview_set_num_ratings(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 12);70 unity_protocol_movie_preview_set_num_ratings(UNITY_PROTOCOL_MOVIE_PREVIEW(proto_obj.RawPtr()), 12);
7171
72 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");72 unity_protocol_preview_set_image_source_uri(proto_obj, "http://ia.media-imdb.com/images/M/MV5BMTM3NDM5MzY5Ml5BMl5BanBnXkFtZTcwNjExMDUwOA@@._V1._SY317_.jpg");
73 unity_protocol_preview_set_title(proto_obj, "Movie Title");73 unity_protocol_preview_set_title(proto_obj, "Movie Title & special char");
74 unity_protocol_preview_set_subtitle(proto_obj, "Movie Subtitle");74 unity_protocol_preview_set_subtitle(proto_obj, "Movie Subtitle > special char");
75 unity_protocol_preview_set_description(proto_obj, "Movie Desctiption");75 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);76 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);77 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);
78 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));78 unity_protocol_preview_add_info_hint(proto_obj, "hint1", "Hint 1", NULL, g_variant_new("s", "string hint 1"));
@@ -103,9 +103,9 @@
103{103{
104 MockMoviePreview::Ptr preview_view(new MockMoviePreview(preview_model_));104 MockMoviePreview::Ptr preview_view(new MockMoviePreview(preview_model_));
105105
106 EXPECT_EQ(preview_view->title_->GetText(), "Movie Title");106 EXPECT_EQ(preview_view->title_->GetText(), "Movie Title &amp; special char");
107 EXPECT_EQ(preview_view->subtitle_->GetText(), "Movie Subtitle");107 EXPECT_EQ(preview_view->subtitle_->GetText(), "Movie Subtitle &gt; special char");
108 EXPECT_EQ(preview_view->description_->GetText(), "Movie Desctiption");108 EXPECT_EQ(preview_view->description_->GetText(), "Movie Desctiption &lt; special char");
109109
110 EXPECT_EQ(preview_view->rating_->GetRating(), 0.8f);110 EXPECT_EQ(preview_view->rating_->GetRating(), 0.8f);
111 EXPECT_EQ(preview_view->action_buttons_.size(), 2);111 EXPECT_EQ(preview_view->action_buttons_.size(), 2);
112112
=== modified file 'tests/test_previews_music.cpp'
--- tests/test_previews_music.cpp 2012-08-15 11:23:55 +0000
+++ tests/test_previews_music.cpp 2012-08-28 08:32:21 +0000
@@ -65,9 +65,9 @@
65 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_music_preview_new()));65 glib::Object<UnityProtocolPreview> proto_obj(UNITY_PROTOCOL_PREVIEW(unity_protocol_music_preview_new()));
6666
67 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_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");68 unity_protocol_preview_set_title(proto_obj, "Music Title & special char");
69 unity_protocol_preview_set_subtitle(proto_obj, "Music Subtitle");69 unity_protocol_preview_set_subtitle(proto_obj, "Music Subtitle > special char");
70 unity_protocol_preview_set_description(proto_obj, "Music Desctiption");70 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);71 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);72 unity_protocol_preview_add_action(proto_obj, "action2", "Action 2", NULL, 0);
73 unity_protocol_preview_add_action(proto_obj, "action3", "Action 3", NULL, 0);73 unity_protocol_preview_add_action(proto_obj, "action3", "Action 3", NULL, 0);
@@ -100,8 +100,8 @@
100{100{
101 MockMusicPreview::Ptr preview_view(new MockMusicPreview(preview_model_));101 MockMusicPreview::Ptr preview_view(new MockMusicPreview(preview_model_));
102102
103 EXPECT_EQ(preview_view->title_->GetText(), "Music Title");103 EXPECT_EQ(preview_view->title_->GetText(), "Music Title &amp; special char");
104 EXPECT_EQ(preview_view->subtitle_->GetText(), "Music Subtitle");104 EXPECT_EQ(preview_view->subtitle_->GetText(), "Music Subtitle &gt; special char");
105105
106 EXPECT_EQ(preview_view->action_buttons_.size(), 4);106 EXPECT_EQ(preview_view->action_buttons_.size(), 4);
107}107}
108108
=== modified file 'unity-shared/StaticCairoText.cpp'
--- unity-shared/StaticCairoText.cpp 2012-08-15 16:21:08 +0000
+++ unity-shared/StaticCairoText.cpp 2012-08-28 08:32:21 +0000
@@ -162,6 +162,16 @@
162 SetAcceptKeyNavFocusOnMouseDown(false);162 SetAcceptKeyNavFocusOnMouseDown(false);
163}163}
164164
165StaticCairoText::StaticCairoText(std::string const& text, bool escape_text,
166 NUX_FILE_LINE_DECL)
167 : View(NUX_FILE_LINE_PARAM)
168 , pimpl(new Impl(this, escape_text ? GetEscapedText(text) : text))
169{
170 SetMinimumSize(1, 1);
171 SetAcceptKeyNavFocusOnMouseDown(false);
172}
173
174
165StaticCairoText::~StaticCairoText()175StaticCairoText::~StaticCairoText()
166{176{
167 delete pimpl;177 delete pimpl;
@@ -298,11 +308,13 @@
298 // intentionally left empty308 // intentionally left empty
299}309}
300310
301void StaticCairoText::SetText(std::string const& text)311void StaticCairoText::SetText(std::string const& text, bool escape_text)
302{312{
303 if (pimpl->text_ != text)313 std::string tmp_text = escape_text ? GetEscapedText(text) : text;
314
315 if (pimpl->text_ != tmp_text)
304 {316 {
305 pimpl->text_ = text;317 pimpl->text_ = tmp_text;
306 pimpl->need_new_extent_cache_ = true;318 pimpl->need_new_extent_cache_ = true;
307 pimpl->UpdateTexture();319 pimpl->UpdateTexture();
308 sigTextChanged.emit(this);320 sigTextChanged.emit(this);
@@ -337,6 +349,11 @@
337 return pimpl->text_;349 return pimpl->text_;
338}350}
339351
352std::string StaticCairoText::GetEscapedText(std::string const& text)
353{
354 return glib::String(g_markup_escape_text(text.c_str(), -1)).Str();
355}
356
340Color StaticCairoText::GetTextColor() const357Color StaticCairoText::GetTextColor() const
341{358{
342 return pimpl->text_color_;359 return pimpl->text_color_;
343360
=== modified file 'unity-shared/StaticCairoText.h'
--- unity-shared/StaticCairoText.h 2012-08-15 16:21:08 +0000
+++ unity-shared/StaticCairoText.h 2012-08-28 08:32:21 +0000
@@ -52,6 +52,7 @@
52 };52 };
5353
54 StaticCairoText(std::string const& text, NUX_FILE_LINE_PROTO);54 StaticCairoText(std::string const& text, NUX_FILE_LINE_PROTO);
55 StaticCairoText(std::string const& text, bool escape_text, NUX_FILE_LINE_PROTO);
55 ~StaticCairoText();56 ~StaticCairoText();
5657
57 void PreLayoutManagement();58 void PreLayoutManagement();
@@ -68,7 +69,7 @@
68 bool forceDraw);69 bool forceDraw);
6970
70 // public API71 // public API
71 void SetText(std::string const& text);72 void SetText(std::string const& text, bool escape_text = false);
72 void SetTextColor(Color const& textColor);73 void SetTextColor(Color const& textColor);
73 void SetTextEllipsize(EllipsizeState state);74 void SetTextEllipsize(EllipsizeState state);
74 void SetTextAlignment(AlignState state);75 void SetTextAlignment(AlignState state);
@@ -95,6 +96,8 @@
95 void SetMaximumSize(int w, int h);96 void SetMaximumSize(int w, int h);
96 void SetMaximumWidth(int w);97 void SetMaximumWidth(int w);
9798
99 static std::string GetEscapedText(std::string const& text);
100
98protected:101protected:
99 // Key navigation102 // Key navigation
100 virtual bool AcceptKeyNavFocus();103 virtual bool AcceptKeyNavFocus();