Merge lp:~tintou/appcenter/appstream-0.10 into lp:~elementary-apps/appcenter/appcenter

Proposed by Corentin Noël
Status: Merged
Approved by: Rico Tzschichholz
Approved revision: 328
Merged at revision: 328
Proposed branch: lp:~tintou/appcenter/appstream-0.10
Merge into: lp:~elementary-apps/appcenter/appcenter
Diff against target: 342 lines (+63/-102)
4 files modified
CMakeLists.txt (+1/-1)
src/Core/Client.vala (+38/-50)
src/Views/AppInfoView.vala (+10/-13)
src/Views/CategoryView.vala (+14/-38)
To merge this branch: bzr merge lp:~tintou/appcenter/appstream-0.10
Reviewer Review Type Date Requested Status
Rico Tzschichholz Approve
Adam Bieńkowski (community) code / testing Approve
Review via email: mp+307131@code.launchpad.net

Commit message

Ported to AppStream 0.10

Description of the change

Ported to AppStream 0.10 (tested with the debian package)
It seems to fix the translation not being in use in packages.
Categories search is also faster as it uses internal functions of libappstream

To post a comment you must log in.
Revision history for this message
Adam Bieńkowski (donadigo) wrote :

Looks & works great for me.

review: Approve (code / testing)
Revision history for this message
Rico Tzschichholz (ricotz) :
review: Approve
Revision history for this message
RabbitBot (rabbitbot-a) wrote :

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

text conflict in src/Core/Client.vala

lp:~tintou/appcenter/appstream-0.10 updated
328. By Corentin Noël

Ported to AppStream 0.10

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2016-09-26 13:07:01 +0000
3+++ CMakeLists.txt 2016-10-26 13:00:41 +0000
4@@ -19,7 +19,7 @@
5 add_definitions (-DI_KNOW_THE_PACKAGEKIT_GLIB2_API_IS_SUBJECT_TO_CHANGE)
6
7 find_package (PkgConfig)
8-pkg_check_modules (DEPS REQUIRED gthread-2.0 gee-0.8 gtk+-3.0>=3.10 granite packagekit-glib2 appstream>=0.9.0)
9+pkg_check_modules (DEPS REQUIRED gthread-2.0 gee-0.8 gtk+-3.0>=3.10 granite packagekit-glib2 appstream>=0.10.0)
10
11 add_definitions (${DEPS_CFLAGS})
12 link_directories (${DEPS_LIBRARY_DIRS})
13
14=== modified file 'src/Core/Client.vala'
15--- src/Core/Client.vala 2016-10-17 17:27:00 +0000
16+++ src/Core/Client.vala 2016-10-26 13:00:41 +0000
17@@ -26,7 +26,7 @@
18 private Gee.LinkedList<AppCenter.Task> task_list;
19 private Gee.LinkedList<AppCenter.Task> task_with_agreement_list;
20 private Gee.HashMap<string, AppCenterCore.Package> package_list;
21- private AppStream.Database appstream_database;
22+ private AppStream.Pool appstream_pool;
23 private GLib.Cancellable interface_cancellable;
24 private GLib.DateTime last_cache_update;
25 private uint updates_number = 0U;
26@@ -36,16 +36,12 @@
27 private const int SECONDS_BETWEEN_REFRESHES = 60*60*24;
28
29 private Client () {
30- try {
31- appstream_database.get_all_components ().foreach ((comp) => {
32- var package = new AppCenterCore.Package (comp);
33- foreach (var pkg_name in comp.get_pkgnames ()) {
34- package_list.set (pkg_name, package);
35- }
36- });
37- } catch (Error e) {
38- error (e.message);
39- }
40+ appstream_pool.get_components ().foreach ((comp) => {
41+ var package = new AppCenterCore.Package (comp);
42+ foreach (var pkg_name in comp.get_pkgnames ()) {
43+ package_list.set (pkg_name, package);
44+ }
45+ });
46 }
47
48 construct {
49@@ -55,9 +51,9 @@
50 interface_cancellable = new GLib.Cancellable ();
51 last_cache_update = null;
52
53- appstream_database = new AppStream.Database ();
54+ appstream_pool = new AppStream.Pool ();
55 try {
56- appstream_database.open ();
57+ appstream_pool.load ();
58 } catch (Error e) {
59 error (e.message);
60 }
61@@ -102,16 +98,6 @@
62 }
63 }
64
65- public AppStream.Component? get_extension (string extension) throws GLib.Error {
66- try {
67- return appstream_database.get_component_by_id (extension);
68- } catch (Error e) {
69- warning ("%s\n", e.message);
70- }
71-
72- return null;
73- }
74-
75 public async Pk.Exit install_package (Package package, Pk.ProgressCallback cb, GLib.Cancellable cancellable) throws GLib.Error {
76 Pk.Exit exit_status = Pk.Exit.UNKNOWN;
77 AppCenter.Task install_task = request_task ();
78@@ -276,41 +262,43 @@
79 return packages;
80 }
81
82- public Gee.Collection<AppCenterCore.Package> search_applications (string? query, AppStream.Category? category) {
83- var apps = new Gee.TreeSet<AppCenterCore.Package> ();
84- string categories = category == null ? null : get_string_from_categories (category);
85- try {
86- var comps = appstream_database.find_components (query, categories);
87+ public Gee.Collection<AppCenterCore.Package> get_applications_for_category (AppStream.Category category) {
88+ unowned GLib.GenericArray<AppStream.Component> components = category.get_components ();
89+ if (components.length == 0) {
90+ var category_array = new GLib.GenericArray<AppStream.Category> ();
91+ category_array.add (category);
92+ AppStream.utils_sort_components_into_categories (appstream_pool.get_components (), category_array, true);
93+ components = category.get_components ();
94+ }
95+
96+ var apps = new Gee.TreeSet<AppCenterCore.Package> ();
97+ components.foreach ((comp) => {
98+ apps.add (package_list.get (comp.get_pkgnames ()[0]));
99+ });
100+
101+ return apps;
102+ }
103+
104+ public Gee.Collection<AppCenterCore.Package> search_applications (string query, AppStream.Category? category) {
105+ var apps = new Gee.TreeSet<AppCenterCore.Package> ();
106+ GLib.GenericArray<weak AppStream.Component> comps = appstream_pool.search (query);
107+ if (category == null) {
108 comps.foreach ((comp) => {
109 apps.add (package_list.get (comp.get_pkgnames ()[0]));
110 });
111- } catch (Error e) {
112- critical (e.message);
113+ } else {
114+ var cat_packages = get_applications_for_category (category);
115+ comps.foreach ((comp) => {
116+ var package = package_list.get (comp.get_pkgnames ()[0]);
117+ if (package in cat_packages) {
118+ apps.add (package);
119+ }
120+ });
121 }
122
123 return apps;
124 }
125
126- private string get_string_from_categories (AppStream.Category category) {
127- string categories = "";
128- unowned Gee.LinkedList<string> categories_list = category.get_data<Gee.LinkedList> ("categories");
129- foreach (var cat in categories_list) {
130- if (categories != "") {
131- categories += ";" + cat.down ();
132- } else {
133- categories = cat.down ();
134- }
135- }
136-
137- category.get_subcategories ().foreach ((cat) => {
138- if (!(cat.name in categories)) {
139- categories += ";" + get_string_from_categories (cat);
140- }
141- });
142-
143- return categories;
144- }
145-
146 public Pk.Package? get_app_package (string application, Pk.Bitfield additional_filters = 0) throws GLib.Error {
147 AppCenter.Task packages_task = request_task (false);
148 Pk.Package? package = null;
149
150=== modified file 'src/Views/AppInfoView.vala'
151--- src/Views/AppInfoView.vala 2016-09-08 09:52:03 +0000
152+++ src/Views/AppInfoView.vala 2016-10-26 13:00:41 +0000
153@@ -121,7 +121,7 @@
154
155 parse_description (package.component.get_description ());
156
157- if (package.component.get_extensions ().length > 0) {
158+ if (package.component.get_addons ().length > 0) {
159 extension_box = new Gtk.ListBox ();
160 extension_box.selection_mode = Gtk.SelectionMode.NONE;
161
162@@ -141,17 +141,10 @@
163 }
164
165 private async void load_extensions () {
166- package.component.get_extensions ().@foreach ((cid) => {
167- try {
168- var extension = AppCenterCore.Client.get_default ().get_extension (cid);
169- if (extension != null) {
170- var row = new Widgets.PackageRow (new AppCenterCore.Package (extension), null, false);
171- if (extension_box != null) {
172- extension_box.add (row);
173- }
174- }
175- } catch (Error e) {
176- warning ("%s\n", e.message);
177+ package.component.get_addons ().@foreach ((extension) => {
178+ var row = new Widgets.PackageRow (new AppCenterCore.Package (extension), null, false);
179+ if (extension_box != null) {
180+ extension_box.add (row);
181 }
182 });
183 }
184@@ -231,7 +224,11 @@
185
186 private void parse_description (string? description) {
187 if (description != null) {
188- app_description.buffer.text = AppStream.description_markup_convert_simple (description);
189+ try {
190+ app_description.buffer.text = AppStream.markup_convert_simple (description);
191+ } catch (Error e) {
192+ critical (e.message);
193+ }
194 }
195 }
196 }
197
198=== modified file 'src/Views/CategoryView.vala'
199--- src/Views/CategoryView.vala 2016-09-24 21:35:11 +0000
200+++ src/Views/CategoryView.vala 2016-10-26 13:00:41 +0000
201@@ -95,7 +95,7 @@
202 });
203
204 unowned Client client = Client.get_default ();
205- var apps = client.search_applications (null, category);
206+ var apps = client.get_applications_for_category (category);
207 foreach (var app in apps) {
208 app_list_view.add_package (app);
209 }
210@@ -121,9 +121,7 @@
211 var category = new AppStream.Category ();
212 category.set_name (_("Audio"));
213 category.set_icon ("applications-audio-symbolic");
214- var categories = new Gee.LinkedList<string> ();
215- categories.add ("Audio");
216- category.set_data<Gee.LinkedList> ("categories", categories);
217+ category.add_desktop_group ("Audio");
218 var item = new Widgets.CategoryItem (category);
219 item.add_category_class ("audio");
220
221@@ -133,10 +131,8 @@
222 private Widgets.CategoryItem get_development_category () {
223 var category = new AppStream.Category ();
224 category.set_name (_("Development"));
225- var categories = new Gee.LinkedList<string> ();
226- categories.add ("Development");
227- categories.add ("IDE");
228- category.set_data<Gee.LinkedList> ("categories", categories);
229+ category.add_desktop_group ("Development");
230+ category.add_desktop_group ("IDE");
231 var item = new Widgets.CategoryItem (category);
232 item.add_category_class ("development");
233
234@@ -147,9 +143,7 @@
235 var category = new AppStream.Category ();
236 category.set_name (_("Accessories"));
237 category.set_icon ("applications-accessories");
238- var categories = new Gee.LinkedList<string> ();
239- categories.add ("Utility");
240- category.set_data<Gee.LinkedList> ("categories", categories);
241+ category.add_desktop_group ("Utility");
242 var item = new Widgets.CategoryItem (category);
243 item.add_category_class ("accessories");
244
245@@ -160,9 +154,7 @@
246 var category = new AppStream.Category ();
247 category.set_name (_("Office"));
248 category.set_icon ("applications-office-symbolic");
249- var categories = new Gee.LinkedList<string> ();
250- categories.add ("Office");
251- category.set_data<Gee.LinkedList> ("categories", categories);
252+ category.add_desktop_group ("Office");
253 var item = new Widgets.CategoryItem (category);
254 item.add_category_class ("office");
255
256@@ -173,9 +165,7 @@
257 var category = new AppStream.Category ();
258 category.set_name (_("System"));
259 category.set_icon ("applications-system");
260- var categories = new Gee.LinkedList<string> ();
261- categories.add ("System");
262- category.set_data<Gee.LinkedList> ("categories", categories);
263+ category.add_desktop_group ("System");
264 var item = new Widgets.CategoryItem (category);
265 item.add_category_class ("system");
266
267@@ -186,9 +176,7 @@
268 var category = new AppStream.Category ();
269 category.set_name (_("Video"));
270 category.set_icon ("applications-video-symbolic");
271- var categories = new Gee.LinkedList<string> ();
272- categories.add ("Video");
273- category.set_data<Gee.LinkedList> ("categories", categories);
274+ category.add_desktop_group ("Video");
275 var item = new Widgets.CategoryItem (category);
276 item.add_category_class ("video");
277
278@@ -198,9 +186,7 @@
279 private Widgets.CategoryItem get_graphics_category () {
280 var category = new AppStream.Category ();
281 category.set_name (_("Graphics"));
282- var categories = new Gee.LinkedList<string> ();
283- categories.add ("Graphics");
284- category.set_data<Gee.LinkedList> ("categories", categories);
285+ category.add_desktop_group ("Graphics");
286 var item = new Widgets.CategoryItem (category);
287 item.add_category_class ("graphics");
288
289@@ -210,9 +196,7 @@
290 private Widgets.CategoryItem get_games_category () {
291 var category = new AppStream.Category ();
292 category.set_name (_("Games"));
293- var categories = new Gee.LinkedList<string> ();
294- categories.add ("Game");
295- category.set_data<Gee.LinkedList> ("categories", categories);
296+ category.add_desktop_group ("Game");
297 category.set_icon ("applications-games-symbolic");
298 var item = new Widgets.CategoryItem (category);
299 item.add_category_class ("games");
300@@ -223,9 +207,7 @@
301 private Widgets.CategoryItem get_education_category () {
302 var category = new AppStream.Category ();
303 category.set_name (_("Education"));
304- var categories = new Gee.LinkedList<string> ();
305- categories.add ("Education");
306- category.set_data<Gee.LinkedList> ("categories", categories);
307+ category.add_desktop_group ("Education");
308 var item = new Widgets.CategoryItem (category);
309 item.add_category_class ("education");
310
311@@ -236,9 +218,7 @@
312 var category = new AppStream.Category ();
313 category.set_name (_("Internet"));
314 category.set_icon ("applications-internet");
315- var categories = new Gee.LinkedList<string> ();
316- categories.add ("Network");
317- category.set_data<Gee.LinkedList> ("categories", categories);
318+ category.add_desktop_group ("Network");
319 var item = new Widgets.CategoryItem (category);
320 item.add_category_class ("internet");
321
322@@ -248,9 +228,7 @@
323 private Widgets.CategoryItem get_science_category () {
324 var category = new AppStream.Category ();
325 category.set_name (_("Science & Engineering"));
326- var categories = new Gee.LinkedList<string> ();
327- categories.add ("Science");
328- category.set_data<Gee.LinkedList> ("categories", categories);
329+ category.add_desktop_group ("Science");
330 var item = new Widgets.CategoryItem (category);
331 item.add_category_class ("science");
332
333@@ -261,9 +239,7 @@
334 var category = new AppStream.Category ();
335 category.set_name (_("Universal Access"));
336 category.set_icon ("applications-accessibility-symbolic");
337- var categories = new Gee.LinkedList<string> ();
338- categories.add ("Accessibility");
339- category.set_data<Gee.LinkedList> ("categories", categories);
340+ category.add_desktop_group ("Accessibility");
341 var item = new Widgets.CategoryItem (category);
342 item.add_category_class ("accessibility");
343

Subscribers

People subscribed via source and target branches