Debian

Available patches from Ubuntu

To see Ubuntu differences wrt. to Debian, write down a grep-dctrl query identifying the packages you're interested in:
grep-dctrl -n -sPackage Sources.Debian
(e.g. -FPackage linux-ntfs or linux-ntfs)

Modified packages are listed below:

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: gnome-software

gnome-software (3.36.1-0ubuntu1) groovy; urgency=medium * New upstream release * debian/patches/0001-Mark-featured-AppStream-snippets-as-append-merge-com.patch: - Applied upstream -- Robert Ancell <robert.ancell@canonical.com> Tue, 30 Jun 2020 16:59:28 +1200 gnome-software (3.36.0-0ubuntu3) focal; urgency=medium * debian/patches/0026-Add-a-dialog-to-log-into-the-snap-store.patch: - Fix FTBFS on riscv64 where snap support is disabled -- Robert Ancell <robert.ancell@canonical.com> Fri, 17 Apr 2020 10:03:17 +1200 gnome-software (3.36.0-0ubuntu2) focal; urgency=medium * debian/patches/0001-Mark-featured-AppStream-snippets-as-append-merge-com.patch: - Fix invalid appstream data that causes APT to emit a warning (LP: #1872258) * debian/control: * debian/ubuntu-software.install: * debian/ubuntu-software.links: * debian/icons/*: * debian/patches/0014-build-Translate-Ubuntu-s-.desktop-file.patch: - Remove ubuntu-software package - now provided by snap-store snap (LP: #1872111) -- Robert Ancell <robert.ancell@canonical.com> Thu, 16 Apr 2020 16:20:21 +1200 gnome-software (3.36.0-0ubuntu1) focal; urgency=medium * New upstream release (LP: #1870991) * debian/patches/0026-Add-a-dialog-to-log-into-the-snap-store.patch: - Add a GUI to do log in and out of the store * debian/patches/0027-snap-Don-t-allow-system-snaps-to-be-uninstalled.patch: - Don't allow system snaps to be uninstalled -- Robert Ancell <robert.ancell@canonical.com> Mon, 06 Apr 2020 09:24:13 +1200 gnome-software (3.35.91-0ubuntu1) focal; urgency=medium * New upstream release * debian/control: - Add build-depends on libostree-dev -- Robert Ancell <robert.ancell@canonical.com> Fri, 21 Feb 2020 15:23:24 +1300 gnome-software (3.35.2-0ubuntu2) focal; urgency=medium * d/p/0029-Fix-CSS-colors-to-work-correctly-with-Yaru-Adwaita.patch: - Use theme exported colors (LP: #1862056) * d/p/0001-GsApp-Add-a-new-do-not-auto-update-quirk.patch: * d/p/0002-fwupd-Use-new-GS_APP_QUIRK_DO_NOT_AUTO_UPDATE.patch: * d/p/0003-snap-Stop-snaps-from-being-automatically-updated.patch: - Stop snaps being automatically updated (LP: #1862158) -- Robert Ancell <robert.ancell@canonical.com> Tue, 11 Feb 2020 12:07:52 +1300 gnome-software (3.35.2-0ubuntu1) focal; urgency=medium * New upstream release -- Robert Ancell <robert.ancell@canonical.com> Wed, 29 Jan 2020 15:15:58 +1300 gnome-software (3.34.2-1ubuntu1) focal; urgency=medium * Rebased on Debian, remaining Ubuntu changes: - Add an "ubuntu-software" package with some branding for Ubuntu. - debian/patches/*.patch: - Various Ubuntu changes from ubuntu-master branch - see patch headers for more information. -- Robert Ancell <robert.ancell@canonical.com> Tue, 14 Jan 2020 14:34:38 +1300

Modifications :
  1. Download patch debian/patches/0004-Hide-Kudo-details-since-we-don-t-have-good-data.patch

    --- 3.36.1-1/debian/patches/0004-Hide-Kudo-details-since-we-don-t-have-good-data.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0004-Hide-Kudo-details-since-we-don-t-have-good-data.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,43 @@ +From 895a427d54c6e3711cb8ce7627843c9427d21dde Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Tue, 8 Nov 2016 09:58:05 +1300 +Subject: [PATCH 04/29] Hide Kudo details since we don't have good data + +--- + src/gs-details-page.c | 5 +++-- + src/gs-details-page.ui | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/gs-details-page.c b/src/gs-details-page.c +index 8eb07bd3..af5160cb 100644 +--- a/src/gs-details-page.c ++++ b/src/gs-details-page.c +@@ -1276,9 +1276,10 @@ gs_details_page_refresh_all (GsDetailsPage *self) + + /* hide the kudo details for non-desktop software */ + switch (gs_app_get_kind (self->app)) { +- case AS_APP_KIND_DESKTOP: ++ // Hidden on Ubuntu since don't have appropriate information ++ /*case AS_APP_KIND_DESKTOP: + gtk_widget_set_visible (self->grid_details_kudo, TRUE); +- break; ++ break;*/ + default: + gtk_widget_set_visible (self->grid_details_kudo, FALSE); + break; +diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui +index f86674fe..aab24476 100644 +--- a/src/gs-details-page.ui ++++ b/src/gs-details-page.ui +@@ -457,7 +457,7 @@ + <property name="spacing">30</property> + <child> + <object class="GtkGrid" id="grid_details_kudo"> +- <property name="visible">True</property> ++ <property name="visible">False</property> + <property name="row_spacing">9</property> + <property name="column_spacing">12</property> + <property name="hexpand">True</property> +-- +2.25.1 +
  2. Download patch debian/patches/0024-snap-Set-first-featured-snap-as-featured-banner.patch
  3. Download patch debian/patches/0026-Add-a-dialog-to-log-into-the-snap-store.patch
  4. Download patch debian/patches/0005-details-Show-an-in-app-notification-when-passed-an-i.patch

    --- 3.36.1-1/debian/patches/0005-details-Show-an-in-app-notification-when-passed-an-i.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0005-details-Show-an-in-app-notification-when-passed-an-i.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,193 @@ +From 74a448ab37044ade1bfc3eb431fab22ad04e242c Mon Sep 17 00:00:00 2001 +From: Iain Lane <iain@orangesquash.org.uk> +Date: Tue, 4 Apr 2017 13:25:33 +0100 +Subject: [PATCH 05/29] details: Show an in-app notification when passed an + invalid file or URL + +Previously there was no feedback when gnome-software was fed a bad URL +on the commandline - show a message. +--- + src/gs-details-page.c | 44 +++++++++++++++++++++++++++++++++++++++---- + src/gs-shell.c | 12 +----------- + src/gs-shell.h | 13 +++++++++++++ + 3 files changed, 54 insertions(+), 15 deletions(-) + +diff --git a/src/gs-details-page.c b/src/gs-details-page.c +index af5160cb..c0c5f3cb 100644 +--- a/src/gs-details-page.c ++++ b/src/gs-details-page.c +@@ -1850,23 +1850,47 @@ gs_details_page_load_stage1_cb (GObject *source, + gs_details_page_load_stage2 (self); + } + ++typedef struct { ++ GsDetailsPage *page; ++ gchar *url; ++} GsDetailsFileHelper; ++ ++static void ++gs_details_page_file_helper_free (GsDetailsFileHelper *helper) ++{ ++ g_object_unref (helper->page); ++ g_free (helper->url); ++ g_free (helper); ++} ++ ++G_DEFINE_AUTOPTR_CLEANUP_FUNC(GsDetailsFileHelper, gs_details_page_file_helper_free); ++ + static void + gs_details_page_file_to_app_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) + { + GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source); +- GsDetailsPage *self = GS_DETAILS_PAGE (user_data); ++ g_autoptr(GsDetailsFileHelper) helper = user_data; ++ GsDetailsPage *self = helper->page; + g_autoptr(GsAppList) list = NULL; + g_autoptr(GError) error = NULL; ++ g_autofree gchar *msg = NULL; + + list = gs_plugin_loader_job_process_finish (plugin_loader, + res, + &error); + if (list == NULL) { ++ /* TRANSLATORS: This message is shown when opening ++ * gnome-software with a path to an unhandled app, e.g. ++ * /no/such/file */ ++ msg = g_strdup_printf (_("Don't know how to handle ‘%s’"), helper->url); + g_warning ("failed to convert file to GsApp: %s", error->message); + /* go back to the overview */ + gs_shell_set_mode (self->shell, GS_SHELL_MODE_OVERVIEW); ++ gs_shell_show_event_app_notify (self->shell, ++ msg, ++ GS_SHELL_EVENT_BUTTON_NONE); + } else { + GsApp *app = gs_app_list_index (list, 0); + g_set_object (&self->app_local_file, app); +@@ -1881,17 +1905,23 @@ gs_details_page_url_to_app_cb (GObject *source, + gpointer user_data) + { + GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source); +- GsDetailsPage *self = GS_DETAILS_PAGE (user_data); ++ g_autoptr(GsDetailsFileHelper) helper = user_data; ++ GsDetailsPage *self = helper->page; + g_autoptr(GsAppList) list = NULL; + g_autoptr(GError) error = NULL; ++ g_autofree gchar *msg = NULL; + + list = gs_plugin_loader_job_process_finish (plugin_loader, + res, + &error); + if (list == NULL) { ++ msg = g_strdup_printf (_("Don't know how to handle ‘%s’"), helper->url); + g_warning ("failed to convert URL to GsApp: %s", error->message); + /* go back to the overview */ + gs_shell_set_mode (self->shell, GS_SHELL_MODE_OVERVIEW); ++ gs_shell_show_event_app_notify (self->shell, ++ msg, ++ GS_SHELL_EVENT_BUTTON_NONE); + } else { + GsApp *app = gs_app_list_index (list, 0); + _set_app (self, app); +@@ -1903,6 +1933,9 @@ void + gs_details_page_set_local_file (GsDetailsPage *self, GFile *file) + { + g_autoptr(GsPluginJob) plugin_job = NULL; ++ GsDetailsFileHelper *helper = g_new0 (GsDetailsFileHelper, 1); ++ helper->page = g_object_ref (self); ++ helper->url = g_file_get_uri (file); + gs_details_page_set_state (self, GS_DETAILS_PAGE_STATE_LOADING); + g_clear_object (&self->app_local_file); + plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_FILE_TO_APP, +@@ -1929,13 +1962,16 @@ gs_details_page_set_local_file (GsDetailsPage *self, GFile *file) + gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job, + self->cancellable, + gs_details_page_file_to_app_cb, +- self); ++ helper); + } + + void + gs_details_page_set_url (GsDetailsPage *self, const gchar *url) + { + g_autoptr(GsPluginJob) plugin_job = NULL; ++ GsDetailsFileHelper *helper = g_new0 (GsDetailsFileHelper, 1); ++ helper->page = g_object_ref (self); ++ helper->url = g_strdup (url); + gs_details_page_set_state (self, GS_DETAILS_PAGE_STATE_LOADING); + g_clear_object (&self->app_local_file); + plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_URL_TO_APP, +@@ -1963,7 +1999,7 @@ gs_details_page_set_url (GsDetailsPage *self, const gchar *url) + gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job, + self->cancellable, + gs_details_page_url_to_app_cb, +- self); ++ helper); + } + + /* refines a GsApp */ +diff --git a/src/gs-shell.c b/src/gs-shell.c +index 23caba12..8dbaf510 100644 +--- a/src/gs-shell.c ++++ b/src/gs-shell.c +@@ -1013,16 +1013,6 @@ gs_shell_allow_updates_notify_cb (GsPluginLoader *plugin_loader, + priv->mode == GS_SHELL_MODE_UPDATES); + } + +-typedef enum { +- GS_SHELL_EVENT_BUTTON_NONE = 0, +- GS_SHELL_EVENT_BUTTON_SOURCES = 1 << 0, +- GS_SHELL_EVENT_BUTTON_NO_SPACE = 1 << 1, +- GS_SHELL_EVENT_BUTTON_NETWORK_SETTINGS = 1 << 2, +- GS_SHELL_EVENT_BUTTON_MORE_INFO = 1 << 3, +- GS_SHELL_EVENT_BUTTON_RESTART_REQUIRED = 1 << 4, +- GS_SHELL_EVENT_BUTTON_LAST +-} GsShellEventButtons; +- + static gboolean + gs_shell_has_disk_examination_app (void) + { +@@ -1030,7 +1020,7 @@ gs_shell_has_disk_examination_app (void) + return (baobab != NULL); + } + +-static void ++void + gs_shell_show_event_app_notify (GsShell *shell, + const gchar *title, + GsShellEventButtons buttons) +diff --git a/src/gs-shell.h b/src/gs-shell.h +index 24b56f5c..53c6a176 100644 +--- a/src/gs-shell.h ++++ b/src/gs-shell.h +@@ -25,6 +25,16 @@ struct _GsShellClass + void (* loaded) (GsShell *shell); + }; + ++typedef enum { ++ GS_SHELL_EVENT_BUTTON_NONE = 0, ++ GS_SHELL_EVENT_BUTTON_SOURCES = 1 << 0, ++ GS_SHELL_EVENT_BUTTON_NO_SPACE = 1 << 1, ++ GS_SHELL_EVENT_BUTTON_NETWORK_SETTINGS = 1 << 2, ++ GS_SHELL_EVENT_BUTTON_MORE_INFO = 1 << 3, ++ GS_SHELL_EVENT_BUTTON_RESTART_REQUIRED = 1 << 4, ++ GS_SHELL_EVENT_BUTTON_LAST ++} GsShellEventButtons; ++ + typedef enum { + GS_SHELL_MODE_UNKNOWN, + GS_SHELL_MODE_OVERVIEW, +@@ -83,6 +93,9 @@ void gs_shell_show_extras_search (GsShell *shell, + gchar **resources); + void gs_shell_show_uri (GsShell *shell, + const gchar *url); ++void gs_shell_show_event_app_notify (GsShell *shell, ++ const gchar *title, ++ GsShellEventButtons buttons); + void gs_shell_setup (GsShell *shell, + GsPluginLoader *plugin_loader, + GCancellable *cancellable); +-- +2.25.1 +
  5. Download patch debian/README.source

    --- 3.36.1-1/debian/README.source 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/README.source 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,9 @@ +The Ubuntu packaging is maintained at +https://code.launchpad.net/~ubuntu-desktop/gnome-software/ubuntu + +Patches are maintained at https://gitlab.gnome.org/ubuntu/gnome-software +in ubuntu-* branches. These branches are regularly rebased. + +To inspect these changes individually, please issue + + $ git clone -b ubuntu-3-26 https://gitlab.gnome.org/ubuntu/gnome-software.git
  6. Download patch debian/rules

    --- 3.36.1-1/debian/rules 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/rules 2020-04-16 22:03:17.000000000 +0000 @@ -9,12 +9,13 @@ export DEB_LDFLAGS_MAINT_STRIP := -Wl,-B GS_CONFIGURE_FLAGS = \ -Dgnome_desktop=true \ -Dodrs=true \ - -Dmalcontent=false \ -Dostree=false \ -Dpackagekit=true \ -Dpackagekit_autoremove=true \ -Drpm_ostree=false \ -Dubuntu_reviews=false \ + -Dmalcontent=false \ + -Dhardcoded_popular=false # these are conditionally re-enabled later GS_CONFIGURE_FLAGS += \ @@ -63,7 +64,8 @@ endif dh $@ --with gnome override_dh_auto_configure: - dh_auto_configure -- $(GS_CONFIGURE_FLAGS) + dh_auto_configure -- --libexecdir=/usr/lib/$(DEB_HOST_MULTIARCH)/gnome-software/ \ + $(GS_CONFIGURE_FLAGS) override_dh_auto_install: dh_auto_install
  7. Download patch debian/patches/0025-Fix-CSS-colors-to-work-correctly-with-Yaru-Adwaita.patch

    --- 3.36.1-1/debian/patches/0025-Fix-CSS-colors-to-work-correctly-with-Yaru-Adwaita.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0025-Fix-CSS-colors-to-work-correctly-with-Yaru-Adwaita.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,43 @@ +From 17bb008df0fa29e1620880562897a1354c6b72db Mon Sep 17 00:00:00 2001 +From: Frederik Feichtmeier <frederik.feichtmeier@gmail.com> +Date: Tue, 11 Feb 2020 11:39:31 +1300 +Subject: [PATCH 25/29] Fix CSS colors to work correctly with Yaru/Adwaita. + +--- + src/gtk-style.css | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/gtk-style.css b/src/gtk-style.css +index 605b6613..59a283b7 100644 +--- a/src/gtk-style.css ++++ b/src/gtk-style.css +@@ -10,7 +10,7 @@ + } + + .installed-icon { +- color: @theme_selected_bg_color; ++ color: @success_color; + } + + .popular-installed-overlay-box { +@@ -401,7 +401,7 @@ flowboxchild { + /* for the review dialog */ + .star-enabled, + .star-enabled:disabled { +- color: shade(@theme_fg_color, 0.8); ++ color: @theme_fg_color; + } + .star-disabled, + .star-disabled:disabled { +@@ -411,7 +411,7 @@ flowboxchild { + .counter-label { + text-shadow: none; + color: @theme_selected_fg_color; +- background-color: mix(@theme_selected_bg_color, @theme_selected_fg_color, 0.3); ++ background-color: @success_color; + font-size: smaller; + border-radius: 4px; + padding: 0px 4px; +-- +2.25.1 +
  8. Download patch debian/patches/0023-snap-Parse-description-markdown.patch

    --- 3.36.1-1/debian/patches/0023-snap-Parse-description-markdown.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0023-snap-Parse-description-markdown.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,154 @@ +From 9f3d12509b8789ac6ccbeb6b507b772f82f5698a Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Fri, 7 Jun 2019 09:19:01 +1200 +Subject: [PATCH 23/29] snap: Parse description markdown + +--- + plugins/snap/gs-plugin-snap.c | 121 ++++++++++++++++++++++++++++++++-- + 1 file changed, 114 insertions(+), 7 deletions(-) + +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 0d9c1be3..b04ed449 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -871,13 +871,118 @@ load_icon (GsPlugin *plugin, SnapdClient *client, GsApp *app, const gchar *id, S + return FALSE; + } + ++static gchar *serialize_node (SnapdMarkdownNode *node, const gchar *indentation); ++ ++static gboolean ++is_block_node (SnapdMarkdownNode *node) ++{ ++ switch (snapd_markdown_node_get_node_type (node)) ++ { ++ case SNAPD_MARKDOWN_NODE_TYPE_PARAGRAPH: ++ case SNAPD_MARKDOWN_NODE_TYPE_UNORDERED_LIST: ++ case SNAPD_MARKDOWN_NODE_TYPE_LIST_ITEM: ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ ++static gchar * ++serialize_nodes (GPtrArray *nodes, const gchar *indentation) ++{ ++ g_autoptr(GString) text = g_string_new (""); ++ ++ for (guint i = 0; i < nodes->len; i++) { ++ SnapdMarkdownNode *node = g_ptr_array_index (nodes, i); ++ g_autofree gchar *node_text = NULL; ++ ++ if (i != 0) { ++ SnapdMarkdownNode *last_node = g_ptr_array_index (nodes, i - 1); ++ if (is_block_node (node) && is_block_node (last_node)) ++ g_string_append (text, "\n"); ++ } ++ ++ node_text = serialize_node (node, indentation); ++ g_string_append (text, node_text); ++ ++ } ++ ++ return g_steal_pointer (&text->str); ++} ++ ++static gchar * ++escape_text (const gchar *text) ++{ ++ g_autoptr(GString) escaped_text = g_string_new (""); ++ ++ for (const gchar *c = text; *c != '\0'; c++) { ++ if (*c == '&') ++ g_string_append (escaped_text, "&amp;"); ++ else if (*c == '<') ++ g_string_append (escaped_text, "&lt;"); ++ else if (*c == '>') ++ g_string_append (escaped_text, "&gt;"); ++ else if (*c == '"') ++ g_string_append (escaped_text, "&quot;"); ++ else ++ g_string_append_c (escaped_text, *c); ++ } ++ ++ return g_steal_pointer (&escaped_text->str); ++} ++ + static gchar * +-gs_plugin_snap_get_description_safe (SnapdSnap *snap) ++serialize_node (SnapdMarkdownNode *node, const gchar *indentation) + { +- GString *str = g_string_new (snapd_snap_get_description (snap)); +- as_utils_string_replace (str, "\r", ""); +- as_utils_string_replace (str, " ", " "); +- return g_string_free (str, FALSE); ++ g_autofree gchar *contents = NULL; ++ g_autofree gchar *new_indentation = NULL; ++ GPtrArray *children = snapd_markdown_node_get_children (node); ++ ++ switch (snapd_markdown_node_get_node_type (node)) { ++ case SNAPD_MARKDOWN_NODE_TYPE_TEXT: ++ return escape_text (snapd_markdown_node_get_text (node)); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_PARAGRAPH: ++ contents = serialize_nodes (children, indentation); ++ return g_strdup_printf ("%s\n", contents); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_UNORDERED_LIST: ++ contents = serialize_nodes (children, indentation); ++ return g_strdup_printf ("%s", contents); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_LIST_ITEM: ++ new_indentation = g_strdup_printf (" %s", indentation); ++ contents = serialize_nodes (children, new_indentation); ++ return g_strdup_printf ("%s • %s", indentation, contents); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_CODE_BLOCK: ++ case SNAPD_MARKDOWN_NODE_TYPE_CODE_SPAN: ++ contents = serialize_nodes (children, indentation); ++ return g_strdup_printf ("<tt>%s</tt>", contents); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_EMPHASIS: ++ case SNAPD_MARKDOWN_NODE_TYPE_STRONG_EMPHASIS: ++ contents = serialize_nodes (children, indentation); ++ return g_strdup_printf ("<b>%s</b>", contents); ++ ++ case SNAPD_MARKDOWN_NODE_TYPE_URL: ++ contents = serialize_nodes (children, indentation); ++ return g_strdup_printf ("<a href=\"%s\">%s</a>", contents, contents); ++ ++ default: ++ g_assert (FALSE); ++ return g_strdup (""); ++ } ++} ++ ++static gchar * ++gs_plugin_snap_get_markup_description (SnapdSnap *snap) ++{ ++ g_autoptr(SnapdMarkdownParser) parser = snapd_markdown_parser_new (SNAPD_MARKDOWN_VERSION_0); ++ g_autoptr(GPtrArray) nodes = NULL; ++ ++ nodes = snapd_markdown_parser_parse (parser, snapd_snap_get_description (snap)); ++ return serialize_nodes (nodes, ""); + } + + static void +@@ -996,9 +1101,11 @@ gs_plugin_refine_app (GsPlugin *plugin, + name = snapd_snap_get_name (snap); + gs_app_set_name (app, GS_APP_QUALITY_NORMAL, name); + gs_app_set_summary (app, GS_APP_QUALITY_NORMAL, snapd_snap_get_summary (snap)); +- description = gs_plugin_snap_get_description_safe (snap); +- if (description != NULL) ++ description = gs_plugin_snap_get_markup_description (snap); ++ if (description != NULL) { + gs_app_set_description (app, GS_APP_QUALITY_NORMAL, description); ++ gs_app_set_description_markup (app, TRUE); ++ } + gs_app_set_license (app, GS_APP_QUALITY_NORMAL, snapd_snap_get_license (snap)); + developer_name = snapd_snap_get_publisher_display_name (snap); + if (developer_name == NULL) +-- +2.25.1 +
  9. Download patch debian/patches/0010-Sort-category-snaps-before-other-packages.patch

    --- 3.36.1-1/debian/patches/0010-Sort-category-snaps-before-other-packages.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0010-Sort-category-snaps-before-other-packages.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,41 @@ +From 28a4f7eb9d1d7580ccb657c280fe5fa11351af13 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Mon, 22 Jan 2018 16:50:29 +1300 +Subject: [PATCH 10/29] Sort category snaps before other packages + +--- + src/gs-category-page.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/gs-category-page.c b/src/gs-category-page.c +index 10467436..5dd8eccd 100644 +--- a/src/gs-category-page.c ++++ b/src/gs-category-page.c +@@ -170,6 +170,8 @@ gs_category_page_get_apps_cb (GObject *source_object, + static gboolean + _max_results_sort_cb (GsApp *app1, GsApp *app2, gpointer user_data) + { ++ if (gs_app_get_bundle_kind (app1) == AS_BUNDLE_KIND_SNAP || gs_app_get_bundle_kind (app2) == AS_BUNDLE_KIND_SNAP) ++ return gs_app_get_bundle_kind (app1) == AS_BUNDLE_KIND_SNAP ? -1 : 1; + return gs_app_get_rating (app1) < gs_app_get_rating (app2); + } + +@@ -188,8 +190,13 @@ gs_category_page_sort_flow_box_sort_func (GtkFlowBoxChild *child1, + sort_type = GS_CATEGORY_PAGE (data)->sort_type; + + if (sort_type == SUBCATEGORY_SORT_TYPE_RATING) { +- gint rating_app1 = gs_app_get_rating (app1); +- gint rating_app2 = gs_app_get_rating (app2); ++ gint rating_app1, rating_app2; ++ ++ if (gs_app_get_bundle_kind (app1) == AS_BUNDLE_KIND_SNAP || gs_app_get_bundle_kind (app2) == AS_BUNDLE_KIND_SNAP) ++ return gs_app_get_bundle_kind (app1) == AS_BUNDLE_KIND_SNAP ? -1 : 1; ++ ++ rating_app1 = gs_app_get_rating (app1); ++ rating_app2 = gs_app_get_rating (app2); + if (rating_app1 > rating_app2) + return -1; + if (rating_app1 < rating_app2) +-- +2.25.1 +
  10. Download patch debian/patches/0016-Delay-startup-of-GNOME-Software-to-allow-the-Shell-t.patch

    --- 3.36.1-1/debian/patches/0016-Delay-startup-of-GNOME-Software-to-allow-the-Shell-t.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0016-Delay-startup-of-GNOME-Software-to-allow-the-Shell-t.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,25 @@ +From fa091220f28074a0fc6db81e4cea932efc702053 Mon Sep 17 00:00:00 2001 +From: Jean-Baptiste Lallement <jean-baptiste.lallement@canonical.com> +Date: Mon, 25 Jun 2018 16:14:38 +1200 +Subject: [PATCH 16/29] Delay startup of GNOME Software to allow the Shell to + load first. + +--- + src/gnome-software-service.desktop.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/gnome-software-service.desktop.in b/src/gnome-software-service.desktop.in +index dc4d4d90..fb47759b 100644 +--- a/src/gnome-software-service.desktop.in ++++ b/src/gnome-software-service.desktop.in +@@ -1,6 +1,7 @@ + [Desktop Entry] + Type=Application + Name=GNOME Software ++X-GNOME-Autostart-Delay=60 + Exec=@bindir@/gnome-software --gapplication-service + OnlyShowIn=GNOME;Unity; + NoDisplay=true +-- +2.25.1 +
  11. Download patch debian/patches/0003-Sort-snaps-before-other-apps.patch

    --- 3.36.1-1/debian/patches/0003-Sort-snaps-before-other-apps.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0003-Sort-snaps-before-other-apps.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,42 @@ +From 0e0acedc240783190928f7ac8449b0afd6ccb03d Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Wed, 30 Mar 2016 15:55:47 +1300 +Subject: [PATCH 03/29] Sort snaps before other apps + +--- + plugins/snap/gs-plugin-snap.c | 1 + + src/gs-search-page.c | 6 ++++++ + 2 files changed, 7 insertions(+) + +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 321afe76..2e331da4 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -553,6 +553,7 @@ gs_plugin_add_search (GsPlugin *plugin, + + for (i = 0; i < snaps->len; i++) { + g_autoptr(GsApp) app = snap_to_app (plugin, g_ptr_array_index (snaps, i)); ++ gs_app_set_match_value (app, snaps->len - i); + gs_app_list_add (list, app); + } + +diff --git a/src/gs-search-page.c b/src/gs-search-page.c +index c543faef..7e25c002 100644 +--- a/src/gs-search-page.c ++++ b/src/gs-search-page.c +@@ -187,6 +187,12 @@ gs_search_page_get_app_sort_key (GsApp *app) + { + GString *key = g_string_sized_new (64); + ++ /* sort snaps before other apps */ ++ if (g_strcmp0 (gs_app_get_management_plugin (app), "snap") == 0) ++ g_string_append (key, "9:"); ++ else ++ g_string_append (key, "1:"); ++ + /* sort apps before runtimes and extensions */ + switch (gs_app_get_kind (app)) { + case AS_APP_KIND_DESKTOP: +-- +2.25.1 +
  12. Download patch debian/control

    --- 3.36.1-1/debian/control 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/control 2020-06-30 04:59:28.000000000 +0000 @@ -5,8 +5,9 @@ Source: gnome-software Section: gnome Priority: optional -Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> -Uploaders: Jeremy Bicha <jbicha@debian.org>, Laurent Bigonville <bigon@debian.org>, Matthias Klumpp <mak@debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> +Uploaders: Jeremy Bicha <jbicha@debian.org>, Laurent Bigonville <bigon@debian.org> Build-Depends: appstream, appstream-util, debhelper-compat (= 12), @@ -24,27 +25,23 @@ Build-Depends: appstream, libgtk-3-dev (>= 3.22.4), libgudev-1.0-dev [linux-any], libjson-glib-dev (>= 1.2.0), - libostree-dev [linux-any], + libostree-dev, libpackagekit-glib2-dev (>= 1.1.11), libpolkit-gobject-1-dev, libsnapd-glib-dev (>= 1.54) [amd64 arm64 armel armhf i386 ppc64el s390x], libsoup2.4-dev (>= 2.52.0), - libxml2-utils, libxmlb-dev (>= 0.1.7), - meson (>= 0.47), + libxml2-utils, + meson (>= 0.46), pkg-config, valgrind [amd64 arm64 armhf i386 mips mips64 mips64el mipsel powerpc ppc64 ppc64el s390x], xsltproc -Build-Depends-Indep: appstream-glib-doc <!nodoc>, - libgdk-pixbuf2.0-doc <!nodoc>, - libglib2.0-doc <!nodoc>, - libgtk-3-doc <!nodoc>, - libjson-glib-doc <!nodoc>, - libsoup2.4-doc <!nodoc> Rules-Requires-Root: no -Standards-Version: 4.5.0 -Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software -Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git +Standards-Version: 4.4.1 +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git +Vcs-Browser: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-software +Vcs-Git: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-software -b ubuntu/focal Homepage: https://wiki.gnome.org/Apps/Software Package: gnome-software @@ -59,7 +56,8 @@ Depends: appstream, ${misc:Depends}, ${shlibs:Depends} Conflicts: sessioninstaller -Recommends: fwupd [linux-any], ${plugin:Recommends} +Recommends: ${plugin:Recommends}, + fwupd [linux-any] Suggests: apt-config-icons-hidpi, gnome-software-plugin-flatpak [amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x hppa powerpc powerpcspe ppc64], ${plugin:Suggests} @@ -88,7 +86,7 @@ Description: Software Center for GNOME ( This package contains the architecture-independent files. Package: gnome-software-plugin-flatpak -Architecture: amd64 arm64 armel armhf hppa i386 mips mips64el powerpc powerpcspe ppc64 ppc64el s390x +Architecture: amd64 arm64 armel armhf i386 mips mips64el ppc64el s390x hppa powerpc powerpcspe ppc64 Depends: flatpak, gnome-software (= ${binary:Version}), ${misc:Depends}, @@ -145,9 +143,16 @@ Section: doc Architecture: all Multi-Arch: foreign Depends: ${misc:Depends} -Build-Profiles: <!nodoc> Description: Software Center for GNOME - documentation Software lets you install and update applications and system extensions. . This package contains documentation for use when developing plugins for Software. + +Package: ubuntu-software +Architecture: all +Depends: gnome-software (>= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Description: transitional dummy package + This is a transitional dummy package, it can be safely removed.
  13. Download patch debian/patches/0022-Support-markup-in-description-text.patch

    --- 3.36.1-1/debian/patches/0022-Support-markup-in-description-text.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0022-Support-markup-in-description-text.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,160 @@ +From bcf33b41f36cd9a93e549f004e9958982106a2c1 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Thu, 31 Jan 2019 14:14:29 +1300 +Subject: [PATCH 22/29] Support markup in description text + +--- + lib/gs-app.c | 40 ++++++++++++++++++++++++++++++++++++++++ + lib/gs-app.h | 3 +++ + src/gs-app-row.c | 10 +++++++--- + src/gs-details-page.c | 5 +++-- + 4 files changed, 53 insertions(+), 5 deletions(-) + +diff --git a/lib/gs-app.c b/lib/gs-app.c +index 3ebd5c02..fc4cdc15 100644 +--- a/lib/gs-app.c ++++ b/lib/gs-app.c +@@ -67,6 +67,7 @@ typedef struct + gchar *summary_missing; + gchar *description; + GsAppQuality description_quality; ++ gboolean description_markup; + GPtrArray *screenshots; + GPtrArray *categories; + GPtrArray *key_colors; +@@ -2160,6 +2161,45 @@ gs_app_set_description (GsApp *app, GsAppQuality quality, const gchar *descripti + _g_set_str (&priv->description, description); + } + ++/** ++ * gs_app_get_description_markup: ++ * @app: a #GsApp ++ * ++ * Gets if the description uses markup. ++ * ++ * Returns: %TRUE if the description is formatted using markup. ++ * ++ * Since: 3.32 ++ **/ ++gboolean ++gs_app_get_description_markup (GsApp *app) ++{ ++ GsAppPrivate *priv = gs_app_get_instance_private (app); ++ g_return_val_if_fail (GS_IS_APP (app), FALSE); ++ return priv->description_markup; ++} ++ ++/** ++ * gs_app_set_description_markup: ++ * @app: a #GsApp ++ * @use_markup: if the description uses markup ++ * ++ * Sets the description is formatted using markup. ++ * ++ * Since: 3.32 ++ **/ ++void ++gs_app_set_description_markup (GsApp *app, gboolean use_markup) ++{ ++ GsAppPrivate *priv = gs_app_get_instance_private (app); ++ g_autoptr(GMutexLocker) locker = NULL; ++ g_return_if_fail (GS_IS_APP (app)); ++ ++ locker = g_mutex_locker_new (&priv->mutex); ++ ++ priv->description_markup = use_markup; ++} ++ + /** + * gs_app_get_url: + * @app: a #GsApp +diff --git a/lib/gs-app.h b/lib/gs-app.h +index 1d2c6177..3ed0a432 100644 +--- a/lib/gs-app.h ++++ b/lib/gs-app.h +@@ -240,6 +240,9 @@ const gchar *gs_app_get_description (GsApp *app); + void gs_app_set_description (GsApp *app, + GsAppQuality quality, + const gchar *description); ++gboolean gs_app_get_description_markup (GsApp *app); ++void gs_app_set_description_markup (GsApp *app, ++ gboolean use_markup); + const gchar *gs_app_get_url (GsApp *app, + AsUrlKind kind); + void gs_app_set_url (GsApp *app, +diff --git a/src/gs-app-row.c b/src/gs-app-row.c +index 592e6837..2b24e6c4 100644 +--- a/src/gs-app-row.c ++++ b/src/gs-app-row.c +@@ -64,7 +64,7 @@ static guint signals [SIGNAL_LAST] = { 0 }; + * Return value: PangoMarkup + **/ + static GString * +-gs_app_row_get_description (GsAppRow *app_row) ++gs_app_row_get_description (GsAppRow *app_row, gboolean *use_markup) + { + GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row); + const gchar *tmp = NULL; +@@ -87,8 +87,10 @@ gs_app_row_get_description (GsAppRow *app_row) + /* try all these things in order */ + if (tmp == NULL || (tmp != NULL && tmp[0] == '\0')) + tmp = gs_app_get_summary (priv->app); +- if (tmp == NULL || (tmp != NULL && tmp[0] == '\0')) ++ if (tmp == NULL || (tmp != NULL && tmp[0] == '\0')) { + tmp = gs_app_get_description (priv->app); ++ *use_markup = gs_app_get_description_markup (priv->app); ++ } + if (tmp == NULL || (tmp != NULL && tmp[0] == '\0')) + tmp = gs_app_get_name (priv->app); + if (tmp == NULL) +@@ -234,6 +236,7 @@ gs_app_row_refresh (GsAppRow *app_row) + GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row); + GtkStyleContext *context; + GString *str = NULL; ++ gboolean use_markup = FALSE; + const gchar *tmp; + gboolean missing_search_result; + guint64 size = 0; +@@ -258,7 +261,8 @@ gs_app_row_refresh (GsAppRow *app_row) + } + + /* join the description lines */ +- str = gs_app_row_get_description (app_row); ++ str = gs_app_row_get_description (app_row, &use_markup); ++ gtk_label_set_use_markup (GTK_LABEL (priv->description_label), use_markup); + if (str != NULL) { + as_utils_string_replace (str, "\n", " "); + gtk_label_set_label (GTK_LABEL (priv->description_label), str->str); +diff --git a/src/gs-details-page.c b/src/gs-details-page.c +index 95a92b81..d7dd0cb8 100644 +--- a/src/gs-details-page.c ++++ b/src/gs-details-page.c +@@ -671,7 +671,7 @@ gs_details_page_donate_cb (GtkWidget *widget, GsDetailsPage *self) + } + + static void +-gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp) ++gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp, gboolean use_markup) + { + GtkStyleContext *style_context; + GtkWidget *para; +@@ -689,6 +689,7 @@ gs_details_page_set_description (GsDetailsPage *self, const gchar *tmp) + split = g_strsplit (tmp, "\n\n", -1); + for (i = 0; split[i] != NULL; i++) { + para = gtk_label_new (split[i]); ++ gtk_label_set_use_markup (GTK_LABEL (para), use_markup); + gtk_label_set_line_wrap (GTK_LABEL (para), TRUE); + gtk_label_set_max_width_chars (GTK_LABEL (para), 40); + gtk_label_set_selectable (GTK_LABEL (para), TRUE); +@@ -1117,7 +1118,7 @@ gs_details_page_refresh_all (GsDetailsPage *self) + + /* set the description */ + tmp = gs_app_get_description (self->app); +- gs_details_page_set_description (self, tmp); ++ gs_details_page_set_description (self, tmp, gs_app_get_description_markup (self->app)); + + /* set the icon */ + pixbuf = gs_app_get_pixbuf (self->app); +-- +2.25.1 +
  14. Download patch debian/patches/01_details-Use-custom-icon-for-verified-developers.patch

    --- 3.36.1-1/debian/patches/01_details-Use-custom-icon-for-verified-developers.patch 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/01_details-Use-custom-icon-for-verified-developers.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -From 36d4b7f4f8779febd2408d590b85be5bb5c1519e Mon Sep 17 00:00:00 2001 -From: Robert Ancell <robert.ancell@canonical.com> -Date: Tue, 28 Aug 2018 12:43:15 +1200 -Subject: [PATCH 21/24] details: Use custom icon for verified developers - ---- - src/developer-verified.svg | 12 ++++++++++++ - src/gnome-software.gresource.xml | 1 + - src/gs-details-page.ui | 2 +- - 3 files changed, 14 insertions(+), 1 deletion(-) - create mode 100644 src/developer-verified.svg - ---- /dev/null -+++ b/src/developer-verified.svg -@@ -0,0 +1,12 @@ -+<?xml version="1.0" encoding="UTF-8" standalone="no"?> -+<svg xmlns="http://www.w3.org/2000/svg" height="12px" width="12px" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 12 12"><!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --> -+ <title>path6490</title> -+ <desc>Created with Sketch.</desc> -+ <g id="misc" fill-rule="evenodd" fill="none"> -+ <g id="Artboard" fill-rule="nonzero" fill="#82BEA0" transform="translate(-419 -444)"> -+ <g id="VALIDATED--SNAPCRAFTER-ICON" transform="translate(419 444)"> -+ <path id="path6490" d="m5.0239 0.38296l-0.4325 0.40107c-0.3507 0.32527-0.8065 0.51407-1.2846 0.53217l-0.5886 0.0222c-0.75 0.0283-1.3515 0.6298-1.3798 1.3798l-0.0222 0.5886c-0.0181 0.4781-0.2069 0.9339-0.53217 1.2846l-0.40107 0.4325c-0.51061 0.5506-0.51061 1.4016 0 1.9522l0.40107 0.4325c0.32527 0.3507 0.51407 0.8065 0.53217 1.2846l0.0222 0.5886c0.0283 0.7502 0.6298 1.3512 1.3798 1.3802l0.5886 0.022c0.4781 0.018 0.9339 0.207 1.2846 0.532l0.4325 0.401c0.5506 0.511 1.4016 0.511 1.9522 0l0.4325-0.401c0.3507-0.325 0.8065-0.514 1.2846-0.532l0.5886-0.022c0.7502-0.029 1.3512-0.63 1.3802-1.3802l0.022-0.5886c0.018-0.4781 0.207-0.9339 0.532-1.2846l0.401-0.4325c0.511-0.5506 0.511-1.4016 0-1.9522l-0.401-0.4325c-0.325-0.3507-0.514-0.8065-0.532-1.2846l-0.022-0.5886c-0.029-0.75-0.63-1.3515-1.3802-1.3798l-0.5886-0.0222c-0.4781-0.0181-0.9339-0.2069-1.2846-0.53217l-0.4325-0.40107c-0.5506-0.51061-1.4016-0.51061-1.9522 0zm3.3697 3.1711l0.8675 0.8565-4.2062 4.2411-2.316-2.3398 0.8611-0.8549 1.4549 1.4659 3.3387-3.3688z"/> -+ </g> -+ </g> -+ </g> -+</svg> -\ No newline at end of file ---- a/src/gnome-software.gresource.xml -+++ b/src/gnome-software.gresource.xml -@@ -37,5 +37,6 @@ - <file preprocess="xml-stripblanks">org.freedesktop.PackageKit.xml</file> - <file>gtk-style.css</file> - <file>gtk-style-hc.css</file> -+ <file>developer-verified.svg</file> - </gresource> - </gresources> ---- a/src/gs-details-page.ui -+++ b/src/gs-details-page.ui -@@ -948,7 +948,7 @@ - <object class="GtkImage" id="image_details_developer_verified"> - <property name="visible">True</property> - <property name="pixel_size">16</property> -- <property name="icon_name">emblem-ok-symbolic</property> -+ <property name="resource">/org/gnome/Software/developer-verified.svg</property> - </object> - </child> - </object>
  15. Download patch debian/control.in

    --- 3.36.1-1/debian/control.in 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/control.in 2020-04-16 22:03:17.000000000 +0000 @@ -1,7 +1,8 @@ Source: gnome-software Section: gnome Priority: optional -Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> Uploaders: @GNOME_TEAM@ Build-Depends: appstream, appstream-util, @@ -20,27 +21,23 @@ Build-Depends: appstream, libgtk-3-dev (>= 3.22.4), libgudev-1.0-dev [linux-any], libjson-glib-dev (>= 1.2.0), - libostree-dev [linux-any], + libostree-dev, libpackagekit-glib2-dev (>= 1.1.11), libpolkit-gobject-1-dev, libsnapd-glib-dev (>= 1.54) [amd64 arm64 armel armhf i386 ppc64el s390x], libsoup2.4-dev (>= 2.52.0), - libxml2-utils, libxmlb-dev (>= 0.1.7), - meson (>= 0.47), + libxml2-utils, + meson (>= 0.46), pkg-config, valgrind [amd64 arm64 armhf i386 mips mips64 mips64el mipsel powerpc ppc64 ppc64el s390x], xsltproc -Build-Depends-Indep: appstream-glib-doc <!nodoc>, - libgdk-pixbuf2.0-doc <!nodoc>, - libglib2.0-doc <!nodoc>, - libgtk-3-doc <!nodoc>, - libjson-glib-doc <!nodoc>, - libsoup2.4-doc <!nodoc> Rules-Requires-Root: no -Standards-Version: 4.5.0 -Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software -Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git +Standards-Version: 4.4.1 +XS-Debian-Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-software +XS-Debian-Vcs-Git: https://salsa.debian.org/gnome-team/gnome-software.git +Vcs-Browser: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-software +Vcs-Git: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-software -b ubuntu/focal Homepage: https://wiki.gnome.org/Apps/Software Package: gnome-software @@ -55,7 +52,8 @@ Depends: appstream, ${misc:Depends}, ${shlibs:Depends} Conflicts: sessioninstaller -Recommends: fwupd [linux-any], ${plugin:Recommends} +Recommends: ${plugin:Recommends}, + fwupd [linux-any] Suggests: apt-config-icons-hidpi, gnome-software-plugin-flatpak [amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x hppa powerpc powerpcspe ppc64], ${plugin:Suggests} @@ -84,7 +82,7 @@ Description: Software Center for GNOME ( This package contains the architecture-independent files. Package: gnome-software-plugin-flatpak -Architecture: amd64 arm64 armel armhf hppa i386 mips mips64el powerpc powerpcspe ppc64 ppc64el s390x +Architecture: amd64 arm64 armel armhf i386 mips mips64el ppc64el s390x hppa powerpc powerpcspe ppc64 Depends: flatpak, gnome-software (= ${binary:Version}), ${misc:Depends}, @@ -141,9 +139,16 @@ Section: doc Architecture: all Multi-Arch: foreign Depends: ${misc:Depends} -Build-Profiles: <!nodoc> Description: Software Center for GNOME - documentation Software lets you install and update applications and system extensions. . This package contains documentation for use when developing plugins for Software. + +Package: ubuntu-software +Architecture: all +Depends: gnome-software (>= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends} +Description: transitional dummy package + This is a transitional dummy package, it can be safely removed.
  16. Download patch debian/patches/0013-Add-a-basic-permissions-system.patch
  17. Download patch debian/patches/0018-details-Use-custom-icon-for-verified-developers.patch

    --- 3.36.1-1/debian/patches/0018-details-Use-custom-icon-for-verified-developers.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0018-details-Use-custom-icon-for-verified-developers.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,58 @@ +From 7d3122fb6260aed78abf00d3d92f69bc3ed30a19 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Tue, 28 Aug 2018 12:43:15 +1200 +Subject: [PATCH 18/29] details: Use custom icon for verified developers + +--- + src/developer-verified.svg | 12 ++++++++++++ + src/gnome-software.gresource.xml | 1 + + src/gs-details-page.ui | 2 +- + 3 files changed, 14 insertions(+), 1 deletion(-) + create mode 100644 src/developer-verified.svg + +diff --git a/src/developer-verified.svg b/src/developer-verified.svg +new file mode 100644 +index 00000000..57c0f11b +--- /dev/null ++++ b/src/developer-verified.svg +@@ -0,0 +1,12 @@ ++<?xml version="1.0" encoding="UTF-8" standalone="no"?> ++<svg xmlns="http://www.w3.org/2000/svg" height="12px" width="12px" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 12 12"><!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --> ++ <title>path6490</title> ++ <desc>Created with Sketch.</desc> ++ <g id="misc" fill-rule="evenodd" fill="none"> ++ <g id="Artboard" fill-rule="nonzero" fill="#82BEA0" transform="translate(-419 -444)"> ++ <g id="VALIDATED--SNAPCRAFTER-ICON" transform="translate(419 444)"> ++ <path id="path6490" d="m5.0239 0.38296l-0.4325 0.40107c-0.3507 0.32527-0.8065 0.51407-1.2846 0.53217l-0.5886 0.0222c-0.75 0.0283-1.3515 0.6298-1.3798 1.3798l-0.0222 0.5886c-0.0181 0.4781-0.2069 0.9339-0.53217 1.2846l-0.40107 0.4325c-0.51061 0.5506-0.51061 1.4016 0 1.9522l0.40107 0.4325c0.32527 0.3507 0.51407 0.8065 0.53217 1.2846l0.0222 0.5886c0.0283 0.7502 0.6298 1.3512 1.3798 1.3802l0.5886 0.022c0.4781 0.018 0.9339 0.207 1.2846 0.532l0.4325 0.401c0.5506 0.511 1.4016 0.511 1.9522 0l0.4325-0.401c0.3507-0.325 0.8065-0.514 1.2846-0.532l0.5886-0.022c0.7502-0.029 1.3512-0.63 1.3802-1.3802l0.022-0.5886c0.018-0.4781 0.207-0.9339 0.532-1.2846l0.401-0.4325c0.511-0.5506 0.511-1.4016 0-1.9522l-0.401-0.4325c-0.325-0.3507-0.514-0.8065-0.532-1.2846l-0.022-0.5886c-0.029-0.75-0.63-1.3515-1.3802-1.3798l-0.5886-0.0222c-0.4781-0.0181-0.9339-0.2069-1.2846-0.53217l-0.4325-0.40107c-0.5506-0.51061-1.4016-0.51061-1.9522 0zm3.3697 3.1711l0.8675 0.8565-4.2062 4.2411-2.316-2.3398 0.8611-0.8549 1.4549 1.4659 3.3387-3.3688z"/> ++ </g> ++ </g> ++ </g> ++</svg> +\ No newline at end of file +diff --git a/src/gnome-software.gresource.xml b/src/gnome-software.gresource.xml +index 11ae3372..28a7ae39 100644 +--- a/src/gnome-software.gresource.xml ++++ b/src/gnome-software.gresource.xml +@@ -38,5 +38,6 @@ + <file preprocess="xml-stripblanks">org.freedesktop.PackageKit.xml</file> + <file>gtk-style.css</file> + <file>gtk-style-hc.css</file> ++ <file>developer-verified.svg</file> + </gresource> + </gresources> +diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui +index aaeb0c7e..5f0da843 100644 +--- a/src/gs-details-page.ui ++++ b/src/gs-details-page.ui +@@ -1004,7 +1004,7 @@ + <object class="GtkImage" id="image_details_developer_verified"> + <property name="visible">True</property> + <property name="pixel_size">16</property> +- <property name="icon_name">emblem-ok-symbolic</property> ++ <property name="resource">/org/gnome/Software/developer-verified.svg</property> + </object> + </child> + </object> +-- +2.25.1 +
  18. Download patch debian/patches/0021-odrs-Only-show-reviews-from-the-same-distribution.patch

    --- 3.36.1-1/debian/patches/0021-odrs-Only-show-reviews-from-the-same-distribution.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0021-odrs-Only-show-reviews-from-the-same-distribution.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,39 @@ +From 4819f72a1c1205bee38817a545896566ffdcd643 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Wed, 17 Apr 2019 10:26:04 +1200 +Subject: [PATCH 21/29] odrs: Only show reviews from the same distribution + +--- + plugins/odrs/gs-plugin-odrs.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/plugins/odrs/gs-plugin-odrs.c b/plugins/odrs/gs-plugin-odrs.c +index b033e65b..32617cff 100644 +--- a/plugins/odrs/gs-plugin-odrs.c ++++ b/plugins/odrs/gs-plugin-odrs.c +@@ -299,6 +299,7 @@ gs_plugin_odrs_parse_reviews (GsPlugin *plugin, + gssize data_len, + GError **error) + { ++ GsPluginData *priv = gs_plugin_get_data (plugin); + JsonArray *json_reviews; + JsonNode *json_root; + guint i; +@@ -365,6 +366,14 @@ gs_plugin_odrs_parse_reviews (GsPlugin *plugin, + return NULL; + } + ++ if (!json_object_has_member (json_item, "distro")) { ++ g_debug ("Ignoring review without distro set"); ++ continue; ++ } else if (g_strcmp0 (json_object_get_string_member (json_item, "distro"), priv->distro) != 0) { ++ g_debug ("Ignoring review from distro %s", json_object_get_string_member (json_item, "distro")); ++ continue; ++ } ++ + /* create review */ + review = gs_plugin_odrs_parse_review_object (plugin, + json_item); +-- +2.25.1 +
  19. Download patch debian/patches/0001-Construct-the-Software-Sources-menu-item-dynamically.patch

    --- 3.36.1-1/debian/patches/0001-Construct-the-Software-Sources-menu-item-dynamically.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0001-Construct-the-Software-Sources-menu-item-dynamically.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,76 @@ +From 73a05ee5d75f563665b1b051fb32b10899e640ad Mon Sep 17 00:00:00 2001 +From: Iain Lane <iain@orangesquash.org.uk> +Date: Mon, 23 Jan 2017 16:22:09 +0000 +Subject: [PATCH 01/29] Construct the "Software Sources" menu item dynamically + +If we have software-properties-gtk, we'll launch that. In that case, +call the menu item "Software & Updates", since that more accurately +reflects what it does. +--- + src/gnome-software.ui | 12 +++--------- + src/gs-shell.c | 19 +++++++++++++++++++ + 2 files changed, 22 insertions(+), 9 deletions(-) + +diff --git a/src/gnome-software.ui b/src/gnome-software.ui +index 0811b611..af6dfbff 100644 +--- a/src/gnome-software.ui ++++ b/src/gnome-software.ui +@@ -31,15 +31,9 @@ + </child> + </object> + <menu id="primary_menu"> +- <item> +- <attribute name="label" translatable="yes">_Software Repositories</attribute> +- <attribute name="action">app.sources</attribute> +- <attribute name="hidden-when">action-disabled</attribute> +- </item> +- <item> +- <attribute name="label" translatable="yes">_Update Preferences</attribute> +- <attribute name="action">app.prefs</attribute> +- </item> ++ <!-- "Software Sources" entry inserted here in code, see src/gs-shell.c --> ++ <section id="preferences_menu"> ++ </section> + </menu> + <object class="GtkApplicationWindow" id="window_software"> + <property name="visible">False</property> +diff --git a/src/gs-shell.c b/src/gs-shell.c +index 009776ad..23caba12 100644 +--- a/src/gs-shell.c ++++ b/src/gs-shell.c +@@ -2113,6 +2113,8 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can + GtkWidget *widget; + GtkStyleContext *style_context; + GsPage *page; ++ g_autofree gchar *software_properties = NULL; ++ GMenu *preferences_menu; + + g_return_if_fail (GS_IS_SHELL (shell)); + +@@ -2141,6 +2143,23 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can + g_signal_connect (priv->main_window, "delete-event", + G_CALLBACK (main_window_closed_cb), shell); + ++ /* This follows the behaviour in src/gs-shell.c; when we have s-p-gtk, ++ * we will launch it. It provides a UI to manage update behaviour too. ++ */ ++ software_properties = g_find_program_in_path ("software-properties-gtk"); ++ preferences_menu = G_MENU (gtk_builder_get_object (priv->builder, "preferences_menu")); ++ if (software_properties == NULL) { ++ g_menu_append (preferences_menu, _("_Software Repositories"), "app.sources"); ++ g_menu_append (preferences_menu, _("_Update Preferences"), "app.prefs"); ++ } else { ++ g_menu_append (preferences_menu, _("Software & Updates"), "app.sources"); ++ ++ // If the flatpak plugin is running, show update preferences ++ if (gs_plugin_loader_get_enabled (priv->plugin_loader, "flatpak")) { ++ g_menu_append (preferences_menu, _("_Update Preferences"), "app.prefs"); ++ } ++ } ++ + /* fix up the header bar */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "header")); + if (gs_utils_is_current_desktop ("Unity")) { +-- +2.25.1 +
  20. Download patch debian/patches/0027-snap-Don-t-allow-system-snaps-to-be-uninstalled.patch

    --- 3.36.1-1/debian/patches/0027-snap-Don-t-allow-system-snaps-to-be-uninstalled.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0027-snap-Don-t-allow-system-snaps-to-be-uninstalled.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,58 @@ +From 2fcaed5f2886ef4dd08e2ab0c0db97236699dcc0 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Fri, 3 Apr 2020 15:45:02 +1300 +Subject: [PATCH 27/29] snap: Don't allow system snaps to be uninstalled + +--- + plugins/snap/gs-plugin-snap.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 5bd6e5e3..c918d68a 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -306,6 +306,11 @@ snap_to_app (GsPlugin *plugin, SnapdSnap *snap) + g_autofree gchar *unique_id = NULL; + g_autoptr(GsApp) app = NULL; + SnapdConfinement confinement; ++ const gchar * const compulsory_snaps[] = { "gnome-3-26-1604", ++ "gnome-3-28-1804", "gnome-3-30-1804", "gnome-3-32-1804", "gnome-3-34-1804", "gnome-3-36-1804", ++ "gtk-common-themes", "gtk2-common-themes", ++ "kde-frameworks-5-core18", "kde-frameworks-5-qt-5-14-core18", ++ NULL }; + + /* Get the AppStream ID from the snap, or generate a fallback one */ + common_ids = snapd_snap_get_common_ids (snap); +@@ -316,11 +321,14 @@ snap_to_app (GsPlugin *plugin, SnapdSnap *snap) + + switch (snapd_snap_get_snap_type (snap)) { + case SNAPD_SNAP_TYPE_APP: ++ case SNAPD_SNAP_TYPE_SNAPD: + unique_id = g_strdup_printf ("system/snap/*/desktop/%s/*", appstream_id); + break; + case SNAPD_SNAP_TYPE_KERNEL: + case SNAPD_SNAP_TYPE_GADGET: + case SNAPD_SNAP_TYPE_OS: ++ case SNAPD_SNAP_TYPE_CORE: ++ case SNAPD_SNAP_TYPE_BASE: + unique_id = g_strdup_printf ("system/snap/*/runtime/%s/*", appstream_id); + break; + default: +@@ -345,6 +353,14 @@ snap_to_app (GsPlugin *plugin, SnapdSnap *snap) + if (gs_plugin_check_distro_id (plugin, "ubuntu")) + gs_app_add_quirk (app, GS_APP_QUIRK_PROVENANCE); + ++ /* Don't let the user uninstall non-apps or a certain whitelist of snaps as ++ * this is likely to break your system. They can still be removed from ++ * the command line */ ++ if (snapd_snap_get_snap_type (snap) != SNAPD_SNAP_TYPE_APP) ++ gs_app_add_quirk (app, GS_APP_QUIRK_COMPULSORY); ++ else if (g_strv_contains (compulsory_snaps, snapd_snap_get_name (snap))) ++ gs_app_add_quirk (app, GS_APP_QUIRK_COMPULSORY); ++ + confinement = snapd_snap_get_confinement (snap); + if (confinement != SNAPD_CONFINEMENT_UNKNOWN) { + GEnumClass *enum_class = g_type_class_ref (SNAPD_TYPE_CONFINEMENT); +-- +2.25.1 +
  21. Download patch debian/patches/0006-packagekit-Disable-updates.patch

    --- 3.36.1-1/debian/patches/0006-packagekit-Disable-updates.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0006-packagekit-Disable-updates.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,57 @@ +From 4a166a394555a8da2a81b069ae24bbb96a3b6291 Mon Sep 17 00:00:00 2001 +From: Olivier Tilloy <olivier.tilloy@canonical.com> +Date: Tue, 7 Aug 2018 19:03:23 +0200 +Subject: [PATCH 06/29] packagekit: Disable updates + +In Ubuntu we use Update Manager for this currently. The long term plan is to use Software, but we're not there yet. +--- + plugins/packagekit/gs-plugin-packagekit-refresh.c | 3 +++ + plugins/packagekit/gs-plugin-packagekit.c | 3 +++ + plugins/packagekit/gs-plugin-systemd-updates.c | 3 +++ + 3 files changed, 9 insertions(+) + +diff --git a/plugins/packagekit/gs-plugin-packagekit-refresh.c b/plugins/packagekit/gs-plugin-packagekit-refresh.c +index 7805853c..6d555d08 100644 +--- a/plugins/packagekit/gs-plugin-packagekit-refresh.c ++++ b/plugins/packagekit/gs-plugin-packagekit-refresh.c +@@ -112,6 +112,9 @@ gs_plugin_download (GsPlugin *plugin, + { + g_autoptr(GsAppList) list_tmp = gs_app_list_new (); + ++ /* In Ubuntu we're using Update Manager for this, for now (LP: #1775226) */ ++ return TRUE; ++ + /* add any packages */ + for (guint i = 0; i < gs_app_list_length (list); i++) { + GsApp *app = gs_app_list_index (list, i); +diff --git a/plugins/packagekit/gs-plugin-packagekit.c b/plugins/packagekit/gs-plugin-packagekit.c +index d0bdabae..639cb154 100644 +--- a/plugins/packagekit/gs-plugin-packagekit.c ++++ b/plugins/packagekit/gs-plugin-packagekit.c +@@ -591,6 +591,9 @@ gs_plugin_add_updates (GsPlugin *plugin, + g_autoptr(PkResults) results = NULL; + g_autoptr(GPtrArray) array = NULL; + ++ /* In Ubuntu we're using Update Manager for this, for now. */ ++ return TRUE; ++ + /* do sync call */ + gs_plugin_status_update (plugin, NULL, GS_PLUGIN_STATUS_WAITING); + g_mutex_lock (&priv->task_mutex); +diff --git a/plugins/packagekit/gs-plugin-systemd-updates.c b/plugins/packagekit/gs-plugin-systemd-updates.c +index 21a7ce62..0639c1ec 100644 +--- a/plugins/packagekit/gs-plugin-systemd-updates.c ++++ b/plugins/packagekit/gs-plugin-systemd-updates.c +@@ -265,6 +265,9 @@ gs_plugin_update (GsPlugin *plugin, + GCancellable *cancellable, + GError **error) + { ++ /* In Ubuntu we're using Update Manager for this, for now. */ ++ return TRUE; ++ + /* any are us? */ + for (guint i = 0; i < gs_app_list_length (list); i++) { + GsApp *app = gs_app_list_index (list, i); +-- +2.25.1 +
  22. Download patch debian/patches/0008-Don-t-randomize-editors-picks.patch

    --- 3.36.1-1/debian/patches/0008-Don-t-randomize-editors-picks.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0008-Don-t-randomize-editors-picks.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,29 @@ +From b5fe9a4311463e80301d4435467ec8537874cb56 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Fri, 18 Aug 2017 16:27:26 +1200 +Subject: [PATCH 08/29] Don't randomize editors picks. + +The featured snaps are provided in a significant order. +https://bugs.launchpad.net/bugs/1705953 +--- + src/gs-overview-page.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/gs-overview-page.c b/src/gs-overview-page.c +index a97b2d51..af0e55ee 100644 +--- a/src/gs-overview-page.c ++++ b/src/gs-overview-page.c +@@ -169,7 +169,9 @@ gs_overview_page_get_popular_cb (GObject *source_object, + + /* Don't show apps from the category that's currently featured as the category of the day */ + gs_app_list_filter (list, filter_category, priv->category_of_day); +- gs_app_list_randomize (list); ++ /* Disabled on Ubuntu as we only show snaps and the order is significant ++ * https://bugs.launchpad.net/bugs/1705953 */ ++ //gs_app_list_randomize (list); + + gs_container_remove_all (GTK_CONTAINER (priv->box_popular)); + +-- +2.25.1 +
  23. Download patch debian/patches/0011-Don-t-use-colour-to-differentiate-between-free-and-p.patch

    --- 3.36.1-1/debian/patches/0011-Don-t-use-colour-to-differentiate-between-free-and-p.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0011-Don-t-use-colour-to-differentiate-between-free-and-p.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,38 @@ +From 8d3d37d2f588f0b19cd329255f6befb8433d17b5 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Fri, 2 Mar 2018 12:22:11 +1300 +Subject: [PATCH 11/29] Don't use colour to differentiate between free and + proprietary licenses + +--- + src/gtk-style.css | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/gtk-style.css b/src/gtk-style.css +index 2a836701..9804b124 100644 +--- a/src/gtk-style.css ++++ b/src/gtk-style.css +@@ -111,15 +111,15 @@ + } + + .details-license-nonfree { +- background-color: #ee2222; +- border-color: #c20f0f; ++ background-color: #4e9a06; ++ border-color: #3e7905; + } + .details-license-nonfree:hover { +- background-color: #f25959; +- border-color: #ed1b1b; ++ background-color: #5db807; ++ border-color: #4d9606; + } + .details-license-nonfree:backdrop { +- border-color: #ee2222; ++ border-color: #4e9a06; + } + + .details-license-unknown { +-- +2.25.1 +
  24. Download patch debian/patches/0017-details-page-Don-t-show-missing-screenshot-placehold.patch

    --- 3.36.1-1/debian/patches/0017-details-page-Don-t-show-missing-screenshot-placehold.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0017-details-page-Don-t-show-missing-screenshot-placehold.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,34 @@ +From 742585d66f69a0b60d832c97a8a0a53b643497e2 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Wed, 27 Jun 2018 16:33:28 +1200 +Subject: [PATCH 17/29] details page: Don't show missing screenshot placeholder + +--- + src/gs-details-page.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gs-details-page.c b/src/gs-details-page.c +index 0b7cc5f2..95a92b81 100644 +--- a/src/gs-details-page.c ++++ b/src/gs-details-page.c +@@ -551,7 +551,7 @@ gs_details_page_refresh_screenshots (GsDetailsPage *self) + gtk_widget_set_visible (self->box_details_screenshot, + screenshots->len > 0); + gtk_widget_set_visible (self->box_details_screenshot_fallback, +- screenshots->len == 0 && !is_offline); ++ FALSE /*screenshots->len == 0 && !is_offline*/); + return; + } + +@@ -571,7 +571,7 @@ gs_details_page_refresh_screenshots (GsDetailsPage *self) + break; + default: + gtk_widget_set_visible (self->box_details_screenshot_fallback, +- screenshots->len == 0 && !is_offline); ++ FALSE /*screenshots->len == 0 && !is_offline*/); + break; + } + +-- +2.25.1 +
  25. Download patch debian/patches/series

    --- 3.36.1-1/debian/patches/series 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/series 2020-06-30 04:59:28.000000000 +0000 @@ -1 +1,29 @@ -01_details-Use-custom-icon-for-verified-developers.patch +# From upstream + +# From ubuntu-master branch +0001-Construct-the-Software-Sources-menu-item-dynamically.patch +0002-Download-changelog-information-on-demand-this-stops-.patch +0003-Sort-snaps-before-other-apps.patch +0004-Hide-Kudo-details-since-we-don-t-have-good-data.patch +0005-details-Show-an-in-app-notification-when-passed-an-i.patch +0006-packagekit-Disable-updates.patch +0007-snap-Only-feature-snaps.patch +0008-Don-t-randomize-editors-picks.patch +0009-Display-a-warning-for-non-sandboxed-snaps.patch +0010-Sort-category-snaps-before-other-packages.patch +0011-Don-t-use-colour-to-differentiate-between-free-and-p.patch +0012-overview-page-Rotate-featured-apps.patch +0013-Add-a-basic-permissions-system.patch +0015-snap-Use-default-icon-if-none-provided.patch +0016-Delay-startup-of-GNOME-Software-to-allow-the-Shell-t.patch +0017-details-page-Don-t-show-missing-screenshot-placehold.patch +0018-details-Use-custom-icon-for-verified-developers.patch +0019-shell-search-provider-implement-XUbuntuCancel.patch +0020-details-Hide-permissions-information.patch +0021-odrs-Only-show-reviews-from-the-same-distribution.patch +0022-Support-markup-in-description-text.patch +0023-snap-Parse-description-markdown.patch +0024-snap-Set-first-featured-snap-as-featured-banner.patch +0025-Fix-CSS-colors-to-work-correctly-with-Yaru-Adwaita.patch +0026-Add-a-dialog-to-log-into-the-snap-store.patch +0027-snap-Don-t-allow-system-snaps-to-be-uninstalled.patch
  26. Download patch debian/patches/0012-overview-page-Rotate-featured-apps.patch
  27. Download patch debian/patches/0002-Download-changelog-information-on-demand-this-stops-.patch

    --- 3.36.1-1/debian/patches/0002-Download-changelog-information-on-demand-this-stops-.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0002-Download-changelog-information-on-demand-this-stops-.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,113 @@ +From 11e5c891fe7329c2e97a8e05f71ba14aa0a9894a Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Mon, 7 Nov 2016 16:55:18 +1300 +Subject: [PATCH 02/29] Download changelog information on demand - this stops + the UI blocking on startup + +--- + lib/gs-plugin-types.h | 2 ++ + src/gs-update-dialog.c | 40 +++++++++++++++++++++++++++++++++++++--- + 2 files changed, 39 insertions(+), 3 deletions(-) + +diff --git a/lib/gs-plugin-types.h b/lib/gs-plugin-types.h +index d6d30d52..e18da35e 100644 +--- a/lib/gs-plugin-types.h ++++ b/lib/gs-plugin-types.h +@@ -127,6 +127,7 @@ typedef enum { + * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_DEVELOPER_NAME: Require developer name + * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_KUDOS: Require kudos + * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_CONTENT_RATING: Require content rating ++ * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_CHANGELOG: Require the changelog + * + * The refine flags. + **/ +@@ -163,6 +164,7 @@ typedef enum { + #define GS_PLUGIN_REFINE_FLAGS_REQUIRE_DEVELOPER_NAME ((guint64) 1 << 29) + #define GS_PLUGIN_REFINE_FLAGS_REQUIRE_KUDOS ((guint64) 1 << 30) + #define GS_PLUGIN_REFINE_FLAGS_REQUIRE_CONTENT_RATING ((guint64) 1 << 31) ++#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_CHANGELOG ((guint64) 1 << 32) + typedef guint64 GsPluginRefineFlags; + + /** +diff --git a/src/gs-update-dialog.c b/src/gs-update-dialog.c +index 7d9f0a77..9b81e1a6 100644 +--- a/src/gs-update-dialog.c ++++ b/src/gs-update-dialog.c +@@ -36,6 +36,7 @@ struct _GsUpdateDialog + GQueue *back_entry_stack; + GCancellable *cancellable; + GsPluginLoader *plugin_loader; ++ GsApp *app; + GtkWidget *box_header; + GtkWidget *button_back; + GtkWidget *image_icon; +@@ -152,6 +153,25 @@ populate_permissions_section (GsUpdateDialog *dialog, GsAppPermissions permissio + } + } + ++static void ++refine_cb (GsPluginLoader *plugin_loader, GAsyncResult *res, GsUpdateDialog *dialog) ++{ ++ const gchar *update_details; ++ g_autoptr(GError) error = NULL; ++ ++ if (!gs_plugin_loader_job_action_finish (plugin_loader, res, &error)) ++ g_warning ("Failed to get changelog information: %s", error->message); ++ ++ update_details = gs_app_get_update_details (dialog->app); ++ if (update_details == NULL) { ++ /* TRANSLATORS: this is where the packager did not write ++ * a description for the update */ ++ update_details = _("No update description available."); ++ } ++ ++ gtk_label_set_label (GTK_LABEL (dialog->label_details), update_details); ++} ++ + static void + set_updates_description_ui (GsUpdateDialog *dialog, GsApp *app) + { +@@ -159,6 +179,8 @@ set_updates_description_ui (GsUpdateDialog *dialog, GsApp *app) + const GdkPixbuf *pixbuf; + const gchar *update_details; + ++ g_set_object (&dialog->app, app); ++ + /* set window title */ + kind = gs_app_get_kind (app); + if (kind == AS_APP_KIND_OS_UPDATE) { +@@ -182,9 +204,20 @@ set_updates_description_ui (GsUpdateDialog *dialog, GsApp *app) + gtk_widget_set_visible (dialog->box_header, kind == AS_APP_KIND_DESKTOP); + update_details = gs_app_get_update_details (app); + if (update_details == NULL) { +- /* TRANSLATORS: this is where the packager did not write +- * a description for the update */ +- update_details = _("No update description available."); ++ g_autoptr(GsPluginJob) plugin_job = NULL; ++ ++ /* TRANSLATORS: this is displayed while the changelog is being downloaded */ ++ update_details = _("Downloading change information…"); ++ ++ plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_REFINE, ++ "app", app, ++ "refine-flags", GS_PLUGIN_REFINE_FLAGS_REQUIRE_CHANGELOG, ++ NULL); ++ gs_plugin_loader_job_process_async (dialog->plugin_loader, ++ plugin_job, ++ dialog->cancellable, ++ (GAsyncReadyCallback) refine_cb, ++ dialog); + } + gtk_label_set_label (GTK_LABEL (dialog->label_details), update_details); + gtk_label_set_label (GTK_LABEL (dialog->label_name), gs_app_get_name (app)); +@@ -766,6 +799,7 @@ gs_update_dialog_dispose (GObject *object) + g_clear_object (&dialog->cancellable); + + g_clear_object (&dialog->plugin_loader); ++ g_clear_object (&dialog->app); + + G_OBJECT_CLASS (gs_update_dialog_parent_class)->dispose (object); + } +-- +2.25.1 +
  28. Download patch debian/patches/0007-snap-Only-feature-snaps.patch

    --- 3.36.1-1/debian/patches/0007-snap-Only-feature-snaps.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0007-snap-Only-feature-snaps.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,56 @@ +From cbe10ab71e6bab7332030b0e49a64574763e0e6d Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Wed, 9 Aug 2017 15:43:02 +1200 +Subject: [PATCH 07/29] snap: Only feature snaps + +Run after the other plugins that populate featured/popular apps and remove +them when we set ours. +--- + plugins/snap/gs-plugin-snap.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 2e331da4..cd8802f3 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -128,11 +128,13 @@ gs_plugin_initialize (GsPlugin *plugin) + g_free, (GDestroyNotify) cache_entry_free); + + gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "desktop-categories"); ++ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "appstream"); + gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_BETTER_THAN, "packagekit"); + gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "icons"); + + /* Override hardcoded popular apps */ +- gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_BEFORE, "hardcoded-popular"); ++ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "hardcoded-popular"); ++ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "hardcoded-featured"); + + /* set name of MetaInfo file */ + gs_plugin_set_appstream_id (plugin, "org.gnome.Software.Plugin.Snap"); +@@ -414,6 +416,12 @@ is_banner_icon_image (const gchar *filename) + return g_regex_match_simple ("^banner-icon(?:_[a-zA-Z0-9]{7})?\\.(?:png|jpg)$", filename, 0, 0); + } + ++static gboolean ++remove_cb (GsApp *app, gpointer user_data) ++{ ++ return FALSE; ++} ++ + gboolean + gs_plugin_add_popular (GsPlugin *plugin, + GsAppList *list, +@@ -427,6 +435,9 @@ gs_plugin_add_popular (GsPlugin *plugin, + if (snaps == NULL) + return FALSE; + ++ /* replace any other popular apps with our one */ ++ gs_app_list_filter (list, remove_cb, NULL); ++ + for (i = 0; i < snaps->len; i++) { + g_autoptr(GsApp) app = snap_to_app (plugin, g_ptr_array_index (snaps, i)); + gs_app_list_add (list, app); +-- +2.25.1 +
  29. Download patch debian/patches/0020-details-Hide-permissions-information.patch

    --- 3.36.1-1/debian/patches/0020-details-Hide-permissions-information.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0020-details-Hide-permissions-information.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,34 @@ +From 2815eee3702678e1a2f954e4e0cd0cab31e28fa4 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Thu, 21 Feb 2019 15:29:18 +0100 +Subject: [PATCH 20/29] details: Hide permissions information + +--- + src/gs-details-page.ui | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui +index 5f0da843..c3dd1e34 100644 +--- a/src/gs-details-page.ui ++++ b/src/gs-details-page.ui +@@ -767,7 +767,7 @@ + + <child> + <object class="GtkLabel" id="label_details_permissions_title"> +- <property name="visible">True</property> ++ <property name="visible">False</property> + <property name="label" translatable="yes">Permissions</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> +@@ -783,7 +783,7 @@ + </child> + <child> + <object class="GtkButton" id="button_details_permissions_value"> +- <property name="visible">True</property> ++ <property name="visible">False</property> + <property name="use_underline">True</property> + <property name="label">Details</property> + <property name="can_focus">True</property> +-- +2.25.1 +
  30. Download patch debian/patches/0015-snap-Use-default-icon-if-none-provided.patch

    --- 3.36.1-1/debian/patches/0015-snap-Use-default-icon-if-none-provided.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0015-snap-Use-default-icon-if-none-provided.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,93 @@ +From 567131074475bac1d0e8c3f79d3382b277b9be61 Mon Sep 17 00:00:00 2001 +From: Robert Ancell <robert.ancell@canonical.com> +Date: Mon, 16 Apr 2018 11:17:42 +1200 +Subject: [PATCH 15/29] snap: Use default icon if none provided + +--- + plugins/snap/default-snap-icon.svg | 1 + + plugins/snap/gs-plugin-snap.c | 17 +++++++++++++++-- + plugins/snap/gs-plugin-snap.gresource.xml | 6 ++++++ + plugins/snap/meson.build | 8 ++++++++ + 4 files changed, 30 insertions(+), 2 deletions(-) + create mode 100644 plugins/snap/default-snap-icon.svg + create mode 100644 plugins/snap/gs-plugin-snap.gresource.xml + +diff --git a/plugins/snap/default-snap-icon.svg b/plugins/snap/default-snap-icon.svg +new file mode 100644 +index 00000000..c2759591 +--- /dev/null ++++ b/plugins/snap/default-snap-icon.svg +@@ -0,0 +1 @@ ++<svg width="96" height="96" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path d="M11.334 17.02l37.077 46.978-28.768 22.735C7.733 77.998 0 63.902 0 48a47.809 47.809 0 0 1 11.334-30.98z" id="a"/><path d="M92.245 29.357A47.85 47.85 0 0 1 96 48c0 18.733-10.73 34.96-26.38 42.867L48.41 63.997l43.834-34.64z" id="b"/><path d="M19.643 86.733l28.768-22.735 21.208 26.87A47.799 47.799 0 0 1 48 96a47.784 47.784 0 0 1-28.357-9.267z" id="c"/><path d="M92.245 29.357l-43.834 34.64-37.077-46.976C20.14 6.61 33.298 0 48 0c19.898 0 36.968 12.107 44.245 29.357z" id="d"/></defs><g fill="none" fill-rule="evenodd"><use fill="#DCDCDC" xlink:href="#a"/><use fill="#E1E1E1" xlink:href="#b"/><use fill="#D9D9D9" xlink:href="#c"/><use fill="#E6E6E6" xlink:href="#d"/></g></svg> +\ No newline at end of file +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 64e0d9ce..0d9c1be3 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -843,6 +843,9 @@ load_store_icon (GsApp *app, SnapdSnap *snap) + static gboolean + load_icon (GsPlugin *plugin, SnapdClient *client, GsApp *app, const gchar *id, SnapdSnap *local_snap, SnapdSnap *store_snap, GCancellable *cancellable) + { ++ g_autoptr(GdkPixbuf) pixbuf = NULL; ++ g_autoptr(GError) error = NULL; ++ + if (local_snap != NULL) { + if (load_snap_icon (app, client, local_snap, cancellable)) + return TRUE; +@@ -852,9 +855,19 @@ load_icon (GsPlugin *plugin, SnapdClient *client, GsApp *app, const gchar *id, S + + if (store_snap == NULL) + store_snap = get_store_snap (plugin, gs_app_get_metadata_item (app, "snap::name"), FALSE, cancellable, NULL); +- if (store_snap != NULL) +- return load_store_icon (app, store_snap); ++ if (store_snap != NULL) { ++ if (load_store_icon (app, store_snap)) ++ return TRUE; ++ } ++ ++ /* Default to built-in icon */ ++ pixbuf = gdk_pixbuf_new_from_resource_at_scale ("/org/gnome/Software/Snap/default-snap-icon.svg", 64, 64, TRUE, &error); ++ if (pixbuf != NULL) { ++ gs_app_set_pixbuf (app, pixbuf); ++ return TRUE; ++ } + ++ g_warning ("Failed to load built-in icon: %s", error->message); + return FALSE; + } + +diff --git a/plugins/snap/gs-plugin-snap.gresource.xml b/plugins/snap/gs-plugin-snap.gresource.xml +new file mode 100644 +index 00000000..6a35050a +--- /dev/null ++++ b/plugins/snap/gs-plugin-snap.gresource.xml +@@ -0,0 +1,6 @@ ++<?xml version="1.0" encoding="UTF-8"?> ++<gresources> ++ <gresource prefix="/org/gnome/Software/Snap"> ++ <file>default-snap-icon.svg</file> ++ </gresource> ++</gresources> +diff --git a/plugins/snap/meson.build b/plugins/snap/meson.build +index 6afe62cd..be66eac2 100644 +--- a/plugins/snap/meson.build ++++ b/plugins/snap/meson.build +@@ -1,7 +1,15 @@ + cargs = ['-DG_LOG_DOMAIN="GsPluginSnap"'] + ++resources_src = gnome.compile_resources( ++ 'gs-plugin-snap-resources', ++ 'gs-plugin-snap.gresource.xml', ++ source_dir : '.', ++ c_name : 'gs_plugin_snap' ++) ++ + shared_module( + 'gs_plugin_snap', ++ resources_src, + sources : [ + 'gs-plugin-snap.c' + ], +-- +2.25.1 +
  31. Download patch debian/gbp.conf

    --- 3.36.1-1/debian/gbp.conf 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/gbp.conf 2020-04-16 22:03:17.000000000 +0000 @@ -1,6 +1,7 @@ [DEFAULT] pristine-tar = True -debian-branch = debian/master +debian-branch = ubuntu/master +debian-tag=ubuntu/%(version)s upstream-branch = upstream/latest [buildpackage]
  32. Download patch debian/gnome-software.install

    --- 3.36.1-1/debian/gnome-software.install 2020-06-07 09:25:25.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/gnome-software.install 2020-04-16 22:03:17.000000000 +0000 @@ -1,8 +1,8 @@ etc/xdg/autostart/ usr/bin/gnome-software +usr/lib/*/gnome-software/gnome-software-cmd +usr/lib/*/gnome-software/gnome-software-restarter usr/lib/*/gs-plugins-*/*.so -usr/libexec/gnome-software-cmd -usr/libexec/gnome-software-restarter usr/share/applications/ usr/share/dbus-1/ usr/share/doc/
  33. Download patch debian/patches/0019-shell-search-provider-implement-XUbuntuCancel.patch

    --- 3.36.1-1/debian/patches/0019-shell-search-provider-implement-XUbuntuCancel.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0019-shell-search-provider-implement-XUbuntuCancel.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,170 @@ +From abdb3369ea4fc8200ec990dc173064a960c71944 Mon Sep 17 00:00:00 2001 +From: Andrea Azzarone <andrea.azzarone@canonical.com> +Date: Fri, 7 Sep 2018 19:58:00 +0200 +Subject: [PATCH 19/29] shell-search-provider: implement XUbuntuCancel + +Implement XUbuntuCancel to request search cancellation. This is used by +gnome-shell to cancel the current search e.g. if the search overview is +closed. +--- + src/gs-shell-search-provider.c | 68 ++++++++++++++++--- + src/shell-search-provider-dbus-interfaces.xml | 1 + + 2 files changed, 58 insertions(+), 11 deletions(-) + +diff --git a/src/gs-shell-search-provider.c b/src/gs-shell-search-provider.c +index a0ea0e22..d1770ea2 100644 +--- a/src/gs-shell-search-provider.c ++++ b/src/gs-shell-search-provider.c +@@ -31,6 +31,8 @@ struct _GsShellSearchProvider { + GsPluginLoader *plugin_loader; + GCancellable *cancellable; + ++ PendingSearch *current_search; ++ + GHashTable *metas_cache; + GsAppList *search_results; + }; +@@ -44,6 +46,15 @@ pending_search_free (PendingSearch *search) + g_slice_free (PendingSearch, search); + } + ++static void ++cancel_current_search (GsShellSearchProvider *self) ++{ ++ g_debug ("*** Cancel current search"); ++ ++ g_cancellable_cancel (self->cancellable); ++ g_clear_object (&self->cancellable); ++} ++ + static gint + search_sort_by_kudo_cb (GsApp *app1, GsApp *app2, gpointer user_data) + { +@@ -57,6 +68,23 @@ search_sort_by_kudo_cb (GsApp *app1, GsApp *app2, gpointer user_data) + return 0; + } + ++static void ++pending_search_finish (PendingSearch *search, ++ GDBusMethodInvocation *invocation, ++ GVariant *result) ++{ ++ GsShellSearchProvider *self = search->provider; ++ ++ g_dbus_method_invocation_return_value (invocation, result); ++ ++ if (search == self->current_search) { ++ self->current_search = NULL; ++ } ++ ++ pending_search_free (search); ++ g_application_release (g_application_get_default ()); ++} ++ + static void + search_done_cb (GObject *source, + GAsyncResult *res, +@@ -73,10 +101,9 @@ search_done_cb (GObject *source, + + list = gs_plugin_loader_job_process_finish (self->plugin_loader, res, NULL); + if (list == NULL) { +- g_dbus_method_invocation_return_value (search->invocation, g_variant_new ("(as)", NULL)); +- pending_search_free (search); +- g_application_release (g_application_get_default ()); +- return; ++ pending_search_finish (search, search->invocation, ++ g_variant_new ("(as)", NULL)); ++ return; + } + + /* sort by kudos, as there is no ratings data by default */ +@@ -92,10 +119,8 @@ search_done_cb (GObject *source, + /* cache this in case we need the app in GetResultMetas */ + gs_app_list_add (self->search_results, app); + } +- g_dbus_method_invocation_return_value (search->invocation, g_variant_new ("(as)", &builder)); + +- pending_search_free (search); +- g_application_release (g_application_get_default ()); ++ pending_search_finish (search, search->invocation, g_variant_new ("(as)", &builder)); + } + + static gchar * +@@ -153,8 +178,7 @@ execute_search (GsShellSearchProvider *self, + + value = g_strjoinv (" ", terms); + +- g_cancellable_cancel (self->cancellable); +- g_clear_object (&self->cancellable); ++ cancel_current_search (self); + + /* don't attempt searches for a single character */ + if (g_strv_length (terms) == 1 && +@@ -167,6 +191,7 @@ execute_search (GsShellSearchProvider *self, + pending_search->provider = self; + pending_search->invocation = g_object_ref (invocation); + ++ self->current_search = pending_search; + g_application_hold (g_application_get_default ()); + self->cancellable = g_cancellable_new (); + +@@ -320,6 +345,26 @@ handle_launch_search (GsShellSearchProvider2 *skeleton, + return TRUE; + } + ++static gboolean ++handle_xubuntu_cancel (GsShellSearchProvider2 *skeleton, ++ GDBusMethodInvocation *invocation, ++ gpointer user_data) ++{ ++ GsShellSearchProvider *self = GS_SHELL_SEARCH_PROVIDER (user_data); ++ ++ g_debug ("*** XUbuntuCancel called"); ++ ++ if (self->current_search != NULL && ++ g_strcmp0 (g_dbus_method_invocation_get_sender (self->current_search->invocation), ++ g_dbus_method_invocation_get_sender (invocation)) == 0) { ++ cancel_current_search (self); ++ } ++ ++ gs_shell_search_provider2_complete_xubuntu_cancel (skeleton, invocation); ++ ++ return TRUE; ++} ++ + gboolean + gs_shell_search_provider_register (GsShellSearchProvider *self, + GDBusConnection *connection, +@@ -341,8 +386,7 @@ search_provider_dispose (GObject *obj) + { + GsShellSearchProvider *self = GS_SHELL_SEARCH_PROVIDER (obj); + +- g_cancellable_cancel (self->cancellable); +- g_clear_object (&self->cancellable); ++ cancel_current_search (self); + + if (self->metas_cache != NULL) { + g_hash_table_destroy (self->metas_cache); +@@ -377,6 +421,8 @@ gs_shell_search_provider_init (GsShellSearchProvider *self) + G_CALLBACK (handle_activate_result), self); + g_signal_connect (self->skeleton, "handle-launch-search", + G_CALLBACK (handle_launch_search), self); ++ g_signal_connect (self->skeleton, "handle-xubuntu-cancel", ++ G_CALLBACK (handle_xubuntu_cancel), self); + } + + static void +diff --git a/src/shell-search-provider-dbus-interfaces.xml b/src/shell-search-provider-dbus-interfaces.xml +index f6840e2c..4529c1e8 100644 +--- a/src/shell-search-provider-dbus-interfaces.xml ++++ b/src/shell-search-provider-dbus-interfaces.xml +@@ -40,5 +40,6 @@ + <arg type='as' name='Terms' direction='in' /> + <arg type='u' name='Timestamp' direction='in' /> + </method> ++ <method name = 'XUbuntuCancel' /> + </interface> + </node> +-- +2.25.1 +
  34. Download patch debian/patches/0009-Display-a-warning-for-non-sandboxed-snaps.patch

    --- 3.36.1-1/debian/patches/0009-Display-a-warning-for-non-sandboxed-snaps.patch 1970-01-01 00:00:00.000000000 +0000 +++ 3.36.1-0ubuntu1/debian/patches/0009-Display-a-warning-for-non-sandboxed-snaps.patch 2020-04-16 22:03:17.000000000 +0000 @@ -0,0 +1,104 @@ +From 4cc4457688dfac926fb22eb39ae3391728591498 Mon Sep 17 00:00:00 2001 +From: James Henstridge <james@jamesh.id.au> +Date: Fri, 23 Jun 2017 11:22:36 +0800 +Subject: [PATCH 09/29] Display a warning for non-sandboxed snaps. + +--- + src/gs-details-page.c | 15 +++++++++++++++ + src/gs-details-page.ui | 40 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 55 insertions(+) + +diff --git a/src/gs-details-page.c b/src/gs-details-page.c +index c0c5f3cb..c17345fa 100644 +--- a/src/gs-details-page.c ++++ b/src/gs-details-page.c +@@ -150,6 +150,7 @@ struct _GsDetailsPage + GtkWidget *popover_permissions; + GtkWidget *box_permissions_details; + GtkWidget *star_eventbox; ++ GtkWidget *box_not_sandboxed_warning; + }; + + G_DEFINE_TYPE (GsDetailsPage, gs_details_page, GS_TYPE_PAGE) +@@ -1310,6 +1311,19 @@ gs_details_page_refresh_all (GsDetailsPage *self) + gtk_widget_set_visible (self->button_details_permissions_value, FALSE); + } + ++ /* Display a warning about non-sandboxed apps that may come ++ * from third party sources. Currently only checking snaps. */ ++ ret = FALSE; ++ switch (gs_app_get_bundle_kind (self->app)) { ++ case AS_BUNDLE_KIND_SNAP: ++ ret |= (kudos & GS_APP_KUDO_SANDBOXED) == 0; ++ break; ++ default: ++ break; ++ } ++ gtk_widget_set_visible (self->box_not_sandboxed_warning, ret); ++ ++ + /* are we trying to replace something in the baseos */ + gtk_widget_set_visible (self->infobar_details_package_baseos, + gs_app_has_quirk (self->app, GS_APP_QUIRK_COMPULSORY) && +@@ -2819,6 +2833,7 @@ gs_details_page_class_init (GsDetailsPageClass *klass) + gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, popover_permissions); + gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, box_permissions_details); + gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, star_eventbox); ++ gtk_widget_class_bind_template_child (widget_class, GsDetailsPage, box_not_sandboxed_warning); + } + + static void +diff --git a/src/gs-details-page.ui b/src/gs-details-page.ui +index aab24476..736abf5b 100644 +--- a/src/gs-details-page.ui ++++ b/src/gs-details-page.ui +@@ -450,6 +450,46 @@ + </style> + </object> + </child> ++ <child> ++ <object class="GtkBox" id="box_not_sandboxed_warning"> ++ <property name="visible">False</property> ++ <property name="can_focus">False</property> ++ <property name="spacing">30</property> ++ <child> ++ <object class="GtkImage" id="image_not_sandboxed_image_icon"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="pixel_size">16</property> ++ <property name="icon_name">dialog-warning</property> ++ <property name="icon_size">6</property> ++ </object> ++ <packing> ++ <property name="expand">False</property> ++ <property name="fill">True</property> ++ <property name="position">0</property> ++ </packing> ++ </child> ++ <child> ++ <object class="GtkLabel" id="label_not_sandboxed_warning"> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="label" translatable="yes">This application is unconfined. It can access all personal files and system resources.</property> ++ <property name="xalign">0</property> ++ <property name="yalign">0.5</property> ++ </object> ++ <packing> ++ <property name="expand">True</property> ++ <property name="fill">True</property> ++ <property name="position">1</property> ++ </packing> ++ </child> ++ </object> ++ <packing> ++ <property name="expand">True</property> ++ <property name="fill">True</property> ++ <property name="position">12</property> ++ </packing> ++ </child> + <child> + <object class="GtkBox" id="box_details_details"> + <property name="visible">True</property> +-- +2.25.1 +

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: plasma-discover

plasma-discover (5.19.3-0ubuntu1) groovy; urgency=medium * New upstream release (5.19.3) -- Rik Mills <rikmills@kde.org> Tue, 07 Jul 2020 13:57:44 +0100 plasma-discover (5.19.2-0ubuntu1) groovy; urgency=medium * Update install files * New upstream release (5.19.0) * New upstream release (5.19.1) * New upstream release (5.19.2) -- Rik Mills <rikmills@kde.org> Fri, 26 Jun 2020 13:44:33 +0100 plasma-discover (5.18.5-0ubuntu1) groovy; urgency=medium * New upstream release (5.18.5) -- Rik Mills <rikmills@kde.org> Tue, 05 May 2020 23:38:48 +0100 plasma-discover (5.18.4.1-0ubuntu1) focal; urgency=medium * New upstream release (5.18.4.1) -- Rik Mills <rikmills@kde.org> Thu, 02 Apr 2020 19:45:32 +0100 plasma-discover (5.18.3-0ubuntu1) focal; urgency=medium * New upstream release (5.18.3) -- Rik Mills <rikmills@kde.org> Tue, 10 Mar 2020 18:06:56 +0000 plasma-discover (5.18.2-0ubuntu2) focal; urgency=medium * Recommend plasma-discover-backend-fwupd. -- Rik Mills <rikmills@kde.org> Thu, 27 Feb 2020 18:24:32 +0000 plasma-discover (5.18.2-0ubuntu1) focal; urgency=medium * New upstream release (5.18.2) -- Rik Mills <rikmills@kde.org> Tue, 25 Feb 2020 18:29:09 +0000 plasma-discover (5.18.1-0ubuntu1) focal; urgency=medium * New upstream release (5.18.1) -- Rik Mills <rikmills@kde.org> Tue, 18 Feb 2020 14:35:58 +0000 plasma-discover (5.18.0-0ubuntu1) focal; urgency=medium * New upstream release (5.18.0) -- Rik Mills <rikmills@kde.org> Tue, 11 Feb 2020 07:43:19 +0000 plasma-discover (5.17.90-0ubuntu2) focal; urgency=medium * Merge from debian 5.17.5-1. Remaining changes: - New upstream (beta) release (5.17.90) - debian/control: + Kubuntu Vcs fields. + snap and flatpak backends depend on xdg-desktop-portal-kde. + snap backend depends snapd. + plasma-discover depends software-properties-qt instead of removed kde variant. + plasma-discover recommends the snap backend in Ubuntu. + Transitional packages and breaks/replaces for renaming of backend packages in Ubuntu. * Keep our install files, so that appstream data and .desktop files for the snap and flatpak are found in the respective packages. * Keep our lintian overrides. * debian/meta/cmake-ignore: Keep config for Kubuntu CI. * Note that the fwupd backend is now built and provided in a new package with this merge. -- Rik Mills <rikmills@kde.org> Mon, 20 Jan 2020 16:12:45 +0000 plasma-discover (5.17.90-0ubuntu1) focal; urgency=medium * New upstream (beta) release (5.17.90) -- Rik Mills <rikmills@kde.org> Thu, 16 Jan 2020 18:07:10 +0000

Modifications :
  1. Download patch libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h 2020-07-07 11:04:06.000000000 +0000 @@ -48,6 +48,8 @@ public: QString errorMessage() const; bool result() const; + void addErrorMessage(const QString &error); + Q_SIGNALS: void progressChanged(int progress); void speedChanged(quint64 speed); @@ -61,8 +63,8 @@ private: quint64 m_speed = 0; QString m_errorMessage; GCancellable *m_cancellable; - FlatpakResource *m_app; - Transaction::Role m_role; + FlatpakResource * const m_app; + const Transaction::Role m_role; }; #endif // FLATPAKTRANSACTIONJOB_H
  2. Download patch libdiscover/backends/PackageKitBackend/PackageKitResource.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitResource.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -27,6 +27,7 @@ #include <PackageKit/Daemon> #include <QJsonArray> #include <QDebug> +#include <utils.h> #if defined(WITH_MARKDOWN) extern "C" { @@ -107,10 +108,10 @@ QJsonArray PackageKitResource::licenses( fetchDetails(); if (!m_details.license().isEmpty()) { - return {{ m_details.license(), {} }}; + return { QJsonObject {{ QStringLiteral("name"), m_details.license() }} }; } - return {}; + return { QJsonObject {{ QStringLiteral("name"), {} }} }; } QList<PackageState> PackageKitResource::addonsInformation() @@ -209,8 +210,11 @@ void PackageKitResource::setDetails(cons return; if (m_details != details) { + const auto oldState = state(); m_details = details; - emit stateChanged(); + + if (oldState != state()) + emit stateChanged(); if (!backend()->isFetching()) Q_EMIT backend()->resourcesChanged(this, {"size", "homepage", "license"}); @@ -225,7 +229,8 @@ void PackageKitResource::fetchUpdateDeta { const auto pkgid = availablePackageId(); if (pkgid.isEmpty()) { - connect(this, &PackageKitResource::stateChanged, this, &PackageKitResource::fetchUpdateDetails); + auto a = new OneTimeAction([this] { fetchUpdateDetails(); }, this); + connect(this, &PackageKitResource::stateChanged, a, &OneTimeAction::trigger); return; } PackageKit::Transaction* t = PackageKit::Daemon::getUpdateDetail(availablePackageId());
  3. Download patch discover/discover.schema
  4. Download patch discover/CMakeLists.txt

    --- 5.17.5-2/discover/CMakeLists.txt 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/CMakeLists.txt 2020-07-07 11:04:06.000000000 +0000 @@ -8,6 +8,10 @@ include_directories(${CMAKE_SOURCE_DIR} ecm_qt_declare_logging_category(plasma_discover_SRCS HEADER discover_debug.h IDENTIFIER DISCOVER_LOG CATEGORY_NAME org.kde.plasma.discover) kconfig_add_kcfg_files(plasma_discover_SRCS discoversettings.kcfgc GENERATE_MOC) +if (TARGET KUserFeedbackCore) + kconfig_add_kcfg_files(plasma_discover_SRCS plasmauserfeedback.kcfgc GENERATE_MOC) +endif() + add_executable(plasma-discover ${plasma_discover_SRCS} main.cpp DiscoverObject.cpp @@ -36,6 +40,11 @@ target_link_libraries(plasma-discover PU Discover::Common ) +if (TARGET KUserFeedbackCore) + target_link_libraries(plasma-discover PRIVATE KUserFeedbackCore) + target_compile_definitions(plasma-discover PRIVATE WITH_FEEDBACK=1) +endif() + install(TARGETS plasma-discover ${INSTALL_TARGETS_DEFAULT_ARGS}) # if (BUILD_DummyBackend)
  5. Download patch discover/DiscoverObject.h

    --- 5.17.5-2/discover/DiscoverObject.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/DiscoverObject.h 2020-07-07 11:04:06.000000000 +0000 @@ -41,7 +41,7 @@ class DiscoverObject : public QObject enum CompactMode { Auto, Compact, Full }; Q_ENUM(CompactMode) - explicit DiscoverObject(CompactMode mode); + explicit DiscoverObject(CompactMode mode, const QVariantMap &initialProperties); ~DiscoverObject() override; QStringList modes() const; @@ -58,10 +58,12 @@ class DiscoverObject : public QObject void loadTest(const QUrl& url); static bool isRoot(); - QWindow* rootObject() const; + QQuickWindow* rootObject() const; void showPassiveNotification(const QString &msg); QRect initialGeometry() const; + QString describeSources() const; + public Q_SLOTS: void openApplication(const QUrl& app); void openMimeType(const QString& mime); @@ -69,8 +71,6 @@ class DiscoverObject : public QObject void openMode(const QString& mode); void openLocalPackage(const QUrl &localfile); - void copyTextToClipboard(const QString &text); - void reboot(); private Q_SLOTS: @@ -90,7 +90,7 @@ class DiscoverObject : public QObject void openErrorPage(const QString &errorMessage); private: - void setRootObjectProperty(const char *name, const QVariant &value); + void showLoadingPage(); void integrateObject(QObject* object); QQmlApplicationEngine* engine() const { return m_engine; }
  6. Download patch libdiscover/backends/PackageKitBackend/PackageKitBackend.h

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -29,6 +29,7 @@ #include <QTimer> #include <QSet> #include <QSharedPointer> +#include <QThreadPool> #include <PackageKit/Transaction> #include <AppStreamQt/pool.h> @@ -89,6 +90,10 @@ class DISCOVERCOMMON_EXPORT PackageKitBa void addPackageToUpdate(PackageKit::Transaction::Info, const QString& pkgid, const QString& summary); void getUpdatesFinished(PackageKit::Transaction::Exit,uint); + Q_SIGNALS: + void loadedAppStream(); + void available(); + private: friend class PackageKitResource; template <typename T> @@ -109,6 +114,7 @@ class DISCOVERCOMMON_EXPORT PackageKitBa bool m_hasSecurityUpdates = false; QSet<PackageKitResource*> m_packagesToAdd; QSet<PackageKitResource*> m_packagesToDelete; + bool m_appstreamInitialized = false; struct Packages { QHash<QString, AbstractResource*> packages; @@ -122,6 +128,7 @@ class DISCOVERCOMMON_EXPORT PackageKitBa Packages m_packages; QSharedPointer<OdrsReviewsBackend> m_reviews; QPointer<PackageKit::Transaction> m_getUpdatesTransaction; + QThreadPool m_threadPool; }; #endif // PACKAGEKITBACKEND_H
  7. Download patch libdiscover/backends/KNSBackend/KNSBackend.cpp

    --- 5.17.5-2/libdiscover/backends/KNSBackend/KNSBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/KNSBackend/KNSBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -70,11 +70,16 @@ class KNSBackendFactory : public Abstrac #else QStringList locations = QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation); #endif + QSet<QString> files; for (const QString &path: locations) { QDirIterator dirIt(path, {QStringLiteral("*.knsrc")}, QDir::Files); for(; dirIt.hasNext(); ) { dirIt.next(); + if (files.contains(dirIt.fileName())) + continue; + files << dirIt.fileName(); + auto bk = new KNSBackend(parent, QStringLiteral("plasma"), dirIt.filePath()); if (bk->isValid()) ret += bk; @@ -504,7 +509,7 @@ ResultsStream* KNSBackend::search(const } return stream; - } else if ((m_hasApplications && !filter.category) // If there is no category defined, we are searching in the root, and should include only application results + } else if ((!filter.category && !filter.search.isEmpty()) // Accept global searches // If there /is/ a category, make sure we actually are one of those requested before searching || (filter.category && kContains(m_categories, [&filter](const QString& cat) { return filter.category->matchesCategoryName(cat); }))) { auto r = new ResultsStream(QLatin1String("KNS-search-")+name()); @@ -549,7 +554,11 @@ ResultsStream * KNSBackend::findResource if (search.scheme() != QLatin1String("kns") || search.host() != name()) return voidStream(); +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) const auto pathParts = search.path().split(QLatin1Char('/'), QString::SkipEmptyParts); +#else + const auto pathParts = search.path().split(QLatin1Char('/'), Qt::SkipEmptyParts); +#endif if (pathParts.size() != 2) { Q_EMIT passiveMessage(i18n("Wrong KNewStuff URI: %1", search.toString())); return voidStream(); @@ -562,7 +571,8 @@ ResultsStream * KNSBackend::findResource m_responsePending = true; m_engine->fetchEntryById(entryid); m_onePage = false; - connect(m_engine, &KNSCore::Engine::signalError, stream, &ResultsStream::finish); + + connect(m_engine, &KNSCore::Engine::signalErrorCode, stream, &ResultsStream::finish); connect(m_engine, &KNSCore::Engine::signalEntryDetailsLoaded, stream, [this, stream, entryid, providerid](const KNSCore::EntryInternal &entry) { if (entry.uniqueId() == entryid && providerid == QUrl(entry.providerId()).host()) { Q_EMIT stream->resourcesFound({resourceForEntry(entry)});
  8. Download patch libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/flatpak-backend-categories.xml 2020-07-07 11:04:06.000000000 +0000 @@ -3,7 +3,7 @@ <Menu> <Name>Applications</Name> - <Icon>applications-internet</Icon> + <Icon>applications-all</Icon> <Image>pkcategories/applicationcrop.jpg</Image> <Include> <And>
  9. Download patch discover/qml/UpdatesPage.qml
  10. Download patch libdiscover/backends/PackageKitBackend/runservice/main.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/runservice/main.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/runservice/main.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -18,26 +18,28 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * ***************************************************************************/ -#include <QApplication> +#include <QGuiApplication> #include <QFile> #include <QTextStream> #include <QUrl> #include <QProcess> #include <KService> -#include <KRun> +#include <KIO/ApplicationLauncherJob> int main(int argc, char** argv) { - QApplication app(argc, argv); + QGuiApplication app(argc, argv); if (app.arguments().size() != 2) return 1; - KService service(app.arguments().constLast()); - if (!service.isValid()) + KService::Ptr service(new KService(app.arguments().constLast())); + if (!service->isValid()) return 2; - if (KRun::runApplication(service, {}, nullptr) == 0) - return 3; - - return 0; + KIO::ApplicationLauncherJob *job = new KIO::ApplicationLauncherJob(service); + job->start(); + QObject::connect(job, &KIO::ApplicationLauncherJob::finished, &app, [&] { + app.exit(job->error()); + }); + return app.exec(); }
  11. Download patch libdiscover/backends/PackageKitBackend/AppPackageKitResource.h

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/AppPackageKitResource.h 2020-07-07 11:04:06.000000000 +0000 @@ -55,6 +55,7 @@ class AppPackageKitResource : public Pac QString author() const override; void fetchChangelog() override; + QSet<QString> alternativeAppstreamIds() const override; private: const AppStream::Component m_appdata;
  12. Download patch discover/autotests/PaginateModelTest.cpp

    --- 5.17.5-2/discover/autotests/PaginateModelTest.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/autotests/PaginateModelTest.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -20,17 +20,26 @@ #include <QtTest> #include "../PaginateModel.h" #include <QAbstractItemModelTester> -#include <QStandardItemModel> +#include <QStringListModel> + +void insertRow(QStringListModel* model, int row, const QString& appendString) { + model->insertRow(row); + model->setData(model->index(row, 0), appendString); +} +void appendRow(QStringListModel* model, const QString& appendString) { + int count = model->rowCount(); + insertRow(model, count, appendString); +} class PaginateModelTest : public QObject { Q_OBJECT public: PaginateModelTest() - : m_testModel(new QStandardItemModel) + : m_testModel(new QStringListModel) { for(int i=0; i<13; ++i) { - m_testModel->appendRow(new QStandardItem(QStringLiteral("figui%1").arg(i))); + appendRow(m_testModel, QStringLiteral("figui%1").arg(i)); } } @@ -80,24 +89,24 @@ private Q_SLOTS: pm.setPageSize(5); QCOMPARE(pm.pageCount(), 3); QSignalSpy spy(&pm, &QAbstractItemModel::rowsAboutToBeInserted); - m_testModel->insertRow(3, new QStandardItem(QStringLiteral("mwahahaha"))); - m_testModel->insertRow(3, new QStandardItem(QStringLiteral("mwahahaha"))); + insertRow(m_testModel, 3, QStringLiteral("mwahahaha")); + insertRow(m_testModel, 3, QStringLiteral("mwahahaha")); QCOMPARE(spy.count(), 0); - m_testModel->appendRow(new QStandardItem(QStringLiteral("mwahahaha"))); + appendRow(m_testModel, QStringLiteral("mwahahaha")); pm.lastPage(); for (int i=0; i<7; ++i) - m_testModel->appendRow(new QStandardItem(QStringLiteral("mwahahaha%1").arg(i))); + appendRow(m_testModel, QStringLiteral("mwahahaha%1").arg(i)); QCOMPARE(spy.count(), 4); pm.firstPage(); for (int i=0; i<7; ++i) - m_testModel->appendRow(new QStandardItem(QStringLiteral("faraway%1").arg(i))); + appendRow(m_testModel, QStringLiteral("faraway%1").arg(i)); QCOMPARE(spy.count(), 4); } void testItemAddBeginning() { - QStandardItemModel smallerModel; + QStringListModel smallerModel; PaginateModel pm; new QAbstractItemModelTester(&pm, &pm); @@ -105,7 +114,7 @@ private Q_SLOTS: pm.setPageSize(5); QCOMPARE(pm.pageCount(), 1); QCOMPARE(pm.rowCount(), 0); - smallerModel.insertRow(0, new QStandardItem(QStringLiteral("just one"))); + insertRow(&smallerModel, 0, QStringLiteral("just one")); QCOMPARE(pm.pageCount(), 1); QCOMPARE(pm.rowCount(), 1); smallerModel.removeRow(0); @@ -138,7 +147,7 @@ private Q_SLOTS: } private: - QStandardItemModel* const m_testModel; + QStringListModel* const m_testModel; }; QTEST_MAIN( PaginateModelTest )
  13. Download patch libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/sc-apps-flatpak-discover.svg 2020-07-07 11:04:06.000000000 +0000 @@ -1,73 +1,8 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="400" height="300" viewBox="0 0 400.00003 299.99998" id="svg2" version="1.1" sodipodi:docname="logo.svgz" inkscape:version="0.92.2 2405546, 2018-03-11" inkscape:export-filename="/home/jimmac/public_html/flatpak.org/source/img/logo.png" inkscape:export-xdpi="288" inkscape:export-ydpi="288"> - <sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1998" inkscape:window-height="911" id="namedview58" showgrid="false" inkscape:zoom="1" inkscape:cx="-219.73839" inkscape:cy="56.56834" inkscape:window-x="0" inkscape:window-y="27" inkscape:window-maximized="0" inkscape:current-layer="svg2"/> - <defs id="defs4"> - <linearGradient id="linearGradient8762"> - <stop style="stop-color:#000000;stop-opacity:0.18867925" offset="0" id="stop8764"/> - <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop8766"/> - </linearGradient> - <filter style="color-interpolation-filters:sRGB" id="filter8555" x="-0.15204041" width="1.3040808" y="-0.19380258" height="1.3876052"> - <feGaussianBlur stdDeviation="8.0110745" id="feGaussianBlur8557"/> - </filter> - <filter style="color-interpolation-filters:sRGB" id="filter8627" x="-0.020253284" width="1.0405066" y="-0.026079299" height="1.0521586"> - <feGaussianBlur stdDeviation="1.0671543" id="feGaussianBlur8629"/> - </filter> - <pattern xlink:href="#pattern8263" id="pattern8365" patternTransform="matrix(-0.5691535,0.43131253,0,0.5660977,653.4856,483.22011)"/> - <pattern xlink:href="#pattern8238" id="pattern8263" patternTransform="matrix(-0.11853119,0.09030948,0,0.11853119,298.32672,784.73536)"/> - <pattern xlink:href="#pattern7515-03" id="pattern8238" patternTransform="matrix(0.11853119,0.09030948,0,0.11853119,235.67326,746.73536)"/> - <pattern patternUnits="userSpaceOnUse" width="1250" height="833.75001" patternTransform="translate(915.67334,526.79382)" id="pattern7515-03"> - <image width="1250" height="833.75" preserveAspectRatio="none" xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QBgRXhpZgAASUkqAAgAAAACADEBAgAHAAAAJgAAAGmHBAAB AAAALgAAAAAAAABHb29nbGUAAAMAAJAHAAQAAAAwMjIwAqAEAAEAAADoAwAAA6AEAAEAAACbAgAA AAAAAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJ CgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIApsD6AMBIgACEQEDEQH/xAAfAAABBQEB AQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYT UWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZX WFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPE xcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAA AQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGh scEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq c3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV 1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP1EuLLR5Y/Nl022mdP+ecOxqHvL f7P5v9myOif8sY9v/s2KP3dr/rZpdn9+T5qPLjlj/wBF8p0/8dr8oaij7APM0+7jeXyb62/2Ljb/ APFGn2f2mWT97Z74v78d23/oO2iS31CWT/lrDs/557f/AEFs0y8+1yx/udYlR/7/ANkV/wD0JapW S1DUmvNU+wfuf7Gubn/rz2u3y/7zCmf8JBHLJ5V1DfWzfJs8yLZ/jUP9ofZbf/iaaxv/AHu9/LtP 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 rdSArW/9uWsmZdSsfIff8lvCyN/49kVDcXniiw/0SLw3bX8X8D/2isTf737yLH/j1XBcWf2fzbqa 22J/097P/Qmp/wC78v8AdeY+z7j28yt/7NRqNOxTj1S8v40P2P7G/l/PDJLE/wD49G22ppJLyWPy pZo/n/56Q1NeR3H2fyv7SubOX+/JEsv/AI7/AHazY7PxJFstYte0h/ufJcafKn/otjU6oejIb+z0 OL/RdU022dH/AOelo22TdVaK48B6D+6igsrNP4HjhZV/76Za3rfzIv8Aj6msfN/je383bu/4Eu6p oLn7LI4tZv8AyKyf+y1k4K90l9xanczbPWdDvo3/ALL162miT7/2eVW8v/ep/wC88vzYtS37P4/J X/2Wr8XmXX+qhi/2Pvf+hbaI47yLZLdWVs6fweXvenEluxmyeJLeKN5brxVbW37zY/2j918y/wC9 U1pqn2+P7VF4ksbmL/pndxMn/jtX5DcfP+5/5Zfckib/ANmqtJp+n2snmxabYw/7flbfM/8AHat8 6BOLKF3Z+IJZH+wa9Y/P9xJLTzU/76WVKfHZ3Etv5V/9h3/wfZ4m/wDZqs3Fv5v7qLQbJ1f780e1 N/8A47jmmSR3FrGkX9gx7/7kflK3/AfmFZuCctS+ZpBHZ+bb+VDD8qfI/l7qZ9ngi/deTcp/1z2f +g7qI5SP3v8ApKOnybJJfk/8dY1NJqnlfurqb7n/ADz3P97+H5c0OMW9w5pMp2+l6fa3L3VhNco7 /fSSWXb/AN8+binjT47qT7VLebHT5tkm1quf6ZdR/arX7M7p8kPmbk+Rf71QyafqEtv+9hubbf8A K82n3f8Aq/8Avpf6UvZxsHN3K1vZ659s8yLxJLNb/wDPGSL5/wDvpWp8lnrnmPLa3nm/wbLiZUT/ AID+63U+z0u4i/4/9Yubz978j3G3d/30sSU+30u3sJHu7T7T/uSaizJ/3yzURhKw3KKMe48H3kt7 9vtdZ1uFvvvDb6tugk/7ZyK61fjs7iLf/odz/rfvxzK7/wDAVVRU0kccWyaWzlhZ/wCOP5v/AEGj 7bpU1x9livJElT+D5l8v/vpan2cVJ6DlKRlXmn6frNv5Ws2dy8T/APPSZonj/wCBK1Mj8P6PoO+W Kzvf9X8/l3c8qbf93ca2Ps8nlv5V5JvqtJHeeZ/pepW1yifJ/wAg9VaP/vlqlxine2pXMzNt/Enh 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 3t8R5i81/wDYj+SqeoXHiSH97a6DHNF5fyeXqyq0n+ztaL+tGdUurdJfsd7Cz/fto5on/wDHlqVJ RHrIJ7PWJbj/AED9yn8byWnm+Z/s9qZ/xNIv3V/pu9v79vDLEv8A48xqb7ZJa9bPUkl/64tKn/jt MvJI7qN/9MuYWePZ50fyf+hVnKK7mkSGTVNPtZEiv7zZv+REk2/+zUyW40+wuU827iTf9z7Rt/ef +PUWcWoRx+VFrFy/8aeZt2/8CVaLz7RL/wAfUMbp/G8kSOv9DWf2SupNJcWflvF50e5/uQ/L/wCz NVb+z7jzP3X+q/64tT4re3l2Sy/YtyfOieSv7uqEngvwv9pe/tdBtkuH+fzreFt0n/AVanrLZBe3 Um1C38QTbJbDXraHZ/BJpyy/+1UNBj1iKNJZZraaXH77/RP9Z/u/MdtH/EwMif3E+T95pzK//fTV W1D7RL+9m0GWaX+B5Pl/8e2mhz9fmNK/b5F+SO4lKSxfYk3/AMEm5fvfxfK1aVnJJN/x9Wfzfc3x /d/8elrm7O4s4rhzf6dLbOnzpNJ5TJ/30vzVNb/2HFqCS2upXKb5PnT7XPt/9CxVKfUiVPzOhuLe eKP919m3f35JW/ef985qG3j1i6/1sFts/wCne7Z//QlFQ28n2q4+yx6xLvT/AKY/LH/47Vzy/Nk+ yzTWzv8AxpJ8/wD46tWlGVnYxejsPjt/ssbxSwyu/wB/93uot7yMfu5Ybn/YeT5l/wC+lojt44pE xDKm/wCd/LibbRJeWf2h4opot/8Ack3J/wCPN96nbW6Am+13ktx5Utn5yfc3+d/9jRJ9jFx5ps40 b/rk1M+2SeX5sX2Z2/6aTMv/ALKaf9sk8xDLDv8A+23y0J3AZJHeeY8trDEm/wC+n2R//ZWp8n2j zUP2ON3/AIP3W2mR6xp91cfZfO/2ET96n/stTJZ2dh+9/wDbtqpxUne4akPmap5nlS6P/wAtPvxz L/6DR9oki/5bRp/103f/ABVPtrizupPKsbyJ5f8Anj5vzf8Aj2Kf5dx5n72GPY/8ce7/AOKqWpMa aW5WuLy88t/sOmxXkX9/7Wq/+OstTW8cnl/8gfZL/H91v/Qarf2po5neKW9tv+/3/wBlRHJpd1L9 qivIv9+OZm/9mNSm7g1Ysi3s/k8qHZs/55w1W1Cz0eUeddWdsj/xvcWlWf7Ojuv3VrNLs/v28rbP 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 mtXWT/Z7NRcf8JBF+9i0GxuV/wCW3mXaxP8A+gkUe1knsivZx6m3JrFva26fubnY/wDz72jOv/fW 4/3qJNY0+X/W2dy6P9//AETev/fS1lWcel+Ykv8AZttDev8Afhj1Bd3y/wC639Km/s+3z5v2O9dv +u29K25rrRHN7PzNj/QJY/Nlh+RP+ecW/wD9B+amW8mhxfvdP+RX/gkmZP8AvndWVHHbxSPJFZ3K P/0zl/8AiaP3n/T7t+f5Le7/AIP9paXNGxapW6mrcWcf+timvk/2I7ttv/j1Pkj83/l8lT+48lc3 JpF3LcfarDXtStv9iOVdn+z8rKaebzWLW3f7V4q+/wDJvklgiaP/AIEtZ80b3sPkk+psRx67Fcfu tYtv9zymT/0FquJJcSyfuvtL7P4I7tW/9CrBs9d1T7P9li1K2v8A/b82KV//ACHT7i8vJf8AW6DH /c/65/7rKtVGUROEkbF5IPL82WGVH/v+bE3/AKFxTI49QOz/AImUvlf35IlrK/tjUIpElOm3Kfwb /wB7/wCytinyeKJJpP8ARfsz7Pkf7R5qPH/wFqqLg1dMTjJbo1beO8ik/dCV9n/Tpt8z/vlqsyWd xL/z03+X9z5dn/oNY9nrkcvHk2M1vN9/7Pu3f1Vqvx6hZ+X/AMs0/uJ80T763i4qOhjZrcP7L0uK 4S6/se2hl/gmj+Wq154H8MX8n2q68Nxu6fcmj/1v/AtuKs2+sSRb/N0e9/344dy/73y1Nb6xLLGn lWd68X9+T5P/AELDUrQatIak1sVo4/sHk2thZxIn9ySZleP/AL6U/LT/AC9Luv3t/o9sjJ/ut83+ 8tP8yzuo/Ki+9/c81qm/d95vJ3y/8s9v/s1C1dgbuM8vyv8AVfIv8D28vzx/99KaPLv/APVf29cz In3IbiFd8f8AwJVp8lxJFbv53mp/feSH/Wf980y31DT7r/VXltM33E8v/wCJq22thFC40/xHLceb F42l2fceG40+CX/x7aDT/Mt7WP7JdTXKfu/nf7JKv/fLKpq//aGlyn7LLNbbv7knzf8AoVMFvHFI ksU2z+D93Ft/wqH5alcxQuPD9xfxJLpfiS5hRPnheS0gn/8ARkVPj0e8+T7V9muWT5PtMdoq/wDo LVNJ5ksvPmfP8+/zW37P+AsKmj/1fm+dJs/ufvf/AGWU1CSbuhttKzKf2PUIpE8rR/OT7jzRyqn3 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 fgvR7qL7frOgW15O8nzzf2fEsu9vu/NHjbUP/CSW+jRpa3Wj+JLOBI9ieZpM7p/31HvrpLyMS3nn fY9n8Hk/un+f/ZbdUMifvOLPZ+9+Ty5vk+X5aTppJJD5mVtL8WeH9Zt/Ji1KJ9nyP5kLL5f93crK DVm3t9UEn/H5YzI/z/u7Tyn/AO+lb+lVri8uNQuPKl0e5+T/AJ6eUy/99bqfb+Z5flS/vovN2f7E f/j1Dg72epOli/8A2feRRp+5uZpX+f8A1y7o/wCVWfMki/dS/abn91/y0lXf/wCPYrK0/wCziRPJ +TZ9zy9QZU/75qzHqGseX5X/AAjdzc7Pn/d3cW75f95hUxi+4mk9x/8AblnaSfZZtH1u2ZJfv/ZG b/0Xmipo7y9urdPtWjyIn9yTa/l/721qKl6u9x6dimfEH7zypfDerpv/AI5LRXi+b/dar8eoR/6r zpE/gdPJ21g2fii48tJbuz8n/Yk/dPHVw6jrH/H1YTWM0X9y43b/APyHUxm+5UoKO6L/AJmqQ9Yf OR/uJb/f/wC+WbbT47yOW8SW50e+hb+B7iLf/wCgsaZb/aJY/wB7DbJK/wB/y923/wAeok+x+X5U t5FDL/H5kuzzK1bk9iR95pfh/VLd5ZdNtn/e798lpT49H0/y/sscOxU+RE81l/8AZqhjik8zzYpv OiT54fLu1+//ALVTeZqF1/vJ/wA9It3/AI8rVStJE3cditeWdnFG8Q83/W/O8c0q/wDoLVDZyWVr L+61iXf/AHLj5v8A0Kpo5NQiP+lS2SRf3/mSn3Hh+S6l82LxJcpF/wA8Y5laKT/gLKawlGdvdLTi tx/2iOXf/rZv+uf/AO1Vb+0NL/5a/brZU++n2SVU/wDiaP7PuLW4+1Ws1lM3/TTdF/6DmmW9xJ/r ZdNifZ9/y7uoUm3sPlXcuW8dvL/qvMeL+/8Ado1CS4ikT7BZxXP8CeZdt/6FtplveOY/NutHuYXS P78flS/+g4qb7R+782WGSF/7kkOyteVWtcnqU47y88z/AE/wrJbJ/wA9o7uKWKP+TU//AEOWP/Ux /J9xI/n/APZqmuNc08f8vkcL/wDTxDtWi5ls/kuhNvb+B47Tcv8A30uaSUWVdlOOSP54vIlhX/pp aMtTZs+178/8dH2iCWT/AI/Jf9/7v/oVMj0vUIpPN/tKR4v+eMlpF/6Eq5rNporQfceZDH5trDJM 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 LeJay6xbJK/34bj5H3/3PmUVfk1HQpf3X9jx7U+TfHMqVPtKU9YyX3jtUj8SYy40DT7+T7ff2ds8 v9/ylos7O88t/wDiT/f+T/llt/8AHWqH/in/AD/tUWjxQu8nzv5Pz/8AjtX7eS3l3xRValBvQTUk rMZ/YVv5ebrR/nqtHo8l1eYurO2ff/v/APoW6tKOzuIrjzYprlP9jzvlko8y4lk8r+0pd3/PGPb/ AOzVpyxI5pGbeWeh2p/e6lsdP+fj5KZHb6PL/qry5ff/AM+82771aVxJqEUn7350T5/3nz1T1TWP +WUtnK//AFztN/8A6DUOyV0i02tGQyafceX50U0aN/Aknz/+y0wf8JBHvil02Ob/AG47vZ/46y1p R/Z7qNJYtNl/2085lf8A8eqG8vLfzE/4kMsz/wDX2q0OEVuCnJsYI5Jf3X9mx/78cK1NHpYlj/e2 cfz/AH/4af8AZ44v3v8AZv3/AL/3f/ZWqtHp9nDJ5trDbI7/AH/vf+ytQkk7sXNfYh1Tw3Z3X/H/ AKD5yf8AXLdWVb+EvC1g73Vr4b8nf99PNlVf/Qq2Lj+0LWP/AEX7C7/3P3qf40+SW8lk866m2f7H 312f8CxUzpxbbKjOUVYoaXoej2Fx9qH25FT+CTUZ5U/75aU1ct7fTpZP3U0ls6fc+9E//j2aZ5d5 dRpFa/YXdJXTfJuVP/HWNWbezuL+z8q/s40/uPbzN/7NUwSeiQ5O2pDH5cv+ixalE7J/HJL/APY1 NJ5lrZpN51y/9/7Ptb/0JqLPT5NPj/dWe/8A66TM/wD7NVnOoeX5UumxOjy/8u+7f/481OMWZudy hHe2fzxEfcl+5cWjo3/oO2rMktvFG+NN3/7cf/s22rP2f7V+6trP/v5uR6rSafqkWy6i07zv+3vb /wChLUNWHzcw+S30+6TytQ03ztnzo/y/xUW9vp8X/HrZ7KPLuPL/AHsPk75PvyTLT7j7f8n+qf8A 249v/wAVVJpgD3GoeX5tr5T7PueZNs/8ephjkv8AZ9qs/mT/AJ53bJ/6DUN5Z3P+u8/Z/wBc6hs/ tnmeVL5qJ9/fJ5W3/wAdahczlaw1yuN7lzy7OKTzYrOV/wCNHjmZ3/8AHqf5enS2/myw3KP/AHJI fnp8f2jzPKlh3o//AC281afcW8n/ACy8pGT/AJ6TPs/9BroSaVjNu4zzLeKN/ss0qN/fkib/ANBa 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 ot7UJF/ZuyV/+ecP/sy1MfNik/e3mpfJ9944fk2/7y0z7ZBfx/ZZdS85/wDppCrN/wCO0+VvS402 xn2fT8/7n3PvVQ/tTw/pe+0iOz/r4tJ//QtprYjjt4rfyovn/wDHv/HWokt7eL97dfc/ueVtpcou Yyo449URLq1mimi/g+z3cqf+yirlvb3hj+yy2cflJ/HJK2/5qZeR/at8sV5Eip9xJLTf/wCgtR+7 ij8nzopnf/ltHFs8v/vqiPuKxUrMJLjVLX9ydBtvKSX5JpNQ3N/48tTSahoefN1CGxRPv/vIVp48 vy8yzb/+ulEd5pfz+V9mSVP+ee3/ANB+9VqU0/Iz90rW+qeF7qV4dLmtptn8FvLT5P7L9dmz/pq3 /wAVUOoajJFI/wDxJ7l2+/8Au4Yv/ZmqbT9QuJY3lh025RP40ki2/wDfO2pTu7FfDG5NcWenyxpd Szb2T+PzW/ef8CplwbiWNwfK2/3JNr0/7ZqkUb/xo/8AB8yf99NzUNvrGoRXH+labsX+N49QV0/9 BFW3ESuuhW/sPS5f9bo9k8v8Dx6cv/stEcccUj2sXmbk/wCmLJ93+Gr8msaP9ohilm+/8m+i8uY5 Y3li8p0/g/0vZU+7a7Y7u+pT8ySLZFLDJ/vyf/s0y8/tD/W2um71/jmju/m/75ZauXFvcSxpdXUM n/bO7+f/AMd4p9vHH88Uum3MP/bWjpYOZp3Rj+ZeRbON+/8AgklVH/rRcXmoCTyv7HuU3/xxywOn /oVaVzbyS/8ALnKif3/O20+OS8tdksU29P7kkyulZyS2L51o0M/s+Qfvf7Yj/wBzzkf/ANBY1NZ6 fqnmfarqGLZ/A8d3v/8AZRVb7PcRDzfsdj5v8Hl7U/8AHqfJeaxaSf6LoNlN+9+5/aPlN/48u2j3 d7Ml8zVrk0ml+bH+9s/m837lxNu+X/vmi4jki/1WmyzL5f8Ayzu1/wDiaI7z/SP+QPIn+35u9P8A vpWqa4vLe1/1sPzv/B5rf+hVTkmrXI1bsjKfVLP7R9gl0e5Rn/56Q7k/76WppLe88v8A5Z23+3bz f+ystWfM+1B5bC83p5v/ACzmV/8A0HNM/tGO1/4//MT+5/dqIx7sta7IoJp+qRf6Vf6lbPB/Glxa K/mf8CVaI5NDupPKi+zP/cSOWr95cTxSJL52yJ/nR/mo+2SS3Hlf2lbb/wDnjJt3/wCz96qainYc ZSaGSWelXX+gX+jxP/cT7yUyy0z7LJ5WlQ20P/TH5v8A0Faf9n1C1/dafZ/aU/vxzRbfm/3mFBk1 i63/AOhS2zp/z8Q7v/RbVVm7MSdwuIvEGPKi1i2T++klpuf/ANCojNx/rZZvn/jePcn/AKFT5LPU JY3tbqGX54/v2+7Z/wDFVW/4R/ypPtUWpX2z/r7ZP/Qs0pXFGxfjkjtZPtUupReV/f8AK/8Asqfc W/myeb/rv7nlw/8A2VVpPs8Un99v4/3ytVa80/S7r95Lo+9v+mkS7/8A0IVanFxsCTTumaT2f/PL +P8Ag8pt9QmXyo/Kl81Khgt/ssflWvmoqffSSJn/APQmojvMx+VdTSvsk/5aWjLUc2gld7hJeeV+ 68mJ2f8Agklpnmaf/wAfN1DLbJ/f/g/8dqzb3Fvn91Nv/wBiOFno+0R2v77+D/pnC1Fm1qyxlvJp 8v7611LfF/wHbT5I4ov+X2Ld/B5kNH9qW8Un+lQy/P8Ax0y41COKP91DI/8AsRwrvpPlXULS7DLi 5uPL/ezbP7j283+sp8cl5FHgeXNF/wA8ZIfn/wDHWqtJqFnLcfYPOuU3/wAFxaS//qp/kW/lp++i dH/3qUZAWY5I5Y08qGRN/wDH/BRHZR+V/ovmw7P4/m2f+gioY7Oz8t4ovKh/j2fdoj+0eX9l86NP v/vo7v8A9lZarmV7tDasTSSXH+qlgjm2f89Pv0f2jZxb7SXXo0d/uQyTbf8A0KmW9vef9dt8f+u8 1X8ymXFpbyxp9r+ff/z02t/6EtW3JkpRLMfOz97E6f8AXXdTLi31jP8AoE1t/wBvkLff/wCA4qGT S7eKN7WKGVE/g+z3flf+g4pkdxHYf8fU1y+/+CSbf5dPmfYXKPjk8SRSeVLZ23m/9O8rf+zLT5Pt ksf+lea65/z92mXkccv+qmvYdn/PP7n+9QlteRR5i17Uk/2LiFWXd/3yKEmm0wlsP8z7BH5trDI+ z+COZv8A2pRHqHmnzRptyifwJJ8n/oOafp97cfP5s2//ALdNlE+oW3/L1pv/AACOJf8A4qq1sDlZ 2DOf3sM16n8ez+CmRSTxSf6LqVyjv/H8tPjkjurf/kG3P/bS02f+hUyK3t/LSKLzYW8z5Ejh+WjU kmubzVPkxB5zJ/z8Xe3zP++aI9VuIt/m2e/Z/wBPav8A+y0z7PJ5b+bDKn9x/K/+KY1DHZ3kX72K bzlf+CO02P8A+hbaqXNe7H7vQf8A2hb/ADyy2Wzf/H8v/stEl5pcVv8AupYnX+5JLF/6FR9ot/s6 Rfu/9jzP/sarR3FvLInm6bL/AL9v5X/xVHNoCVyzGlvdx+bpcMU39/7PNFLUNxZ3Hzx38NtNF8m9 JIvm/wCBLTLzS7O6/dXWmxunm/I/zRf99bWp8ccflpF5Py+X8j/M/wB3/a3U09bCKEelaPayPFFZ 2UL/APTv8n/jtVpLOTpa+Z8n+9WxJcXnazimR/8Anpuqt5dn9o826s/J/wBv5qzmorY0jJlOPy/9 VLNJ/sfumq/b6fHLs8qzk3/3/KqaOTytnlQ/7j/5WmR3Hhe/je1ur22eX7kyfLu/75qPd6lc0uiJ pNPvP+WvyVWuNLjuke0M3+//AA/4VN/Y+h2sifYPMTZ/zzmlVf8AvndimXF5qkWz7JpsVzv/AIP7 QVH/AO+WUU0k92HNIoP4f0+0/df6btf/AKatL/7MaZ9j0+1j8qK9ufk+R0+//wCOtWxHqlwZPKuv DdzbP/f8mKX/ANFsaZ/akkv/AB66bLD/ANflpLF/7LSlFCU2zE/ssy/8eGpWzsn/AD0tFf5/+AsK ZJpdwT/p8290+4lvuSL/AMezXQjzJf8Aj6s/+B+d/H/3yKrXNveSx+bLeeT/ALElp/7NVwV0KUjE k0e38vEs1zCj/fSOZX/9Cqt9s0u1uHsLm8k/7abVSRf95WrY/sv955ss33P+ed2yf+O1N9i1CW3e W6vLaaJPueXsT/x7caHTfL7olNozY47eWNIpZvJ2ffeOVlarNvH/AMS/7VFeSvB99/uvLHt/4F92 nyaXJ5TxGaWHf86P5q/f/Wq1x4X82RLqW0tppU+dLmS0i83/AL6WolGXLqK7ew+OO8+z/wCi6x50 T/vbb/RH3bG/2ll+7UN5ceLLW5/c6PbTRJ8j+Zd+U33t390iobfS9bilfyryJ4nl3/u7SJ2/9Cq/ p+l6pF+9uobabf8A887Ta/8A461c/LUv7uhaaQfbLzy4ftUMVtv+dPLm3/8AAvuimR6h4kik820s 7ab/AG/tbRPH/wABZSKmuP8AiXx/uoZbb/bji3/41WMn2WT/AEXxHs/e/J5kKq//AI7WjnWezBKL 6FmO5vLqPytUs5E/65yrs/8AHaZ5dvdfvYprlJUj+T/S9rR7v91hR/an7x7WXUvm/geS0l2f+g1c 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 luf3p+02zv8Achkmib/2am+V9SU0xkslvLH/AKVZyp/2x3f+zZqtef2fLL5VrDc7/ufu5mT/ANCr Vtzef8sryX5P+ec2zzP97bTP7Q1SKT/kGyOv/TPyv/ZmFRKMepSbKHl28WyUalGn7r7lx8v/ALLT I7fzI0lsLyN/7/75f/ia2JP9KjSUQ/vX/gkh+f8A4FVC48L6XLbvL/YMUL+b/ro5p4v++tuKmVN2 ugU09yncf2hFImBcu/8AfjhidP8Ax5qfJ9oiHlS2dz/vx/dk/wDHquW+h28UnlRabc7P+vtnX/x6 iTT5JY/KtRLD/GnmRb1/75qIUm9y/aLoUJLizlj8qW8lmTzf9TH8/l0VZj0+TzP+JhNFs/gm8lkl j/8AHjRS9jIrmiWY7eT5Iovk/wCucyr/AN9LT449Q8z97qUaJ/00+X/2ameVqE373zotv/XHa/8A 461H/H+n+u850/jj+b/0Fq05TJu5ZttLuJbjzbWH5/4/+mn/AHzU32e/+T7VafK/8ce6s240/T7q RIr+zif/AG5It9PjkMUn2S1025eJPuPb+V/7MwpqMk7A79S/JHbxI8stnJ8n/TJmpn2jR/8AlqL5 P+ucPy08ahb2Ef2uWa52eV/yzhZ//HVqGPxho8uyKLUtn9x5LSWL/wBCUVTuupK16DLj+y4rh5YZ pUab/plsaSmfZ7OWXzbXWL5P3f345dq1c+2y+X5uYnV/4/uLUN5JZ2EjxeT5O/76R2jMn/jtRJyv uMZaW/7t7W61iW5V/k2XG16fFo9nayebYWcSN/0z+7/3yrU+3kt5YvNi8p4v7/kstVpZNH8xJJZo 4X/6afL/AOy0aRWpSu3dExt3l2ebZxO//XZqZJb/ALz97pv3PueX8zf+PLR5n/LKLUpXT/pnCr+W 3/fNEdxH8kv9pRb/AO5JaN9z/gNJSiidSnJqunxSeVfw30Kf9g9v/ZVp9nqGjyjytLvN/wDf8uHa 3/fLYrSj1COXf9l1KJ9nyfu5t/l0eXcyyeVEd/8A1zm/9lqWm0VzFOO3uJZP+Wn+/T5NLkz5vnSp /f8ALldKmks5Pnils97/APXX/wCxojt9Qtf3stlc7f8ArtV8shNp7FaPy/L8qWaR3/6ePk/9lqGS ODzc3U0if3E82rnmed/rfNT/AK6bf/ZarSfupP8AZ/g/e7aTbYJXCTULfHlff2UR6p5Mn7qaT/vy 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 MwCybN6mNSG+uRRVc0hcp//Z " id="image7512-2" x="0" y="0"/> - </pattern> - <pattern xlink:href="#pattern8238" id="pattern8359" patternTransform="matrix(0.5691535,0.43131253,0,0.5660977,240.40092,70.698418)"/> - <pattern xlink:href="#pattern8263" id="pattern8363" patternTransform="matrix(-0.5691535,0.43131253,0,0.5660977,622.87467,481.42914)"/> - <linearGradient gradientTransform="matrix(4.8017192,0,0,4.7759386,-809.60641,-3275.9706)" xlink:href="#linearGradient8762" id="linearGradient8793" gradientUnits="userSpaceOnUse" x1="283.18958" y1="775.89514" x2="314.38397" y2="767.84918"/> - <pattern xlink:href="#pattern8238" id="pattern8290" patternTransform="matrix(0.32567575,0.24680178,-0.24813402,0.32392718,302.82327,177.4991)"/> - <pattern xlink:href="#pattern8238" id="pattern8361" patternTransform="matrix(0.5691535,0.43131253,0,0.5660977,322.03012,299.94347)"/> - <linearGradient gradientTransform="matrix(4.8017192,0,0,4.7759386,-809.60641,-3275.9706)" xlink:href="#linearGradient8762" id="linearGradient8768" x1="304" y1="845.1123" x2="428" y2="883.1123" gradientUnits="userSpaceOnUse"/> - <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8650-0"> - <path id="path8652-1" d="M 464.25,87.271484 400.77148,136.75 400.9375,136.87891 401,199.43945 401,200 401.36523,199.71875 464,248.5 527,200 l 0,-63 z m -0.75,64.613286 18.71094,14.40429 -17.96094,13.99805 -18.70508,-14.57813 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - </clipPath> - <filter style="color-interpolation-filters:sRGB" id="filter8758" x="-0.0081981895" width="1.0163964" y="-0.0064185006" height="1.0128371"> - <feGaussianBlur stdDeviation="0.43118556" id="feGaussianBlur8760"/> - </filter> - </defs> - <metadata id="metadata7"> - <rdf:RDF> - <cc:Work rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> - <dc:title/> - </cc:Work> - </rdf:RDF> - </metadata> - <g id="text7293" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:28.46652603px;line-height:125%;font-family:Overpass;-inkscape-font-specification:'Overpass, Normal';text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" transform="translate(0,-752.36232)"> - <path inkscape:connector-curvature="0" id="path10410" style="fill:#ffffff" d="m 147.7101,1011.4933 v -19.93214 h 12.3568 v 2.79383 h -9.39617 v 5.46257 h 6.07415 v 2.79384 h -6.07415 v 8.8819 z"/> - <path inkscape:connector-curvature="0" id="path10412" style="fill:#ffffff" d="m 163.61132,1011.4933 v -19.93214 h 2.96063 v 17.08274 h 9.74367 v 2.8494 z"/> - <path inkscape:connector-curvature="0" id="path10414" style="fill:#ffffff" d="m 193.16202,1011.4933 -1.58456,-4.5869 h -8.06181 l -1.62626,4.5869 h -3.07183 l 7.20003,-19.93214 h 3.04403 l 7.17223,19.93214 z m -4.92048,-13.98308 q -0.1668,-0.47259 -0.37529,-1.09808 -0.1946,-0.62548 -0.3058,-1.13977 -0.13899,0.51429 -0.33359,1.13977 -0.18069,0.61159 -0.34749,1.09808 l -2.46024,6.78308 h 6.24095 z"/> - <path inkscape:connector-curvature="0" id="path10416" style="fill:#ffffff" d="m 205.01844,994.41059 v 17.08271 h -2.96063 v -17.08271 h -5.64327 v -2.84943 h 14.23327 v 2.84943 z"/> - <path inkscape:connector-curvature="0" id="path10418" style="fill:#ffffff" d="m 214.48411,1011.4933 v -19.93214 h 8.00621 q 1.83476,0 3.08573,0.54209 1.26487,0.52818 2.02935,1.38996 0.77839,0.86178 1.11198,1.95986 0.34749,1.08417 0.34749,2.21004 0,0.69499 -0.1668,1.41777 -0.15289,0.72278 -0.48649,1.40382 -0.33359,0.6672 -0.86178,1.2649 -0.52818,0.5977 -1.26487,1.0425 -0.72278,0.4448 -1.66796,0.7089 -0.94517,0.2502 -2.12665,0.2502 h -5.04558 v 7.7421 z m 8.17301,-10.5916 q 0.93128,0 1.55676,-0.2919 0.63939,-0.2918 1.02858,-0.75054 0.40309,-0.47259 0.56989,-1.04247 0.18069,-0.58379 0.18069,-1.15368 0,-0.52818 -0.15289,-1.09807 -0.1529,-0.56989 -0.52819,-1.04248 -0.37529,-0.48648 -1.02858,-0.79228 -0.63938,-0.31969 -1.62626,-0.31969 h -5.21238 v 6.49111 z"/> - <path inkscape:connector-curvature="0" id="path10420" style="fill:#ffffff" d="m 243.20084,1011.4933 -1.58457,-4.5869 h -8.06181 l -1.62626,4.5869 h -3.07183 l 7.20003,-19.93214 h 3.04403 l 7.17223,19.93214 z m -4.92049,-13.98308 q -0.16679,-0.47259 -0.37529,-1.09808 -0.19459,-0.62548 -0.30579,-1.13977 -0.139,0.51429 -0.33359,1.13977 -0.1807,0.61159 -0.3475,1.09808 l -2.46024,6.78308 h 6.24095 z"/> - <path inkscape:connector-curvature="0" id="path10422" style="fill:#ffffff" d="m 262.11828,1011.4933 -5.61546,-10.4248 -3.53052,4.2811 v 6.1437 h -2.96063 v -19.93214 h 2.96063 v 9.66024 l 7.68652,-9.66024 h 3.41932 l -5.57377,7.00543 7.08883,12.92671 z"/> - </g> - <path inkscape:connector-curvature="0" transform="matrix(1.1722666,0,0,1.1698527,-35.702248,-902.23506)" id="path7409" d="m 205.6102,852.21045 -61.58873,50.23762 63.47852,50.18562 62.97852,-49.89273 z m 0,2.69336 61.49721,47.3391 -59.85742,44.69937 -59.35742,-46.24226 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter8555);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" transform="matrix(1.1722666,0,0,1.1698527,-35.702248,-902.23506)" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter8627);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 206.6102,855.21045 -62.58873,49.98762 63.08267,49.53006 63.37437,-49.23717 z m 0,2.44336 60.49721,47.3391 -59.85742,43.94937 -59.35742,-45.49226 z" id="path7379"/> - <g transform="matrix(0.24223351,0,0,0.2452679,49.613102,-37.42984)" id="g7387"> - <path inkscape:connector-curvature="0" id="path7375" d="M 347.60793,794.8594 650.11625,563.22635 651.3167,285.17716 347.60793,513.07899 Z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#pattern8365);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#pattern8359);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 947.82284,794.8594 647.63668,565.01011 651.46648,285.02792 947.82284,513.07899 Z" id="path7377"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#d0d0d0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 347.60793,491.58726 650.11625,723.2203 650.00656,1025.5289 347.60793,792.47145 Z" id="rect7362"/> - <path inkscape:connector-curvature="0" id="path7365" d="M 952.62459,493.97524 650.11625,725.60827 v 300.88413 l 302.50834,-231.633 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#pattern8363);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8793);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 347.60793,794.8594 647.53609,565.26494 651.1664,284.87867 347.60793,513.07899 Z" id="path8334"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#pattern8290);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 651.3167,256.47479 346.51027,492.78115 651.3167,729.08754 952.72731,493.83649 Z m 0,28.38511 L 919.52825,492.79046 651.3167,700.71171 383.10463,492.79046 Z" id="rect7367"/> - <path inkscape:connector-curvature="0" id="path8236" d="M 347.30781,492.78125 650.11625,718.44434 650.00655,1025.6642 347.60791,792.18173 Z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#pattern8361);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient8768);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 952.62459,493.97524 651.04694,727.11115 650.11625,1026.4924 952.62459,794.8594 Z" id="path8265"/> - <path inkscape:connector-curvature="0" id="path8292" d="M 651.3167,256.47479 346.51027,492.78115 650.43924,726.45777 953.1518,493.41434 Z m 0,28.38511 L 919.52825,492.79046 651.3167,700.71171 383.10463,492.79046 Z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.42318061;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 347.35153,492.07775 v 2.53283 l 302.18418,233.08928 0.42255,297.11524 0.97183,-297.09292 301.63684,-231.84516 0.42256,-1.68854 L 650.38081,726.364 Z" id="path8631"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.181;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.85671175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter8758);color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="M 464.25,87.271484 400.77148,136.75 400.9375,136.87891 401,199.43945 V 200 l 0.36523,-0.28125 L 464,248.5 527,200 v -63 z m -0.75,64.613286 18.71094,14.40429 -17.96094,13.99805 -18.70508,-14.57813 z" transform="matrix(4.8017192,0,0,4.7759386,-1577.8815,-160.32864)" id="path8633" clip-path="url(#clipPath8650-0)"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.10242585;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 651.32316,700.70389 14.80875,12.54241 v 1.08472 l 0.77558,-1.70457 -14.83618,-12.49702 z" id="path7345"/> - <path inkscape:connector-curvature="0" id="path7347" d="m 651.32316,700.70389 14.80875,12.54241 v 1.08472 l 0.33685,-1.29366 -14.83617,-12.6066 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.10242585;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" id="path7355" d="m 383.82325,492.16293 -17.44114,-14.78866 -0.74814,0.53766 17.44113,14.82546 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.10242585;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:0.10242585;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 383.82325,492.16293 -17.3863,-14.76127 -0.33685,0.20894 17.41372,14.82546 z" id="path7357"/> - <path inkscape:connector-curvature="0" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.83288407;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" d="m 633.03281,270.66462 17.44114,14.78866 0.74814,-0.53766 -17.44113,-14.82546 z" id="path7361"/> - <path inkscape:connector-curvature="0" id="path7367" d="m 918.88258,493.36954 17.44114,14.78866 0.74814,-0.53766 -17.44113,-14.82546 z" style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.83288407;fill-rule:nonzero;stroke:none;stroke-width:0.99999964;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"/> - </g> -</svg> \ No newline at end of file +<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"> + <style type="text/css" id="current-color-scheme"> + .ColorScheme-Text { + color:#232629; + } + </style> + <path d="m8 1.9140625-.259766.1601563-4.740234 2.8945312v6.0625l5 3.054688 5-3.054688v-6.0625zm0 1.1699219v4.328125l-.476562.2929687-3.523438-2.1738281zm4 3.0351562v4.3496094l-4 2.445312v-4.3261714z" class="ColorScheme-Text" fill="currentColor"/> +</svg>
  14. Download patch discover.categories

    --- 5.17.5-2/discover.categories 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover.categories 2020-07-07 11:04:06.000000000 +0000 @@ -1,2 +1,3 @@ org.kde.plasma.libdiscover libdiscover IDENTIFIER [LIBDISCOVER_LOG] org.kde.plasma.discover discover IDENTIFIER [DISCOVER_LOG] +org.kde.plasma.libdiscover.backend libdiscover backend IDENTIFIER [LIBDISCOVER_BACKEND_LOG]
  15. Download patch discover/qml/ApplicationPage.qml
  16. Download patch discover/qml/DiscoverDrawer.qml

    --- 5.17.5-2/discover/qml/DiscoverDrawer.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/DiscoverDrawer.qml 2020-07-07 11:04:06.000000000 +0000 @@ -23,7 +23,7 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.kde.discover 2.0 import org.kde.discover.app 1.0 -import org.kde.kirigami 2.8 as Kirigami +import org.kde.kirigami 2.11 as Kirigami import "navigation.js" as Navigation Kirigami.GlobalDrawer { @@ -38,7 +38,7 @@ Kirigami.GlobalDrawer { width: Kirigami.Units.gridUnit * 14 property bool wideScreen: false - bannerImageSource: modal ? "qrc:/banners/banner.svg" : "" + bannerImageSource: "qrc:/banners/banner.svg" // In desktop view, it's a sidebar, and sidebars get the view BG color Kirigami.Theme.colorSet: modal ? Kirigami.Theme.Window : Kirigami.Theme.View @@ -62,62 +62,63 @@ Kirigami.GlobalDrawer { } function suggestSearchText(text) { - toploader.item.text = text - toploader.item.forceActiveFocus() + searchField.text = text + searchField.forceActiveFocus() } - topContent: ConditionalLoader { - id: toploader - condition: !modal - Layout.fillWidth: true - componentFalse: Item { - Layout.minimumHeight: 1 - } - componentTrue: Kirigami.AbstractApplicationHeader { - preferredHeight: 40 // Match Kirigami.ToolBarApplicationHeader, which is hardcoded to this - - RowLayout { - width: parent.width - anchors.centerIn: parent - - ToolButton { - Layout.leftMargin: Kirigami.Units.smallSpacing - icon.name: "go-home" - onClicked: Navigation.openHome() + // Give the search field keyboard focus by default + Component.onCompleted: { + searchField.forceActiveFocus(); + } - ToolTip { - text: i18n("Return to the Featured page") + header: Kirigami.AbstractApplicationHeader { + id: toolbar + visible: drawer.wideScreen + + RowLayout { + anchors.fill: parent + anchors.leftMargin: Kirigami.Units.smallSpacing + anchors.rightMargin: Kirigami.Units.smallSpacing + + SearchField { + id: searchField + + Layout.topMargin: Kirigami.Units.smallSpacing + Layout.bottomMargin: Kirigami.Units.smallSpacing + Layout.fillHeight: true + Layout.fillWidth: true + + visible: window.leftPage && (window.leftPage.searchFor !== null || window.leftPage.hasOwnProperty("search")) + + page: window.leftPage + + onCurrentSearchTextChanged: { + var curr = window.leftPage; + + if (pageStack.depth>1) + pageStack.pop() + + if (currentSearchText === "" && window.currentTopLevel === "" && !window.leftPage.category) { + Navigation.openHome() + } else if (!curr.hasOwnProperty("search")) { + if (currentSearchText) { + Navigation.clearStack() + Navigation.openApplicationList( { search: currentSearchText }) + } + } else { + curr.search = currentSearchText; + curr.forceActiveFocus() } } + } - SearchField { - id: searchField - - Layout.fillWidth: true - Layout.rightMargin: Kirigami.Units.smallSpacing + ToolButton { - visible: window.leftPage && (window.leftPage.searchFor !== null || window.leftPage.hasOwnProperty("search")) + icon.name: "go-home" + onClicked: Navigation.openHome() - page: window.leftPage - - onCurrentSearchTextChanged: { - var curr = window.leftPage; - - if (pageStack.depth>1) - pageStack.pop() - - if (currentSearchText === "" && window.currentTopLevel === "" && !window.leftPage.category) { - Navigation.openHome() - } else if (!curr.hasOwnProperty("search")) { - if (currentSearchText) { - Navigation.clearStack() - Navigation.openApplicationList( { search: currentSearchText }) - } - } else { - curr.search = currentSearchText; - curr.forceActiveFocus() - } - } + ToolTip { + text: i18n("Return to the Featured page") } } }
  17. Download patch libdiscover/backends/PackageKitBackend/PackageKitBackend.cpp
  18. Download patch libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp

    --- 5.17.5-2/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -136,7 +136,7 @@ bool FwupdSourcesBackend::removeSource(c return false; } -QList<QAction*> FwupdSourcesBackend::actions() const +QVariantList FwupdSourcesBackend::actions() const { return {} ; }
  19. Download patch libdiscover/backends/KNSBackend/KNSReviews.cpp

    --- 5.17.5-2/libdiscover/backends/KNSBackend/KNSReviews.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/KNSBackend/KNSReviews.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -67,7 +67,7 @@ Rating* KNSReviews::ratingForApplication void KNSReviews::fetchReviews(AbstractResource* app, int page) { Attica::ListJob< Attica::Comment >* job = - provider().requestComments(Attica::Comment::ContentComment, app->packageName(), QStringLiteral("0"), page, 10); + provider().requestComments(Attica::Comment::ContentComment, app->packageName(), QStringLiteral("0"), page - 1, 10); if (!job) { emit reviewsReady(app, {}, false); return; @@ -78,21 +78,29 @@ void KNSReviews::fetchReviews(AbstractRe m_fetching++; } -void KNSReviews::commentsReceived(Attica::BaseJob* j) -{ - m_fetching--; - Attica::ListJob<Attica::Comment>* job = static_cast<Attica::ListJob<Attica::Comment>*>(j); - Attica::Comment::List comments = job->itemList(); - +static QVector<ReviewPtr> createReviewList(AbstractResource* app, Attica::Comment::List comments, int depth = 0) { QVector<ReviewPtr> reviews; - AbstractResource* app = job->property("app").value<AbstractResource*>(); foreach(const Attica::Comment& comment, comments) { //TODO: language lookup? ReviewPtr r(new Review(app->name(), app->packageName(), QStringLiteral("en"), comment.subject(), comment.text(), comment.user(), comment.date(), true, comment.id().toInt(), comment.score()/10, 0, 0, QString() )); + r->addMetadata(QStringLiteral("NumberOfParents"), depth); reviews += r; + if (comment.childCount() > 0) { + reviews += createReviewList(app, comment.children(), depth + 1); + } } + return reviews; +} + +void KNSReviews::commentsReceived(Attica::BaseJob* j) +{ + m_fetching--; + Attica::ListJob<Attica::Comment>* job = static_cast<Attica::ListJob<Attica::Comment>*>(j); + + AbstractResource* app = job->property("app").value<AbstractResource*>(); + QVector<ReviewPtr> reviews = createReviewList(app, job->itemList()); emit reviewsReady(app, reviews, !reviews.isEmpty()); }
  20. Download patch debian/rules

    --- 5.17.5-2/debian/rules 2020-01-19 21:01:42.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/rules 2020-07-07 12:57:44.000000000 +0000 @@ -2,9 +2,15 @@ export DEB_LDFLAGS_MAINT_APPEND := -Wl,--as-needed +PLASMA_DISCOVER_FLAGS = -DBUILD_FlatpakBackend=ON \ + -DBUILD_SnapBackend=ON + %: dh $@ --with kf5,pkgkde_symbolshelper --buildsystem kf5 --without build_stamp +override_dh_auto_configure: + dh_auto_configure -- $(PLASMA_DISCOVER_FLAGS) + override_dh_missing: dh_missing --fail-missing
  21. Download patch debian/plasma-discover.lintian-overrides

    --- 5.17.5-2/debian/plasma-discover.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover.lintian-overrides 2020-07-07 12:57:44.000000000 +0000 @@ -0,0 +1 @@ +plasma-discover: executable-not-elf-or-script etc/xdg/autostart/org.kde.discover.notifier.desktop
  22. Download patch libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -151,7 +151,65 @@ bool FlatpakSourcesBackend::removeSource FlatpakSourceItem *sourceItem = static_cast<FlatpakSourceItem*>(sourceIt); g_autoptr(GCancellable) cancellable = g_cancellable_new(); g_autoptr(GError) error = nullptr; - if (flatpak_installation_remove_remote(sourceItem->flatpakInstallation(), id.toUtf8().constData(), cancellable, &error)) { + const auto installation = sourceItem->flatpakInstallation(); + + g_autoptr(GPtrArray) refs = flatpak_installation_list_remote_refs_sync(installation, id.toUtf8().constData(), cancellable, &error); + QHash<QString, QStringList> toRemoveHash; + toRemoveHash.reserve(refs->len); + QStringList toRemoveRefs; + toRemoveRefs.reserve(refs->len); + FlatpakBackend* backend = qobject_cast<FlatpakBackend*>(parent()); + for (uint i = 0; i < refs->len; i++) { + FlatpakRef *ref= FLATPAK_REF(g_ptr_array_index(refs, i)); + + g_autoptr(GError) error = nullptr; + FlatpakInstalledRef* installedRef = flatpak_installation_get_installed_ref(installation, flatpak_ref_get_kind(ref), flatpak_ref_get_name(ref), flatpak_ref_get_arch(ref), flatpak_ref_get_branch(ref), cancellable, &error); + if (installedRef) { + auto res = backend->getAppForInstalledRef(installation, installedRef); + const auto name = QString::fromUtf8(flatpak_ref_get_name(ref)); + const auto refString = QString::fromUtf8(flatpak_ref_format_ref(ref)); + if (!name.endsWith(QLatin1String(".Locale"))) { + if (res) + toRemoveHash[res->name()] << refString; + else + toRemoveHash[refString] << refString; + } + toRemoveRefs << refString; + } + } + QStringList toRemove; + toRemove.reserve(toRemoveHash.count()); + for (auto it = toRemoveHash.constBegin(), itEnd = toRemoveHash.constEnd(); it != itEnd; ++it) { + if (it.value().count() > 1) + toRemove << QStringLiteral("%1 - %2").arg(it.key(), it.value().join(QLatin1String(", "))); + else + toRemove << it.key(); + } + toRemove.sort(); + + if (!toRemove.isEmpty()) { + m_proceedFunctions.push([this, toRemoveRefs, installation, id] { + g_autoptr(GError) localError = nullptr; + g_autoptr(GCancellable) cancellable = g_cancellable_new(); + g_autoptr(FlatpakTransaction) transaction = flatpak_transaction_new_for_installation(installation, cancellable, &localError); + for (const QString& instRef : qAsConst(toRemoveRefs)) { + const QByteArray refString = instRef.toUtf8(); + flatpak_transaction_add_uninstall(transaction, refString.constData(), &localError); + if (localError) + return; + } + + if (flatpak_transaction_run(transaction, cancellable, &localError)) { + removeSource(id); + } + }); + + + Q_EMIT proceedRequest(i18n("Removing '%1'", id), i18n("To remove this repository, the following applications must be uninstalled:<ul><li>%1</li></ul>", toRemove.join(QStringLiteral("</li><li>")))); + return false; + } + + if (flatpak_installation_remove_remote(installation, id.toUtf8().constData(), cancellable, &error)) { m_sources->removeRow(sourceItem->row()); if (m_sources->rowCount() == 0) { @@ -159,20 +217,20 @@ bool FlatpakSourcesBackend::removeSource } return true; } else { - qWarning() << "Failed to remove " << id << " remote repository:" << error->message; + Q_EMIT passiveMessage(i18n("Failed to remove %1 remote repository: %2", id, QString::fromUtf8(error->message))); return false; } } else { - qWarning() << "couldn't find " << id; + Q_EMIT passiveMessage(i18n("Could not find %1", id)); return false; } return false; } -QList<QAction*> FlatpakSourcesBackend::actions() const +QVariantList FlatpakSourcesBackend::actions() const { - return { m_flathubAction }; + return { QVariant::fromValue<QObject*>(m_flathubAction) }; } bool FlatpakSourcesBackend::listRepositories(FlatpakInstallation* installation) @@ -248,7 +306,8 @@ void FlatpakSourcesBackend::addRemote(Fl const QUrl remoteUrl(QString::fromUtf8(flatpak_remote_get_url(remote))); const auto theActions = actions(); - for(QAction *action: theActions) { + for(const QVariant& act: theActions) { + QAction* action = qobject_cast<QAction*>(act.value<QObject*>()); if (action->toolTip() == id) { action->setEnabled(false); action->setVisible(false); @@ -259,6 +318,9 @@ void FlatpakSourcesBackend::addRemote(Fl it->setData(remoteUrl.isLocalFile() ? remoteUrl.toLocalFile() : remoteUrl.host(), Qt::ToolTipRole); it->setData(remoteUrl, Qt::StatusTipRole); it->setData(id, IdRole); +#if FLATPAK_CHECK_VERSION(1,4,0) + it->setData(QString::fromUtf8(flatpak_remote_get_icon(remote)), IconUrlRole); +#endif it->setFlatpakInstallation(installation); int idx = -1; @@ -320,3 +382,13 @@ int FlatpakSourcesBackend::originIndex(c auto item = sourceById(sourceId); return item ? item->row() : INT_MAX; } + +void FlatpakSourcesBackend::cancel() +{ + m_proceedFunctions.pop(); +} + +void FlatpakSourcesBackend::proceed() +{ + m_proceedFunctions.pop()(); +}
  23. Download patch debian/plasma-discover-backend-snap.lintian-overrides

    --- 5.17.5-2/debian/plasma-discover-backend-snap.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover-backend-snap.lintian-overrides 2020-07-07 12:57:44.000000000 +0000 @@ -0,0 +1 @@ +plasma-discover-backend-snap: desktop-command-not-in-package usr/share/applications/org.kde.discover.snap.urlhandler.desktop plasma-discover
  24. Download patch libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc

    --- 5.17.5-2/libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/KNSBackend/custom/discover_ktexteditor_codesnippets_core.knsrc 2020-07-07 11:04:06.000000000 +0000 @@ -1,6 +1,7 @@ [KNewStuff3] Name=Kate Snippets Name[ar]=قصاصات كيت +Name[ast]=Snippets de Kate Name[ca]=Retalls del Kate Name[ca@valencia]=Retalls de Kate Name[cs]=Ústřižky Kate @@ -9,6 +10,7 @@ Name[de]=Kate-Textbausteine Name[el]=Τμήματα κώδικα Kate Name[en_GB]=Kate Snippets Name[es]=Fragmentos de código de Kate +Name[et]=Kate koodijupid Name[eu]=Katen mozkinak Name[fi]=Kate-katkelmat Name[fr]=Fragments Kate @@ -25,7 +27,7 @@ Name[pl]=Wstawki Kate Name[pt]=Excertos do Kate Name[pt_BR]=Trechos do Kate Name[ru]=Фрагменты текста Kate -Name[sk]=Úryvky Kate +Name[sk]=Úryvky aplikácie Kate Name[sl]=Izrezki za Kate Name[sr]=Кејтини исечци Name[sr@ijekavian]=Кејтини исјечци
  25. Download patch discover/qml/Feedback.qml

    --- 5.17.5-2/discover/qml/Feedback.qml 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/Feedback.qml 2020-07-07 11:04:06.000000000 +0000 @@ -0,0 +1,71 @@ +import org.kde.kirigami 2.5 as Kirigami +import org.kde.userfeedback 1.0 as UserFeedback +import org.kde.kquickcontrolsaddons 2.0 as KQCA +import org.kde.discover.app 1.0 +import QtQml 2.0 + +UserFeedback.Provider +{ + readonly property list<QtObject> actions: [ + Kirigami.Action { + text: i18n("Submit usage information") + tooltip: i18n("Sends anonymized usage information to KDE so we can better understand our users. For more information see https://kde.org/privacypolicy-apps.php.") + onTriggered: { + provider.submit() + showPassiveNotification(i18n("Submitting usage information..."), "short", i18n("Configure"), provider.encouraged) + } + }, + Kirigami.Action { + text: i18n("Configure feedback...") + onTriggered: { + provider.encouraged() + } + } + ] + + id: provider + + submissionInterval: 7 + surveyInterval: 30 + feedbackServer: "https://telemetry.kde.org/" + encouragementInterval: 30 + applicationStartsUntilEncouragement: 1 + applicationUsageTimeUntilEncouragement: 1 + telemetryMode: UserFeedbackSettings.feedbackLevel + + function encouraged() { + KQCA.KCMShell.open("kcm_feedback"); + } + + property var lastSurvey: null + + function openSurvey() { + Qt.openUrlExternally(lastSurvey.url); + surveyCompleted(lastSurvey); + } + + onShowEncouragementMessage: { + showPassiveNotification(i18n("You can help us improving this application by sharing statistics and participate in surveys."), 5000, i18n("Contribute..."), encouraged) + } + + onSurveyAvailable: { + lastSurvey = survey + showPassiveNotification(i18n("We are looking for your feedback!"), 5000, i18n("Participate..."), openSurvey) + } + + UserFeedback.ApplicationVersionSource { mode: UserFeedback.Provider.BasicSystemInformation } + UserFeedback.PlatformInfoSource { mode: UserFeedback.Provider.BasicSystemInformation } + UserFeedback.QtVersionSource { mode: UserFeedback.Provider.BasicSystemInformation } + UserFeedback.StartCountSource { mode: UserFeedback.Provider.BasicUsageStatistics } + UserFeedback.UsageTimeSource { mode: UserFeedback.Provider.BasicUsageStatistics } + UserFeedback.LocaleInfoSource { mode: UserFeedback.Provider.DetailedSystemInformation } + UserFeedback.OpenGLInfoSource{ mode: UserFeedback.Provider.DetailedSystemInformation } + UserFeedback.ScreenInfoSource { mode: UserFeedback.Provider.DetailedSystemInformation } + UserFeedback.PropertySource { + mode: UserFeedback.Provider.DetailedUsageStatistics + name: "Application Source Name" + sourceId: "applicationSourceName" + data: { "value": ResourcesModel.applicationSourceName } + description: "The source for applications" + } +}
  26. Download patch libdiscover/backends/DummyBackend/DummyTransaction.cpp

    --- 5.17.5-2/libdiscover/backends/DummyBackend/DummyTransaction.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/DummyBackend/DummyTransaction.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -55,7 +55,7 @@ void DummyTransaction::iterateTransactio QTimer::singleShot(/*KRandom::random()%*/100, this, &DummyTransaction::iterateTransaction); } else #ifdef TEST_PROCEED - Q_EMIT proceedRequest(QStringLiteral("yadda yadda"), QStringLiteral("Biii BOooo<ul><li>A</li><li>A</li><li>A</li><li>A</li></ul>")); + Q_EMIT proceedRequest(QStringLiteral("yadda yadda"), QStringLiteral("Biii BOooo<ul><li>A</li><li>A</li>") + QStringLiteral("<li>A</li>").repeated(2) + QStringLiteral("<li>A</li></ul>")); #else finishTransaction(); #endif
  27. Download patch discover/qml/ApplicationDelegate.qml

    --- 5.17.5-2/discover/qml/ApplicationDelegate.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ApplicationDelegate.qml 2020-07-07 11:04:06.000000000 +0000 @@ -68,19 +68,36 @@ Kirigami.AbstractCard columns: 2 rows: delegateArea.compact ? 4 : 3 - Kirigami.Heading { - id: head - level: delegateArea.compact ? 3 : 2 + RowLayout { Layout.fillWidth: true - elide: Text.ElideRight - text: delegateArea.application.name - maximumLineCount: 1 + readonly property bool bigTitle: (head.implicitWidth + installButton.width) > parent.width + + Kirigami.Heading { + id: head + level: delegateArea.compact ? 3 : 2 + Layout.fillWidth: !category.visible || parent.bigTitle + elide: Text.ElideRight + text: delegateArea.application.name + maximumLineCount: 1 + } + + Kirigami.Heading { + id: category + level: 5 + Layout.fillWidth: true + elide: Text.ElideRight + text: i18nc("Part of a string like this: '<app name> - <category>'", "- %1", delegateArea.application.categoryDisplay) + maximumLineCount: 1 + opacity: 0.6 + visible: delegateArea.application.categoryDisplay && delegateArea.application.categoryDisplay !== page.title && !parent.bigTitle + } } InstallApplicationButton { id: installButton Layout.alignment: Qt.AlignVCenter | Qt.AlignRight Layout.rowSpan: delegateArea.compact ? 3 : 1 + compact: delegateArea.compact } RowLayout {
  28. Download patch debian/control

    --- 5.17.5-2/debian/control 2020-02-14 20:24:46.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/control 2020-07-07 12:57:44.000000000 +0000 @@ -6,39 +6,39 @@ Uploaders: Maximiliano Curia <maxy@debia Matthias Klumpp <mak@debian.org>, Build-Depends: cmake (>= 2.8.12), debhelper-compat (= 12), - extra-cmake-modules (>= 5.62.0~), + extra-cmake-modules (>= 5.70.0~), gettext, - kirigami2-dev (>= 5.42), + kirigami2-dev (>= 5.70.0~), libappstreamqt-dev (>= 0.11.1~), libdebconf-kde-dev (>= 1.0.0), - libflatpak-dev (>= 0.11.8~) [linux-any], - libfwupd-dev (>= 1.0.6~) [linux-any], - libkf5archive-dev (>= 5.62.0~), - libkf5attica-dev (>= 5.23~), - libkf5config-dev (>= 5.62.0~), - libkf5coreaddons-dev (>= 5.62.0~), - libkf5crash-dev (>= 5.62.0~), - libkf5dbusaddons-dev (>= 5.62.0~), - libkf5declarative-dev (>= 5.62.0~), - libkf5i18n-dev (>= 5.62.0~), - libkf5itemmodels-dev (>= 5.62.0~), - libkf5kio-dev (>= 5.62.0~), - libkf5newstuff-dev (>= 5.53~), - libkf5notifications-dev, - libkf5xmlgui-dev (>= 5.62.0~), + libflatpak-dev (>= 0.10.2), + libfwupd-dev, + libkf5archive-dev (>= 5.70.0~), + libkf5attica-dev (>= 5.70.0~), + libkf5config-dev (>= 5.70.0~), + libkf5coreaddons-dev (>= 5.70.0~), + libkf5crash-dev (>= 5.70.0~), + libkf5dbusaddons-dev (>= 5.70.0~), + libkf5declarative-dev (>= 5.70.0~), + libkf5i18n-dev (>= 5.70.0~), + libkf5itemmodels-dev (>= 5.70.0~), + libkf5kio-dev (>= 5.70.0~), + libkf5newstuff-dev (>= 5.70.0~), + libkf5notifications-dev (>= 5.70.0~), + libkf5xmlgui-dev (>= 5.70.0~), libmarkdown2-dev, libpackagekitqt5-dev (>= 1.0.1), libqca-qt5-2-dev, libqt5svg5-dev (>= 5.4.0~), - libsnapd-qt-dev (>= 1.30) [linux-any], + libsnapd-qt-dev (>= 1.30), pkg-config, pkg-kde-tools (>= 0.15.16), qtbase5-dev (>= 5.12.0~), qtdeclarative5-dev (>= 5.12.0~), -Standards-Version: 4.5.0 +Standards-Version: 4.4.1 Homepage: https://projects.kde.org/projects/kde/workspace/discover -Vcs-Browser: https://salsa.debian.org/qt-kde-team/kde/plasma-discover -Vcs-Git: https://salsa.debian.org/qt-kde-team/kde/plasma-discover.git +Vcs-Browser: https://code.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/discover +Vcs-Git: https://git.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/discover Package: plasma-discover Architecture: any @@ -57,8 +57,9 @@ Depends: appstream (>= 0.8), Recommends: apt-config-icons-hidpi, apt-config-icons-large, apt-config-icons-large-hidpi, - software-properties-kde, -Suggests: plasma-discover-backend-flatpak [linux-any] + plasma-discover-backend-fwupd, + plasma-discover-backend-snap, + software-properties-qt Description: Discover software management suite Discover is a graphical software manager for the Plasma workspace. It helps users easily and quickly find applications and other software @@ -72,11 +73,14 @@ Description: Discover software managemen installing them. Package: plasma-discover-backend-flatpak -Architecture: linux-any +Architecture: any Depends: flatpak, plasma-discover (= ${binary:Version}), + xdg-desktop-portal-kde, ${misc:Depends}, ${shlibs:Depends}, +Breaks: plasma-discover-flatpak-backend (<< 5.16.4~) +Replaces: plasma-discover-flatpak-backend (<< 5.16.4~) Description: Discover software management suite - Flatpak backend Discover is a graphical software manager for the Plasma workspace. It helps users easily and quickly find applications and other software @@ -86,11 +90,14 @@ Description: Discover software managemen bundling system. Package: plasma-discover-backend-snap -Architecture: linux-any +Architecture: any Depends: plasma-discover (= ${binary:Version}), + snapd, + xdg-desktop-portal-kde, ${misc:Depends}, ${shlibs:Depends}, -Recommends: snapd +Breaks: plasma-discover-snap-backend (<< 5.16.4~) +Replaces: plasma-discover-snap-backend (<< 5.16.4~) Description: Discover software management suite - Snap backend Discover is a graphical software manager for the Plasma workspace. It helps users easily and quickly find applications and other software @@ -100,7 +107,7 @@ Description: Discover software managemen bundling system. Package: plasma-discover-backend-fwupd -Architecture: linux-any +Architecture: any Depends: plasma-discover (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}, @@ -120,3 +127,25 @@ Description: Discover software manager s . This package contains data files shared by various parts of the Discover suite. + +Package: plasma-discover-flatpak-backend +Architecture: all +Section: oldlibs +Priority: optional +Depends: plasma-discover-backend-flatpak, ${misc:Depends} +Description: Discover Flatpak backend - transitional package + This transitional package allows one to migrate to the renamed package + providing the Plasma Discover Flatpak backend. + . + It can be safely removed after the installation. + +Package: plasma-discover-snap-backend +Architecture: all +Section: oldlibs +Priority: optional +Depends: plasma-discover-backend-snap, ${misc:Depends} +Description: Discover Flatpak backend - transitional package + This transitional package allows one to migrate to the renamed package + providing the Plasma Discover Snap backend. + . + It can be safely removed after the installation.
  29. Download patch discover/qml/SearchPage.qml

    --- 5.17.5-2/discover/qml/SearchPage.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/SearchPage.qml 2020-07-07 11:04:06.000000000 +0000 @@ -43,7 +43,7 @@ ApplicationsListPage { Connections { ignoreUnknownSignals: true target: searchPage - onShown: { + function onShown() { searchField.forceActiveFocus() } }
  30. Download patch discover/qml/ApplicationsListPage.qml

    --- 5.17.5-2/discover/qml/ApplicationsListPage.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ApplicationsListPage.qml 2020-07-07 11:04:06.000000000 +0000 @@ -24,7 +24,7 @@ import QtQuick.Window 2.2 import "navigation.js" as Navigation import org.kde.discover.app 1.0 import org.kde.discover 2.0 -import org.kde.kirigami 2.4 as Kirigami +import org.kde.kirigami 2.12 as Kirigami DiscoverPage { id: page @@ -43,29 +43,19 @@ DiscoverPage { property alias count: apps.count property alias listHeader: apps.header property alias listHeaderPositioning: apps.headerPositioning - property alias sortProperty: saveChanges.property + property string sortProperty: "appsListPageSorting" property bool compact: page.width < 550 || !applicationWindow().wideScreen property bool showRating: true property bool canNavigate: true readonly property alias subcategories: appsModel.subcategories - function escapeHtml(unsafe) { - return unsafe - .replace(/&/g, "&amp;") - .replace(/</g, "&lt;") - .replace(/>/g, "&gt;") - .replace(/"/g, "&quot;") - .replace(/'/g, "&#039;"); - } - - background: Rectangle { - color: Kirigami.Theme.backgroundColor - Kirigami.Theme.colorSet: Kirigami.Theme.Window - Kirigami.Theme.inherit: false - } + function stripHtml(input) { + var regex = /(<([^>]+)>)/ig + return input.replace(regex, ""); + } - title: search.length>0 ? i18n("Search: %1", escapeHtml(search)) + title: search.length>0 ? i18n("Search: %1", stripHtml(search)) : category ? category.name : "" signal clearSearch() @@ -81,13 +71,6 @@ DiscoverPage { exclusive: true } - Binding { - id: saveChanges - target: DiscoverSettings - property: "appsListPageSorting" - value: appsModel.sortRole - } - contextualActions: [ Kirigami.Action { visible: !appsModel.sortByRelevancy @@ -96,7 +79,7 @@ DiscoverPage { ActionGroup.group: sortGroup text: i18n("Name") onTriggered: { - appsModel.sortRole = ResourcesProxyModel.NameRole + DiscoverSettings[page.sortProperty] = ResourcesProxyModel.NameRole } checkable: true checked: appsModel.sortRole === ResourcesProxyModel.NameRole @@ -105,7 +88,7 @@ DiscoverPage { ActionGroup.group: sortGroup text: i18n("Rating") onTriggered: { - appsModel.sortRole = ResourcesProxyModel.SortableRatingRole + DiscoverSettings[page.sortProperty] = ResourcesProxyModel.SortableRatingRole } checkable: true checked: appsModel.sortRole === ResourcesProxyModel.SortableRatingRole @@ -114,7 +97,7 @@ DiscoverPage { ActionGroup.group: sortGroup text: i18n("Size") onTriggered: { - appsModel.sortRole = ResourcesProxyModel.SizeRole + DiscoverSettings[page.sortProperty] = ResourcesProxyModel.SizeRole } checkable: true checked: appsModel.sortRole === ResourcesProxyModel.SizeRole @@ -123,7 +106,7 @@ DiscoverPage { ActionGroup.group: sortGroup text: i18n("Release Date") onTriggered: { - appsModel.sortRole = ResourcesProxyModel.ReleaseDateRole + DiscoverSettings[page.sortProperty] = ResourcesProxyModel.ReleaseDateRole } checkable: true checked: appsModel.sortRole === ResourcesProxyModel.ReleaseDateRole @@ -153,32 +136,43 @@ DiscoverPage { currentIndex: -1 delegate: ApplicationDelegate { application: model.application - compact: page.compact + compact: !applicationWindow().wideScreen showRating: page.showRating } - Label { + Kirigami.PlaceholderMessage { anchors.centerIn: parent - opacity: apps.count == 0 && !appsModel.isBusy ? 0.3 : 0 - Behavior on opacity { PropertyAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } } - text: i18n("Sorry, nothing found...") + width: parent.width - (Kirigami.Units.largeSpacing * 4) + + opacity: apps.count == 0 && !appsModel.isBusy ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } } + + icon.name: "edit-none" + text: i18n("Sorry, nothing found") } - footer: BusyIndicator { + footer: ColumnLayout { anchors.horizontalCenter: parent.horizontalCenter visible: appsModel.isBusy && apps.atYEnd - running: visible - opacity: visible ? 1 : 0 - Behavior on opacity { - PropertyAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } + opacity: visible ? 0.5 : 0 + + Item { + Layout.preferredHeight: units.gridUnit } - Label { - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.top - } + Kirigami.Heading { + level: 2 + Layout.alignment: Qt.AlignCenter text: i18n("Still looking...") } + BusyIndicator { + running: parent.visible + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: Kirigami.Units.gridUnit * 4 + Layout.preferredHeight: Kirigami.Units.gridUnit * 4 + } + Behavior on opacity { + PropertyAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } + } } } }
  31. Download patch discover/autotests/DiscoverTest.qml

    --- 5.17.5-2/discover/autotests/DiscoverTest.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/autotests/DiscoverTest.qml 2020-07-07 11:04:06.000000000 +0000 @@ -38,6 +38,7 @@ Item } function chooseChild(obj, validator) { + verify(obj, "can't find a null's child") if (validator(obj)) return true; var children = obj.data ? obj.data : obj.contentData @@ -95,7 +96,7 @@ Item Connections { target: ResourcesModel property bool done: false - onIsFetchingChanged: { + function onIsFetchingChanged() { if (ResourcesModel.isFetching || done) return;
  32. Download patch debian/plasma-discover.install

    --- 5.17.5-2/debian/plasma-discover.install 2020-01-18 10:24:07.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover.install 2020-07-07 12:57:44.000000000 +0000 @@ -1,15 +1,19 @@ etc/xdg/autostart/org.kde.discover.notifier.desktop +#usr/lib/*/qt5/plugins/discover/fwupd-backend.so usr/bin/plasma-discover +usr/bin/plasma-discover-update usr/lib/*/libexec/DiscoverNotifier usr/lib/*/libexec/kf5/discover/runservice -usr/lib/*/plasma-discover/ +usr/lib/*/plasma-discover/libDiscoverCommon.so +usr/lib/*/plasma-discover/libDiscoverNotifiers.so usr/lib/*/qt5/plugins/discover-notifier/DiscoverPackageKitNotifier.so usr/lib/*/qt5/plugins/discover/kns-backend.so usr/lib/*/qt5/plugins/discover/packagekit-backend.so usr/share/applications/org.kde.discover.apt.urlhandler.desktop usr/share/applications/org.kde.discover.desktop usr/share/applications/org.kde.discover.notifier.desktop -usr/share/applications/org.kde.discover.snap.urlhandler.desktop usr/share/applications/org.kde.discover.urlhandler.desktop -usr/share/knotifications5/ -usr/share/metainfo/ +usr/share/knotifications5/discoverabstractnotifier.notifyrc +usr/share/metainfo/org.kde.discover.appdata.xml +usr/share/metainfo/org.kde.discover.packagekit.appdata.xml +usr/share/qlogging-categories5/discover.categories
  33. Download patch libdiscover/backends/PackageKitBackend/org.kde.discover.packagekit.appdata.xml

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/org.kde.discover.packagekit.appdata.xml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/org.kde.discover.packagekit.appdata.xml 2020-07-07 11:04:06.000000000 +0000 @@ -10,15 +10,18 @@ <name xml:lang="de">PackageKit-Backend</name> <name xml:lang="en-GB">PackageKit backend</name> <name xml:lang="es">Motor PackageKit</name> + <name xml:lang="et">PackageKiti taustaprogramm</name> <name xml:lang="eu">PackageKit bizkarraldekoa</name> <name xml:lang="fi">PackageKit-taustaosa</name> <name xml:lang="fr">Moteur PackageKit</name> <name xml:lang="gl">Infraestrutura de PackageKit</name> + <name xml:lang="hu">PackageKit backend</name> <name xml:lang="ia">Retro administration de PackageKit (equipamento de pacchetto)</name> <name xml:lang="id">Backend PackageKit</name> <name xml:lang="it">Motore PackageKit</name> <name xml:lang="ko">PackageKit 백엔드</name> <name xml:lang="lt">PackageKit vidinė pusė</name> + <name xml:lang="ml">PackageKit ബാക്കെൻഡ്</name> <name xml:lang="nb">PackageKit-motor</name> <name xml:lang="nl">PackageKit-backend</name> <name xml:lang="nn">PackageKit-motor</name> @@ -27,9 +30,10 @@ <name xml:lang="pt">Infra-estrutura do PackageKit</name> <name xml:lang="pt-BR">Infraestrutura PackageKit</name> <name xml:lang="ru">Модуль поддержки PackageKit</name> - <name xml:lang="sk">Backend PackageKit</name> + <name xml:lang="sk">Podporný program pre PackageKit</name> <name xml:lang="sl">Zaledje PackageKit</name> <name xml:lang="sv">Gränssnitt för PackageKit</name> + <name xml:lang="tg">Коркардкунандаи PackageKit</name> <name xml:lang="uk">Модуль PackageKit</name> <name xml:lang="x-test">xxPackageKit backendxx</name> <name xml:lang="zh-CN">PackageKit 后端</name> @@ -42,15 +46,18 @@ <summary xml:lang="de">Integriert Distributions-Anwendungen in Discover</summary> <summary xml:lang="en-GB">Integrates distribution applications into Discover</summary> <summary xml:lang="es">Integra aplicaciones de la distribución en Discover</summary> + <summary xml:lang="et">Distributsiooni rakenduste lõimimine Discoverisse</summary> <summary xml:lang="eu">Banaketaren aplikazioak Dicover-ren integratzen ditu</summary> <summary xml:lang="fi">Yhdistää jakelun sovellukset Discoveriin</summary> <summary xml:lang="fr">Intègre les applications de distribution au sein de Discover</summary> <summary xml:lang="gl">Integra aplicacións da distribución con Discover</summary> + <summary xml:lang="hu">A disztribúció alkalmazásainak integrálása a Discoverbe</summary> <summary xml:lang="ia">Integrate appicationes de distribution in Discover</summary> <summary xml:lang="id">Aplikasi distribusi terintegrasi ke dalam Discover</summary> <summary xml:lang="it">Integra le applicazioni della distribuzione in Discover</summary> <summary xml:lang="ko">배포판 프로그램을 발견에 통합</summary> <summary xml:lang="lt">Integruoja platinimo programas į Discover</summary> + <summary xml:lang="ml">ഡിസ്‌കവറിലേക്ക് വിതരണ ആപ്ലിക്കേഷനുകൾ സംയോജിപ്പിക്കുന്നു</summary> <summary xml:lang="nb">Integrerer distribusjonsprogrammer i Discover</summary> <summary xml:lang="nl">Integreert distributie-toepassingen in Discover</summary> <summary xml:lang="nn">Integrerer distribusjonsprogram i Discover</summary> @@ -59,9 +66,10 @@ <summary xml:lang="pt">Integra as aplicações da distribuição no Discover</summary> <summary xml:lang="pt-BR">Integra aplicativos da distribuição no Discover</summary> <summary xml:lang="ru">Добавление поддержки приложений из дистрибутива ОС в центр программ Discover</summary> - <summary xml:lang="sk">Integruje distribučné aplikácie do Discovera</summary> + <summary xml:lang="sk">Integruje aplikácie z distribúcie do aplikácie Discover</summary> <summary xml:lang="sl">V Discover vgradi programe distribucije</summary> <summary xml:lang="sv">Integrerar distributionsprogram i Discover</summary> + <summary xml:lang="tg">Барномаҳои низоми амалкунандаро ба барномаи Кашфиёт дарунсохт мекунад.</summary> <summary xml:lang="uk">Інтегрує програми зі сховищ дистрибутива до Discover</summary> <summary xml:lang="x-test">xxIntegrates distribution applications into Discoverxx</summary> <summary xml:lang="zh-CN">将发行版应用程序集成到Discover中</summary> @@ -78,15 +86,18 @@ <developer_name xml:lang="de">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="en-GB">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="es">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="et">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="eu">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="fi">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="fr">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="gl">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="hu">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="ia">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="id">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="it">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="ko">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="lt">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="ml">അലെയ്‌സ് പോൽ ഗോൺസാലസ്</developer_name> <developer_name xml:lang="nb">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="nl">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="nn">Aleix Pol Gonzalez</developer_name> @@ -98,15 +109,16 @@ <developer_name xml:lang="sk">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="sl">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="sv">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="tg">Алейкс Пол Гонзалес (Aleix Pol Gonzalez)</developer_name> <developer_name xml:lang="uk">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="x-test">xxAleix Pol Gonzalezxx</developer_name> <developer_name xml:lang="zh-CN">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="zh-TW">Aleix Pol Gonzalez</developer_name> <icon type="stock">system-software-install</icon> <releases> - <release version="5.17.5" date="2020-01-07"/> - <release version="5.17.5" date="2020-01-07"/> - <release version="5.17.4" date="2019-12-03"/> - <release version="5.17.3" date="2019-11-12"/> + <release version="5.19.3" date="2020-07-07"/> + <release version="5.19.2" date="2020-06-23"/> + <release version="5.19.1" date="2020-06-16"/> + <release version="5.19.0" date="2020-06-09"/> </releases> </component>
  34. Download patch debian/plasma-discover-backend-snap.install

    --- 5.17.5-2/debian/plasma-discover-backend-snap.install 2020-01-18 10:24:07.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover-backend-snap.install 2020-07-07 12:57:44.000000000 +0000 @@ -1,7 +1,9 @@ usr/lib/*/libexec/discover/SnapMacaroonDialog usr/lib/*/qt5/plugins/discover/snap-backend.so usr/lib/kauth/libexec/libsnap_helper +usr/share/applications/org.kde.discover.snap.urlhandler.desktop usr/share/dbus-1/system-services/org.kde.discover.libsnapclient.service usr/share/dbus-1/system.d/org.kde.discover.libsnapclient.conf usr/share/libdiscover/categories/snap-backend-categories.xml +usr/share/metainfo/org.kde.discover.snap.appdata.xml usr/share/polkit-1/actions/org.kde.discover.libsnapclient.policy
  35. Download patch discover/plasmauserfeedback.kcfgc

    --- 5.17.5-2/discover/plasmauserfeedback.kcfgc 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/plasmauserfeedback.kcfgc 2020-07-07 11:04:06.000000000 +0000 @@ -0,0 +1,5 @@ +File=plasmauserfeedback.kcfg +ClassName=PlasmaUserFeedback +GenerateProperties=true +Mutators=true +IncludeFiles=KUserFeedback/Provider
  36. Download patch debian/plasma-discover-backend-flatpak.install

    --- 5.17.5-2/debian/plasma-discover-backend-flatpak.install 2020-01-18 10:24:07.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover-backend-flatpak.install 2020-07-07 12:57:44.000000000 +0000 @@ -3,3 +3,4 @@ usr/lib/*/qt5/plugins/discover/flatpak-b usr/share/applications/org.kde.discover-flatpak.desktop usr/share/icons/hicolor/scalable/apps/flatpak-discover.svg usr/share/libdiscover/categories/flatpak-backend-categories.xml +usr/share/metainfo/org.kde.discover.flatpak.appdata.xml
  37. Download patch CMakeLists.txt

    --- 5.17.5-2/CMakeLists.txt 2020-01-07 15:20:13.000000000 +0000 +++ 5.19.3-0ubuntu1/CMakeLists.txt 2020-07-07 11:04:31.000000000 +0000 @@ -1,11 +1,11 @@ project(discover) -set(PROJECT_VERSION "5.17.5") +set(PROJECT_VERSION "5.19.3") set(PROJECT_VERSION_MAJOR 5) cmake_minimum_required(VERSION 2.8.12) -set(QT_MIN_VERSION "5.12.0") -set(KF5_MIN_VERSION "5.62.0") +set(QT_MIN_VERSION "5.14.0") +set(KF5_MIN_VERSION "5.70.0") find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE) @@ -20,6 +20,7 @@ include(ECMMarkAsTest) include(ECMAddTests) include(GenerateExportHeader) include(ECMQtDeclareLoggingCategory) +include(KDEClangFormat) find_package(PkgConfig REQUIRED) @@ -31,11 +32,11 @@ find_package(AppStreamQt 0.11.1 CONFIG) find_package(KF5Attica 5.23 CONFIG) find_package(KF5NewStuff 5.53 CONFIG) -set(CMAKE_AUTORCC ON) - pkg_check_modules(Flatpak IMPORTED_TARGET flatpak>=0.11.8) pkg_check_modules(Fwupd IMPORTED_TARGET fwupd>=1.0.6) pkg_check_modules(Markdown IMPORTED_TARGET libmarkdown) +find_package(KUserFeedback) + if(NOT CMAKE_VERSION VERSION_LESS "3.10.0") # CMake 3.9+ warns about automoc on files without Q_OBJECT, and doesn't know about other macros. @@ -48,6 +49,7 @@ configure_file(DiscoverVersion.h.in Disc add_subdirectory(libdiscover) add_subdirectory(discover) add_subdirectory(exporter) +add_subdirectory(update) option(WITH_NOTIFIER "Build and install the notifier plasmoid" ON) if(WITH_NOTIFIER) @@ -78,19 +80,17 @@ set_package_properties(AppStreamQt PROPE URL "https://www.freedesktop.org" PURPOSE "Required to build the PackageKit and Flatpak backends" TYPE OPTIONAL) -set_package_properties(FLATPAK PROPERTIES - DESCRIPTION "Library that exposes flatpak repositories" - URL "https://www.freedesktop.org" - PURPOSE "Required to build the Flatpak backend" - TYPE OPTIONAL) -set_package_properties(LIBFWUPD PROPERTIES - DESCRIPTION "Library that exposes fwupd" - URL "https://www.fwupd.org" - PURPOSE "Required to build the Fwupd backend" - TYPE OPTIONAL) +add_feature_info(Flatpak Flatpak_FOUND + "Library that exposes flatpak repositories. Required to build the Flatpak backend" +) +add_feature_info(Fwupd Fwupd_FOUND "Exposes fwupd") feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) +# add clang-format target for all our real source files +file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h) +kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) + install(FILES discover.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) find_package(KF5I18n CONFIG REQUIRED)
  38. Download patch libdiscover/backends/FwupdBackend/FwupdBackend.cpp

    --- 5.17.5-2/libdiscover/backends/FwupdBackend/FwupdBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FwupdBackend/FwupdBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -116,7 +116,7 @@ FwupdResource * FwupdBackend::createRele void FwupdBackend::addUpdates() { g_autoptr(GError) error = nullptr; - g_autoptr(GPtrArray) devices = fwupd_client_get_devices(client, nullptr, &error); + g_autoptr(GPtrArray) devices = fwupd_client_get_devices(client, m_cancellable, &error); if (!devices) { @@ -127,7 +127,7 @@ void FwupdBackend::addUpdates() return; } - for(uint i = 0; i < devices->len; i++) + for(uint i = 0; i < devices->len && !g_cancellable_is_cancelled(m_cancellable); i++) { FwupdDevice *device = (FwupdDevice *)g_ptr_array_index(devices, i); @@ -141,7 +141,7 @@ void FwupdBackend::addUpdates() continue; g_autoptr(GError) error2 = nullptr; - g_autoptr(GPtrArray) rels = fwupd_client_get_upgrades(client, fwupd_device_get_id(device), nullptr, &error2); + g_autoptr(GPtrArray) rels = fwupd_client_get_upgrades(client, fwupd_device_get_id(device), m_cancellable, &error2); if (rels) { fwupd_device_add_release(device, (FwupdRelease *)g_ptr_array_index(rels, 0)); auto res = createApp(device); @@ -360,7 +360,7 @@ void FwupdBackend::handleError(GError *p QString FwupdBackend::cacheFile(const QString &kind, const QString &basename) { - const QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); + const QDir cacheDir(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation)); const QString cacheDirFile = cacheDir.filePath(kind); if (!QFileInfo::exists(cacheDirFile) && !cacheDir.mkpath(kind)) @@ -390,11 +390,11 @@ void FwupdBackend::checkForUpdates() continue; g_autoptr(GError) error = nullptr; - g_autoptr(GPtrArray) releases = fwupd_client_get_releases(client, fwupd_device_get_id(device), nullptr, &error); + g_autoptr(GPtrArray) releases = fwupd_client_get_releases(client, fwupd_device_get_id(device), m_cancellable, &error); if (error) { if (g_error_matches(error, FWUPD_ERROR, FWUPD_ERROR_NOT_SUPPORTED)) { - qWarning() << "fwupd: Device not supported:" << fwupd_device_get_name(device); + qWarning() << "fwupd: Device not supported:" << fwupd_device_get_name(device) << error->message; continue; } if (g_error_matches(error, FWUPD_ERROR, FWUPD_ERROR_INVALID_FILE)) { @@ -429,10 +429,11 @@ void FwupdBackend::checkForUpdates() g_autoptr(GError) error = nullptr; /* get devices */ - GPtrArray* devices = fwupd_client_get_devices(client, m_cancellable, nullptr); - + GPtrArray* devices = fwupd_client_get_devices(client, m_cancellable, &error); + handleError(error); g_autoptr(GPtrArray) remotes = fwupd_client_get_remotes(client, m_cancellable, &error); + handleError(error); for(uint i = 0; remotes && i < remotes->len; i++) { FwupdRemote *remote = (FwupdRemote *)g_ptr_array_index(remotes, i); @@ -456,10 +457,13 @@ int FwupdBackend::updatesCount() const ResultsStream* FwupdBackend::search(const AbstractResourcesBackend::Filters& filter) { - if (filter.resourceUrl.scheme() == QLatin1String("fwupd")) { - return findResourceByPackageName(filter.resourceUrl); - } else if (!filter.resourceUrl.isEmpty()) { - return resourceForFile(filter.resourceUrl); + if (!filter.resourceUrl.isEmpty()) { + if (filter.resourceUrl.scheme() == QLatin1String("fwupd")) { + return findResourceByPackageName(filter.resourceUrl); + } else if (filter.resourceUrl.isLocalFile()) { + return resourceForFile(filter.resourceUrl); + } + return new ResultsStream(QStringLiteral("FwupdStream-empty"), {}); } auto stream = new ResultsStream(QStringLiteral("FwupdStream")); @@ -525,15 +529,19 @@ Transaction* FwupdBackend::removeApplica ResultsStream* FwupdBackend::resourceForFile(const QUrl& path) { + if (!path.isLocalFile()) + return new ResultsStream(QStringLiteral("FwupdStream-void"), {}); + g_autoptr(GError) error = nullptr; + const QString fileName = path.fileName(); QMimeDatabase db; - QMimeType type = db.mimeTypeForFile(path.fileName()); + QMimeType type = db.mimeTypeForFile(fileName); FwupdResource* app = nullptr; if (type.isValid() && type.inherits(QStringLiteral("application/vnd.ms-cab-compressed"))) { - g_autofree gchar *filename = path.fileName().toUtf8().data(); + g_autofree gchar *filename = fileName.toUtf8().data(); g_autoptr(GPtrArray) devices = fwupd_client_get_details(client, filename, nullptr, &error); if (devices)
  39. Download patch libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -40,7 +40,7 @@ class PackageKitSourcesBackend : public bool removeSource(const QString& id) override; QAbstractItemModel* sources() override; - QList<QAction*> actions() const override; + QVariantList actions() const override; void transactionError(PackageKit::Transaction::Error, const QString& message); @@ -50,7 +50,7 @@ class PackageKitSourcesBackend : public QStandardItem* findItemForId(const QString &id) const; PKSourcesModel* m_sources; - QList<QAction*> m_actions; + QVariantList m_actions; }; #endif // PACKAGEKITSOURCESBACKEND_H
  40. Download patch libdiscover/backends/FlatpakBackend/FlatpakBackend.h

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -65,6 +65,9 @@ public: FlatpakResource * addAppFromFlatpakBundle(const QUrl &url); FlatpakResource * addAppFromFlatpakRef(const QUrl &url); + FlatpakResource * getAppForInstalledRef(FlatpakInstallation *flatpakInstallation, FlatpakInstalledRef *ref) const; + + FlatpakSourcesBackend *sources() const { return m_sources; } private Q_SLOTS: void onFetchMetadataFinished(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource, const QByteArray &metadata); @@ -82,7 +85,6 @@ private: void integrateRemote(FlatpakInstallation *flatpakInstallation, FlatpakRemote *remote); FlatpakRemote * getFlatpakRemoteByUrl(const QString &url, FlatpakInstallation *installation) const; FlatpakInstalledRef * getInstalledRefForApp(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) const; - FlatpakResource * getAppForInstalledRef(FlatpakInstallation *flatpakInstallation, FlatpakInstalledRef *ref) const; FlatpakResource * getRuntimeForApp(FlatpakResource *resource) const; void addResource(FlatpakResource *resource);
  41. Download patch libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -605,6 +605,9 @@ void FlatpakBackend::loadAppsFromAppstre { for (auto installation : qAsConst(m_installations)) { // Load applications from appstream metadata + if (g_cancellable_is_cancelled(m_cancellable)) + break; + if (!loadAppsFromAppstreamData(installation)) { qWarning() << "Failed to load packages from appstream data from installation" << installation; } @@ -624,7 +627,7 @@ bool FlatpakBackend::loadAppsFromAppstre for (uint i = 0; i < remotes->len; i++) { FlatpakRemote *remote = FLATPAK_REMOTE(g_ptr_array_index(remotes, i)); - g_autoptr(GFile) fileTimestamp = flatpak_remote_get_appstream_timestamp(remote, nullptr); + g_autoptr(GFile) fileTimestamp = flatpak_remote_get_appstream_timestamp(remote, flatpak_get_default_arch()); QFileInfo fileInfo = QFileInfo(QString::fromUtf8(g_file_get_path(fileTimestamp))); // Refresh appstream metadata in case they have never been refreshed or the cache is older than 6 hours @@ -634,7 +637,6 @@ bool FlatpakBackend::loadAppsFromAppstre integrateRemote(flatpakInstallation, remote); } } - return true; } @@ -798,7 +800,7 @@ void FlatpakBackend::loadRemoteUpdates(F { auto fw = new QFutureWatcher<GPtrArray *>(this); connect(fw, &QFutureWatcher<GPtrArray *>::finished, this, [this, installation, fw](){ - auto refs = fw->result(); + g_autoptr(GPtrArray) refs = fw->result(); onFetchUpdatesFinished(installation, refs); fw->deleteLater(); acquireFetching(false); @@ -806,6 +808,10 @@ void FlatpakBackend::loadRemoteUpdates(F acquireFetching(true); fw->setFuture(QtConcurrent::run(&m_threadPool, [installation, this]() -> GPtrArray * { g_autoptr(GError) localError = nullptr; + if (g_cancellable_is_cancelled(m_cancellable)) { + qWarning() << "don't issue commands after cancelling"; + return {}; + } GPtrArray *refs = flatpak_installation_list_installed_refs_for_update(installation, m_cancellable, &localError); if (!refs) { qWarning() << "Failed to get list of installed refs for listing updates: " << localError->message; @@ -814,15 +820,13 @@ void FlatpakBackend::loadRemoteUpdates(F })); } -void FlatpakBackend::onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates) +void FlatpakBackend::onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *fetchedUpdates) { - if (!updates) { + if (!fetchedUpdates) { qWarning() << "could not get updates for" << flatpakInstallation; return; } - g_autoptr(GPtrArray) fetchedUpdates = updates; - for (uint i = 0; i < fetchedUpdates->len; i++) { FlatpakInstalledRef *ref = FLATPAK_INSTALLED_REF(g_ptr_array_index(fetchedUpdates, i)); FlatpakResource *resource = getAppForInstalledRef(flatpakInstallation, ref); @@ -985,7 +989,7 @@ void FlatpakBackend::onFetchMetadataFini // Right now we attempt to update metadata for calculating the size so call updateSizeFromRemote() // as it's what we want. In future if there are other reason to update metadata we will need to somehow - // distinguish betwen these calls + // distinguish between these calls updateAppSizeFromRemote(flatpakInstallation, resource); } @@ -1015,7 +1019,7 @@ bool FlatpakBackend::updateAppMetadata(F bool FlatpakBackend::updateAppSize(FlatpakInstallation *flatpakInstallation, FlatpakResource *resource) { - // Check if the size is already set, we should also distiguish between download and installed size, + // Check if the size is already set, we should also distinguish between download and installed size, // right now it doesn't matter whether we get size for installed or not installed app, but if we // start making difference then for not installed app check download and install size separately @@ -1170,8 +1174,8 @@ ResultsStream * FlatpakBackend::search(c auto stream = new ResultsStream(QStringLiteral("FlatpakStream")); auto f = [this, stream, filter] () { QVector<AbstractResource*> ret; - foreach(auto r, m_resources) { - const bool matchById = filter.search.compare(r->appstreamId(), Qt::CaseInsensitive) == 0; + for (auto r : qAsConst(m_resources)) { + const bool matchById = r->appstreamId().compare(filter.search, Qt::CaseInsensitive) == 0; if (r->type() == AbstractResource::Technical && filter.state != AbstractResource::Upgradeable && !matchById) { continue; } @@ -1215,13 +1219,13 @@ QVector<AbstractResource *> FlatpakBacke ResultsStream * FlatpakBackend::findResourceByPackageName(const QUrl &url) { if (url.scheme() == QLatin1String("appstream")) { - const auto appstreamId = AppStreamUtils::appstreamId(url); - if (appstreamId.isEmpty()) + const auto appstreamIds = AppStreamUtils::appstreamIds(url); + if (appstreamIds.isEmpty()) Q_EMIT passiveMessage(i18n("Malformed appstream url '%1'", url.toDisplayString())); else { auto stream = new ResultsStream(QStringLiteral("FlatpakStream")); - auto f = [this, stream, appstreamId] () { - const auto resources = resourcesByAppstreamName(appstreamId); + auto f = [this, stream, appstreamIds] () { + const auto resources = kAppend<QVector<AbstractResource*>>(appstreamIds, [this] (const QString appstreamId) { return resourcesByAppstreamName(appstreamId); }); if (!resources.isEmpty()) Q_EMIT stream->resourcesFound(resources); stream->finish(); @@ -1311,8 +1315,14 @@ void FlatpakBackend::checkForUpdates() // Load local updates, comparing current and latest commit loadLocalUpdates(installation); + if (g_cancellable_is_cancelled(m_cancellable)) + break; + // Load updates from remote repositories loadRemoteUpdates(installation); + + if (g_cancellable_is_cancelled(m_cancellable)) + break; } }
  42. Download patch .gitignore

    --- 5.17.5-2/.gitignore 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/.gitignore 2020-07-07 11:04:06.000000000 +0000 @@ -1 +1,23 @@ +# Ignore the following files +*~ +*.[oa] +*.diff +*.kate-swp *.kdev4 +.kdev_include_paths +*.kdevelop.pcs +*.moc +*.moc.cpp +*.orig +*.user +.*.swp +.swp.* +Doxyfile +Makefile +avail +random_seed +/build*/ +CMakeLists.txt.user* +*.unc-backup* +.clang-format +/build*/
  43. Download patch discover/FeaturedModel.cpp

    --- 5.17.5-2/discover/FeaturedModel.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/FeaturedModel.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -50,16 +50,18 @@ FeaturedModel::FeaturedModel() const QUrl featuredUrl(QStringLiteral("https://autoconfig.kde.org/discover") + fileName); auto *fetchJob = KIO::storedGet(featuredUrl, KIO::NoReload, KIO::HideProgressInfo); acquireFetching(true); - connect(fetchJob, &KIO::StoredTransferJob::result, this, [this, fetchJob](){ + connect(fetchJob, &KIO::StoredTransferJob::result, this, [this, fetchJob]() { + const auto dest = qScopeGuard([this] { acquireFetching(false); }); + if (fetchJob->error() != 0) { + refresh(); + return; + } QFile f(*featuredCache); if (!f.open(QIODevice::WriteOnly)) qCWarning(DISCOVER_LOG) << "could not open" << *featuredCache << f.errorString(); f.write(fetchJob->data()); f.close(); refresh(); - acquireFetching(false); - - Q_EMIT isFetchingChanged(); }); if (!ResourcesModel::global()->backends().isEmpty() && QFile::exists(*featuredCache)) @@ -69,6 +71,7 @@ FeaturedModel::FeaturedModel() void FeaturedModel::refresh() { acquireFetching(true); + const auto dest = qScopeGuard([this] { acquireFetching(false); }); QFile f(*featuredCache); if (!f.open(QIODevice::ReadOnly)) { qCWarning(DISCOVER_LOG) << "couldn't open file" << *featuredCache << f.errorString(); @@ -87,9 +90,8 @@ void FeaturedModel::refresh() void FeaturedModel::setUris(const QVector<QUrl>& uris) { - acquireFetching(false); auto backend = ResourcesModel::global()->currentApplicationBackend(); - if (uris == m_uris || !backend) + if (!backend) return; QSet<ResultsStream*> streams; @@ -98,8 +100,11 @@ void FeaturedModel::setUris(const QVecto filter.resourceUrl = uri; streams << backend->search(filter); } - auto stream = new StoredResultsStream(streams); - connect(stream, &StoredResultsStream::finishedResources, this, &FeaturedModel::setResources); + if (!streams.isEmpty()) { + auto stream = new StoredResultsStream(streams); + acquireFetching(true); + connect(stream, &StoredResultsStream::finishedResources, this, &FeaturedModel::setResources); + } } static void filterDupes(QVector<AbstractResource *> &resources) @@ -137,14 +142,14 @@ void FeaturedModel::setResources(const Q auto resources = _resources; filterDupes(resources); - if (m_resources == resources) - return; - - //TODO: sort like in the json files + if (m_resources != resources) { + //TODO: sort like in the json files + beginResetModel(); + m_resources = resources; + endResetModel(); + } - beginResetModel(); - m_resources = resources; - endResetModel(); + acquireFetching(false); } void FeaturedModel::removeResource(AbstractResource* resource)
  44. Download patch discover/autotests/toplevels.qml

    --- 5.17.5-2/discover/autotests/toplevels.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/autotests/toplevels.qml 2020-07-07 11:04:06.000000000 +0000 @@ -90,10 +90,7 @@ DiscoverTest function test_search() { app.openMode("Browsing"); - var searchField = findChild(appRoot.globalDrawer.topContent[0], "SearchField"); - verify(searchField); - searchField.text = "cocacola" - searchField.accepted() + app.openSearch("cocacola") while(!isType(appRoot.stack.currentItem, "ApplicationsListPage")) verify(waitForSignal(appRoot.stack, "currentItemChanged")) var listPage = appRoot.stack.currentItem @@ -101,9 +98,9 @@ DiscoverTest verify(waitForSignal(listPage, "countChanged")) compare(listPage.count, 0) compare(listPage.search, "cocacola") - searchField.text = "dummy" - searchField.accepted() - compare(listPage.search, searchField.text) + app.openSearch("dummy") + listPage = appRoot.stack.currentItem + compare(listPage.search, "dummy") // compare(listPage.count, ResourcesModel.rowCount()/2) }
  45. Download patch exporter/main.cpp

    --- 5.17.5-2/exporter/main.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/exporter/main.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -40,7 +40,6 @@ int main(int argc, char** argv) MuonExporter exp; { QCommandLineParser parser; - parser.addOption(QCommandLineOption(QStringLiteral("backends"), i18n("List all the backends we'll want to have loaded, separated by coma ','."), QStringLiteral("names"))); parser.addPositionalArgument(QStringLiteral("file"), i18n("File to which we'll export")); DiscoverBackendsFactory::setupCommandLine(&parser); about.setupCommandLine(&parser);
  46. Download patch discover/autotests/CMakeLists.txt

    --- 5.17.5-2/discover/autotests/CMakeLists.txt 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/autotests/CMakeLists.txt 2020-07-07 11:04:06.000000000 +0000 @@ -1,6 +1,6 @@ set(plasma_discover_autotest_SRCS) ecm_qt_declare_logging_category(plasma_discover_autotest_SRCS HEADER discover_debug.h IDENTIFIER DISCOVER_LOG CATEGORY_NAME org.kde.plasma.discover) -ecm_add_test(PaginateModelTest.cpp ../PaginateModel.cpp ${plasma_discover_autotest_SRCS} TEST_NAME PaginateModelTest LINK_LIBRARIES Qt5::Test Qt5::Gui) +ecm_add_test(PaginateModelTest.cpp ../PaginateModel.cpp ${plasma_discover_autotest_SRCS} TEST_NAME PaginateModelTest LINK_LIBRARIES Qt5::Test) target_include_directories(PaginateModelTest PUBLIC ${CMAKE_SOURCE_DIR}/libdiscover/) if(BUILD_DummyBackend)
  47. Download patch discover/qml/InstallApplicationButton.qml

    --- 5.17.5-2/discover/qml/InstallApplicationButton.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/InstallApplicationButton.qml 2020-07-07 11:04:06.000000000 +0000 @@ -14,6 +14,8 @@ ConditionalLoader readonly property string text: !application.isInstalled ? i18n("Install") : i18n("Remove") property Component additionalItem: null + property bool compact: false + TransactionListener { id: listener } @@ -65,7 +67,8 @@ ConditionalLoader componentFalse: Button { enabled: application.state !== AbstractResource.Broken - text: root.text + text: compact ? "" : root.text + icon.name: compact ? root.action.icon.name : "" focus: true onClicked: root.click()
  48. Download patch discover/main.cpp

    --- 5.17.5-2/discover/main.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/main.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -52,6 +52,7 @@ QCommandLineParser* createParser() parser->addOption(QCommandLineOption(QStringLiteral("local-filename"), i18n("Local package file to install"), QStringLiteral("package"))); parser->addOption(QCommandLineOption(QStringLiteral("listbackends"), i18n("List all the available backends."))); parser->addOption(QCommandLineOption(QStringLiteral("search"), i18n("Search string."), QStringLiteral("text"))); + parser->addOption(QCommandLineOption(QStringLiteral("feedback"), i18n("Lists the available options for user feedback"))); parser->addOption(QCommandLineOption(QStringLiteral("test"), QStringLiteral("Test file"), QStringLiteral("file.qml"))); parser->addPositionalArgument(QStringLiteral("urls"), i18n("Supports appstream: url scheme")); DiscoverBackendsFactory::setupCommandLine(parser); @@ -70,6 +71,8 @@ void processArgs(QCommandLineParser* par if(parser->isSet(QStringLiteral("mode"))) mainWindow->openMode(parser->value(QStringLiteral("mode"))); + else + mainWindow->openMode(QStringLiteral("Browsing")); if(parser->isSet(QStringLiteral("search"))) Q_EMIT mainWindow->openSearch(parser->value(QStringLiteral("search"))); @@ -94,6 +97,7 @@ int main(int argc, char** argv) app.setWindowIcon(QIcon::fromTheme(QStringLiteral("plasmadiscover"))); app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); + app.setAttribute(Qt::AA_DisableSessionManager, true); KCrash::initialize(); KQuickAddons::QtQuickSettings::init(); KLocalizedString::setApplicationDomain("plasma-discover"); @@ -131,7 +135,15 @@ int main(int argc, char** argv) KDBusService* service = new KDBusService(KDBusService::Unique, &app); - mainWindow = new DiscoverObject(s_decodeCompactMode->value(parser->value(QStringLiteral("compact")), DiscoverObject::Full)); + { + auto options = parser->optionNames(); + options.removeAll(QStringLiteral("backends")); + options.removeAll(QStringLiteral("test")); + QVariantMap initialProperties; + if (!options.isEmpty() || !parser->positionalArguments().isEmpty()) + initialProperties = {{QStringLiteral("currentTopLevel"), QStringLiteral("qrc:/qml/LoadingPage.qml")}}; + mainWindow = new DiscoverObject(s_decodeCompactMode->value(parser->value(QStringLiteral("compact")), DiscoverObject::Full), initialProperties); + } QObject::connect(&app, &QCoreApplication::aboutToQuit, mainWindow, &DiscoverObject::deleteLater); QObject::connect(service, &KDBusService::activateRequested, mainWindow, [mainWindow](const QStringList &arguments, const QString &/*workingDirectory*/){ if (!mainWindow->rootObject()) @@ -154,6 +166,12 @@ int main(int argc, char** argv) delete mainWindow; return 0; } + + if(parser->isSet(QStringLiteral("feedback"))) { + QTextStream(stdout) << mainWindow->describeSources() << '\n'; + delete mainWindow; + return 0; + } if (parser->isSet(QStringLiteral("test"))) { const QUrl testFile = QUrl::fromUserInput(parser->value(QStringLiteral("test")), {}, QUrl::AssumeLocalFile);
  49. Download patch libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitSourcesBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -28,6 +28,7 @@ #include <QProcess> #include <QDebug> #include <QRegularExpression> +#include <resources/SourcesModel.h> #include <resources/AbstractResourcesBackend.h> #include "PackageKitBackend.h" #include "config-paths.h" @@ -79,13 +80,13 @@ PackageKitSourcesBackend::PackageKitSour , m_sources(new PKSourcesModel(this)) { connect(PackageKit::Daemon::global(), &PackageKit::Daemon::repoListChanged, this, &PackageKitSourcesBackend::resetSources); - resetSources(); + connect(SourcesModel::global(), &SourcesModel::showingNow, this, &PackageKitSourcesBackend::resetSources); // Kubuntu-based auto addNativeSourcesManager = [this](const QString &file){ auto service = PackageKitBackend::locateService(file); if (!service.isEmpty()) - m_actions += createActionForService(service, this); + m_actions += QVariant::fromValue<QObject*>(createActionForService(service, this)); }; //New Ubuntu @@ -155,13 +156,14 @@ bool PackageKitSourcesBackend::removeSou return false; } -QList<QAction *> PackageKitSourcesBackend::actions() const +QVariantList PackageKitSourcesBackend::actions() const { return m_actions; } void PackageKitSourcesBackend::resetSources() { + disconnect(SourcesModel::global(), &SourcesModel::showingNow, this, &PackageKitSourcesBackend::resetSources); m_sources->clear(); auto transaction = PackageKit::Daemon::global()->getRepoList(); connect(transaction, &PackageKit::Transaction::repoDetail, this, &PackageKitSourcesBackend::addRepositoryDetails);
  50. Download patch libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h

    --- 5.17.5-2/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FwupdBackend/FwupdSourcesBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -39,7 +39,7 @@ public: bool addSource(const QString& id) override; bool removeSource(const QString& id) override; QString idDescription() override { return QString(); } - QList<QAction*> actions() const override; + QVariantList actions() const override; bool supportsAdding() const override { return false; } void eulaRequired(const QString& remoteName, const QString& licenseAgreement); void populateSources();
  51. Download patch libdiscover/appstream/AppStreamUtils.h

    --- 5.17.5-2/libdiscover/appstream/AppStreamUtils.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/appstream/AppStreamUtils.h 2020-07-07 11:04:06.000000000 +0000 @@ -36,7 +36,7 @@ Q_DECL_EXPORT QPair<QList<QUrl>, QList<Q Q_DECL_EXPORT QJsonArray licenses(const AppStream::Component &appdata); -Q_DECL_EXPORT QString appstreamId(const QUrl &appstreamUrl); +Q_DECL_EXPORT QStringList appstreamIds(const QUrl &appstreamUrl); }
  52. Download patch libdiscover/backends/DummyBackend/DummySourcesBackend.h

    --- 5.17.5-2/libdiscover/backends/DummyBackend/DummySourcesBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/DummyBackend/DummySourcesBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -33,7 +33,7 @@ public: bool addSource(const QString& id) override; bool removeSource(const QString& id) override; QString idDescription() override { return QStringLiteral("Random weird text"); } - QList<QAction*> actions() const override; + QVariantList actions() const override; bool supportsAdding() const override { return true; } bool canMoveSources() const override { return true; }
  53. Download patch libdiscover/backends/PackageKitBackend/CMakeLists.txt

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/CMakeLists.txt 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/CMakeLists.txt 2020-07-07 11:04:06.000000000 +0000 @@ -2,7 +2,9 @@ find_package(KF5 REQUIRED Notifications) add_subdirectory(runservice) -add_library(packagekit-backend MODULE PackageKitBackend.cpp +#packagekit-backend +set (packagekit-backend_SRCS + PackageKitBackend.cpp PackageKitResource.cpp AppPackageKitResource.cpp PKTransaction.cpp @@ -12,7 +14,10 @@ add_library(packagekit-backend MODULE Pa LocalFilePKResource.cpp TransactionSet.cpp pkui.qrc -) + ) +ecm_qt_declare_logging_category(packagekit-backend_SRCS HEADER libdiscover_backend_debug.h IDENTIFIER LIBDISCOVER_BACKEND_LOG CATEGORY_NAME org.kde.plasma.libdiscover.backend) + +add_library(packagekit-backend MODULE ${packagekit-backend_SRCS}) target_link_libraries(packagekit-backend PRIVATE Discover::Common Qt5::Core PK::packagekitqt5 KF5::ConfigGui KF5::KIOCore KF5::Archive AppStreamQt) install(TARGETS packagekit-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover) @@ -23,7 +28,13 @@ if(TARGET PkgConfig::Markdown) endif() #notifier -add_library(DiscoverPackageKitNotifier MODULE PackageKitNotifier.cpp) +set (DiscoverPackageKitNotifier_SRCS + PackageKitNotifier.cpp +) +ecm_qt_declare_logging_category(DiscoverPackageKitNotifier_SRCS HEADER libdiscover_backend_debug.h IDENTIFIER LIBDISCOVER_BACKEND_LOG CATEGORY_NAME org.kde.plasma.libdiscover.backend) + +add_library(DiscoverPackageKitNotifier MODULE ${DiscoverPackageKitNotifier_SRCS}) + target_link_libraries(DiscoverPackageKitNotifier PRIVATE PK::packagekitqt5 Discover::Notifiers KF5::I18n KF5::Notifications KF5::ConfigCore) set_target_properties(DiscoverPackageKitNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover)
  54. Download patch libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakNotifier.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -35,12 +35,15 @@ static void installationChanged(GFileMon Q_UNUSED(other_file); Q_UNUSED(event_type); - FlatpakNotifier *notifier = (FlatpakNotifier*)self; + FlatpakNotifier *notifier = (FlatpakNotifier*) self; if (!notifier) { return; } - notifier->recheckSystemUpdateNeeded(); + if (notifier->m_user.m_monitor == monitor) + notifier->loadRemoteUpdates(&notifier->m_user); + else + notifier->loadRemoteUpdates(&notifier->m_system); } FlatpakNotifier::FlatpakNotifier(QObject* parent) @@ -74,14 +77,13 @@ void FlatpakNotifier::recheckSystemUpdat qWarning() << "Failed to setup flatpak installations: " << error->message; } else { // Load updates from remote repositories - loadRemoteUpdates(m_system.m_installation); - loadRemoteUpdates(m_user.m_installation); + loadRemoteUpdates(&m_system); + loadRemoteUpdates(&m_user); } } -void FlatpakNotifier::onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates) +void FlatpakNotifier::onFetchUpdatesFinished(Installation *installation, GPtrArray *updates) { - bool changed = false; bool hasUpdates = false; g_autoptr(GPtrArray) fetchedUpdates = updates; @@ -97,25 +99,19 @@ void FlatpakNotifier::onFetchUpdatesFini } hasUpdates = true; } - - if (flatpak_installation_get_is_user(flatpakInstallation)) { - changed = m_user.m_hasUpdates != hasUpdates; - m_user.m_hasUpdates = hasUpdates; - } else { - changed = m_system.m_hasUpdates != hasUpdates; - m_system.m_hasUpdates = hasUpdates; - } + const bool changed = this->hasUpdates() != hasUpdates; + installation->m_hasUpdates = hasUpdates; if (changed) { Q_EMIT foundUpdates(); } } -void FlatpakNotifier::loadRemoteUpdates(FlatpakInstallation *installation) +void FlatpakNotifier::loadRemoteUpdates(Installation* installation) { auto fw = new QFutureWatcher<GPtrArray *>(this); connect(fw, &QFutureWatcher<GPtrArray *>::finished, this, [this, installation, fw](){ - auto refs = fw->result(); + g_autoptr(GPtrArray) refs = fw->result(); if (refs) onFetchUpdatesFinished(installation, refs); fw->deleteLater(); @@ -123,7 +119,7 @@ void FlatpakNotifier::loadRemoteUpdates( fw->setFuture(QtConcurrent::run( [installation]() -> GPtrArray * { g_autoptr(GCancellable) cancellable = g_cancellable_new(); g_autoptr(GError) localError = nullptr; - GPtrArray *refs = flatpak_installation_list_installed_refs_for_update(installation, cancellable, &localError); + GPtrArray *refs = flatpak_installation_list_installed_refs_for_update(installation->m_installation, cancellable, &localError); if (!refs) { qWarning() << "Failed to get list of installed refs for listing updates: " << localError->message; } @@ -136,39 +132,22 @@ bool FlatpakNotifier::hasUpdates() return m_system.m_hasUpdates || m_user.m_hasUpdates; } -bool FlatpakNotifier::setupFlatpakInstallations(GError **error) +bool FlatpakNotifier::Installation::ensureInitialized(std::function<FlatpakInstallation*()> func, GCancellable *cancellable, GError **error) { - if (!m_system.m_installation) { - m_system.m_installation = flatpak_installation_new_system(m_cancellable, error); - if (!m_system.m_installation) { - return false; - } - } - - if (!m_user.m_installation) { - m_user.m_installation = flatpak_installation_new_user(m_cancellable, error); - if (!m_user.m_installation) { - return false; - } - } - - if (!m_system.m_monitor) { - m_system.m_monitor = flatpak_installation_create_monitor(m_system.m_installation, m_cancellable, error); - if (!m_system.m_monitor) { - return false; - } - - g_signal_connect(m_system.m_monitor, "changed", G_CALLBACK(installationChanged), this); + if (!m_installation) { + m_installation = func(); + m_monitor = flatpak_installation_create_monitor(m_installation, cancellable, error); + g_signal_connect(m_monitor, "changed", G_CALLBACK(installationChanged), this); } + return m_installation && m_monitor; +} - if (!m_user.m_monitor) { - m_user.m_monitor = flatpak_installation_create_monitor(m_user.m_installation, m_cancellable, error); - if (!m_user.m_monitor) { - return false; - } - - g_signal_connect(m_user.m_monitor, "changed", G_CALLBACK(installationChanged), this); - } +bool FlatpakNotifier::setupFlatpakInstallations(GError **error) +{ + if (!m_system.ensureInitialized([this, error] { return flatpak_installation_new_system(m_cancellable, error); }, m_cancellable, error)) + return false; + if (!m_user.ensureInitialized([this, error] { return flatpak_installation_new_system(m_cancellable, error); }, m_cancellable, error)) + return false; return true; }
  55. Download patch .arcconfig

    --- 5.17.5-2/.arcconfig 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/.arcconfig 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -{ - "phabricator.uri" : "https://phabricator.kde.org/" -} -
  56. Download patch discover/qml/AddonsView.qml

    --- 5.17.5-2/discover/qml/AddonsView.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/AddonsView.qml 2020-07-07 11:04:06.000000000 +0000 @@ -13,17 +13,14 @@ Kirigami.OverlaySheet readonly property bool containsAddons: rep.count>0 || isExtended readonly property bool isExtended: ResourcesModel.isExtended(application.appstreamId) + header: Kirigami.Heading { text: i18n("Addons") } + ColumnLayout { visible: addonsView.containsAddons enabled: !addonsView.isInstalling spacing: Kirigami.Units.largeSpacing - Kirigami.Heading { - level: 3 - text: i18n("Addons") - } - Repeater { id: rep
  57. Download patch libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/LocalFilePKResource.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -26,6 +26,7 @@ #include <PackageKit/Details> #include <utils.h> #include "config-paths.h" +#include "libdiscover_backend_debug.h" LocalFilePKResource::LocalFilePKResource(QUrl path, PackageKitBackend* parent) : PackageKitResource(path.toString(), path.toString(), parent) @@ -80,7 +81,13 @@ void LocalFilePKResource::fetchDetails() else qWarning() << "could not find an executable desktop file for" << m_path << "among" << files; }); - connect(transaction2, &PackageKit::Transaction::finished, this, [] {qDebug() << "."; }); + connect(transaction2, &PackageKit::Transaction::finished, this, [] {qCDebug(LIBDISCOVER_BACKEND_LOG) << "."; }); +} + +void LocalFilePKResource::setDetails(const PackageKit::Details& details) +{ + addPackageId(PackageKit::Transaction::InfoAvailable, details.packageId(), true); + PackageKitResource::setDetails(details); } void LocalFilePKResource::invokeApplication() const
  58. Download patch discover/qml/BrowsingPage.qml

    --- 5.17.5-2/discover/qml/BrowsingPage.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/BrowsingPage.qml 2020-07-07 11:04:06.000000000 +0000 @@ -18,12 +18,12 @@ */ import QtQuick 2.4 -import QtQuick.Controls 2.1 +import QtQuick.Controls 2.4 import QtQuick.Layouts 1.1 import org.kde.discover 2.0 import org.kde.discover.app 1.0 import "navigation.js" as Navigation -import org.kde.kirigami 2.4 as Kirigami +import org.kde.kirigami 2.12 as Kirigami DiscoverPage { @@ -42,18 +42,33 @@ DiscoverPage Navigation.openCategory(null, "") } - BusyIndicator { - id: indicator + ColumnLayout { anchors.centerIn: parent - width: Kirigami.Units.gridUnit * 8 - height: width + opacity: 0.5 + visible: apps.count === 0 && apps.model.isFetching + + Kirigami.Heading { + level: 2 + Layout.alignment: Qt.AlignCenter + text: i18n("Loading...") + } + BusyIndicator { + id: indicator + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: Kirigami.Units.gridUnit * 4 + Layout.preferredHeight: Kirigami.Units.gridUnit * 4 + } } - background: Rectangle { - color: Kirigami.Theme.backgroundColor - Kirigami.Theme.colorSet: Kirigami.Theme.Window - Kirigami.Theme.inherit: false + Kirigami.PlaceholderMessage { + anchors.centerIn: parent + width: parent.width - (Kirigami.Units.largeSpacing * 4) + + visible: apps.count === 0 && !apps.model.isFetching + + icon.name: "network-disconnect" + text: xi18nc("@info", "Unable to load applications.<nl/>Please verify Internet connectivity.") } signal clearSearch() @@ -68,24 +83,5 @@ DiscoverPage application: model.application compact: page.compact } - - footer: ColumnLayout { - visible: apps.count === 0 && !apps.model.isFetching - width: parent.width - - Kirigami.Icon { - source: "network-disconnect" - Layout.alignment: Qt.AlignHCenter - width: Kirigami.Units.gridUnit * 4 - height: width - } - - Kirigami.Heading { - Layout.fillWidth: true - horizontalAlignment: Text.AlignHCenter - text: xi18nc("@info", "Unable to load applications.<nl/>Please verify Internet connectivity.") - level: 3 - } - } } }
  59. Download patch discover/assets.qrc

    --- 5.17.5-2/discover/assets.qrc 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/assets.qrc 2020-07-07 11:04:06.000000000 +0000 @@ -2,6 +2,5 @@ <RCC version="1.0"> <qresource> <file>banners/banner.svg</file> - <file>banners/coffee.jpg</file> </qresource> </RCC>
  60. Download patch discover/qml/SearchField.qml

    --- 5.17.5-2/discover/qml/SearchField.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/SearchField.qml 2020-07-07 11:04:06.000000000 +0000 @@ -53,12 +53,14 @@ Kirigami.ActionTextField Connections { ignoreUnknownSignals: true target: page - onClearSearch: clearText() + function onClearSearch() { + clearText() + } } Connections { target: applicationWindow() - onCurrentTopLevelChanged: { + function onCurrentTopLevelChanged() { if (applicationWindow().currentTopLevel.length > 0) clearText() }
  61. Download patch discover/plasmauserfeedback.kcfg

    --- 5.17.5-2/discover/plasmauserfeedback.kcfg 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/plasmauserfeedback.kcfg 2020-07-07 11:04:06.000000000 +0000 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd"> + <kcfgfile arg="true"/> + <group name="Global"> + <entry name="FeedbackLevel" type="Int"><default>int(KUserFeedback::Provider::NoTelemetry)</default></entry> + </group> +</kcfg>
  62. Download patch libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/tests/FlatpakTest.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -78,7 +78,7 @@ private Q_SLOTS: QSignalSpy initializedSpy(m_appBackend, SIGNAL(initialized())); if (m->rowCount() == 1) { QSignalSpy spy(m, &SourcesModel::rowsInserted); - bk->actions().constFirst()->trigger(); + qobject_cast<QAction*>(bk->actions().constFirst().value<QObject*>())->trigger(); QVERIFY(spy.count() || spy.wait(20000)); } QVERIFY(initializedSpy.count() || initializedSpy.wait(20000));
  63. Download patch libdiscover/backends/DummyBackend/tests/DummyTest.cpp

    --- 5.17.5-2/libdiscover/backends/DummyBackend/tests/DummyTest.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/DummyBackend/tests/DummyTest.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -149,7 +149,7 @@ void DummyTest::testFetch() //fetches updates, adds new things m_appBackend->checkForUpdates(); - QSignalSpy spy(m_model, SIGNAL(allInitialized())); + QSignalSpy spy(m_model, &ResourcesModel::allInitialized); QVERIFY(spy.wait(80000)); auto resources2 = fetchResources(m_appBackend->search({})); QCOMPARE(m_appBackend->property("startElements").toInt()*4, resources2.count());
  64. Download patch debian/plasma-discover-backend-snap.maintscript

    --- 5.17.5-2/debian/plasma-discover-backend-snap.maintscript 2020-01-18 09:52:28.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover-backend-snap.maintscript 2020-07-07 12:57:44.000000000 +0000 @@ -1 +1 @@ -rm_conffile /etc/dbus-1/system.d/org.kde.discover.libsnapclient.conf 5.14.5.1-2~~ +rm_conffile /etc/dbus-1/system.d/org.kde.discover.libsnapclient.conf
  65. Download patch libdiscover/backends/PackageKitBackend/PKTransaction.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PKTransaction.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PKTransaction.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -24,6 +24,7 @@ #include "PackageKitMessages.h" #include "utils.h" #include "LocalFilePKResource.h" +#include "libdiscover_backend_debug.h" #include <resources/AbstractResource.h> #include <QDebug> #include <QTimer> @@ -39,7 +40,7 @@ PKTransaction::PKTransaction(const QVect Q_ASSERT(!apps.contains(nullptr)); foreach(auto r, apps) { PackageKitResource* res = qobject_cast<PackageKitResource*>(r); - m_pkgnames.unite(res->allPackageNames().toSet()); + m_pkgnames.unite(kToSet(res->allPackageNames())); } QTimer::singleShot(0, this, &PKTransaction::start); @@ -83,7 +84,7 @@ void PKTransaction::trigger(PackageKit:: //FIXME this state shouldn't exist qWarning() << "Installing no packages found!"; for(auto app : m_apps) { - qDebug() << "app" << app << app->state() << static_cast<PackageKitResource*>(app)->packages(); + qCDebug(LIBDISCOVER_BACKEND_LOG) << "app" << app << app->state() << static_cast<PackageKitResource*>(app)->packages(); } setStatus(Transaction::DoneWithErrorStatus); @@ -98,7 +99,7 @@ void PKTransaction::trigger(PackageKit:: }; Q_ASSERT(m_trans); -// connect(m_trans.data(), &PackageKit::Transaction::statusChanged, this, [this]() { qDebug() << "state..." << m_trans->status(); }); +// connect(m_trans.data(), &PackageKit::Transaction::statusChanged, this, [this]() { qCDebug(LIBDISCOVER_BACKEND_LOG) << "state..." << m_trans->status(); }); connect(m_trans.data(), &PackageKit::Transaction::package, this, &PKTransaction::packageResolved); connect(m_trans.data(), &PackageKit::Transaction::finished, this, &PKTransaction::cleanup); connect(m_trans.data(), &PackageKit::Transaction::errorCode, this, &PKTransaction::errorFound); @@ -177,7 +178,7 @@ void PKTransaction::cleanup(PackageKit:: i.remove(); } } - removedResources.subtract(kVectorToSet(m_apps)); + removedResources.subtract(kToSet(m_apps)); if (!packagesToRemove.isEmpty() || !removedResources.isEmpty()) { QString msg = QLatin1String("<ul><li>") + PackageKitResource::joinPackages(packagesToRemove, QLatin1String("</li><li>"), {});
  66. Download patch libdiscover/backends/FlatpakBackend/CMakeLists.txt

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/CMakeLists.txt 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/CMakeLists.txt 2020-07-07 11:04:06.000000000 +0000 @@ -13,7 +13,7 @@ add_library(flatpak-backend MODULE ${fla target_link_libraries(flatpak-backend Qt5::Core Qt5::Widgets Qt5::Concurrent KF5::CoreAddons KF5::ConfigCore Discover::Common AppStreamQt PkgConfig::Flatpak) if (NOT Flatpak_VERSION VERSION_LESS 1.1.2) - target_compile_definitions(flatpak-backend PRIVATE -DFLATPAK_VERBOSE_PROGRESS) + target_compile_definitions(flatpak-backend PRIVATE -DFLATPAK_VERBOSE_PROGRESS -DFLATPAK_LIST_UNUSED_REFS) endif() install(TARGETS flatpak-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover)
  67. Download patch discover/qml/ReviewsPage.qml

    --- 5.17.5-2/discover/qml/ReviewsPage.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ReviewsPage.qml 2020-07-07 11:04:06.000000000 +0000 @@ -20,12 +20,14 @@ import QtQuick 2.1 import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 import org.kde.discover 2.0 import org.kde.discover.app 1.0 import org.kde.kirigami 2.0 as Kirigami Kirigami.OverlaySheet { id: page + property alias model: reviewsView.model readonly property QtObject reviewsBackend: resource.backend.reviewsBackend readonly property var resource: model.resource @@ -43,37 +45,48 @@ Kirigami.OverlaySheet { page.sheetOpen = false } - ListView { - id: reviewsView + header: ColumnLayout { + width: parent.width + spacing: Kirigami.Units.largeSpacing + + Kirigami.Heading { + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: i18n("Reviews for %1", page.resource.name) + } - clip: true - spacing: Kirigami.Units.smallSpacing - cacheBuffer: Math.max(0, contentHeight) + RowLayout { + Layout.bottomMargin: Kirigami.Units.largeSpacing - header: Item { - width: parent.width - height: reviewButton.implicitHeight + 2 * Kirigami.Units.largeSpacing Button { id: reviewButton - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - leftMargin: Kirigami.Units.largeSpacing - } - visible: page.reviewsBackend != null enabled: page.resource.isInstalled - text: i18n("Review...") + text: i18n("Write a Review...") onClicked: page.openReviewDialog() } + Label { + text: i18n("Install this app to write a review") + wrapMode: Text.WordWrap + visible: !reviewButton.enabled + opacity: 0.6 + } + } + } + + ListView { + id: reviewsView + + clip: true + topMargin: Kirigami.Units.largeSpacing + spacing: Kirigami.Units.smallSpacing + implicitWidth: Kirigami.Units.gridUnit * 25 + cacheBuffer: Math.max(0, contentHeight) delegate: ReviewDelegate { - anchors { - left: parent.left - right: parent.right - } + width: parent.width separator: index != ListView.view.count-1 onMarkUseful: page.model.markUseful(index, useful) }
  68. Download patch discover/DiscoverDeclarativePlugin.cpp

    --- 5.17.5-2/discover/DiscoverDeclarativePlugin.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/DiscoverDeclarativePlugin.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -55,7 +55,6 @@ void DiscoverDeclarativePlugin::initiali void DiscoverDeclarativePlugin::registerTypes(const char* /*uri*/) { qmlRegisterType<TransactionListener>("org.kde.discover", 2, 0, "TransactionListener"); - qmlRegisterType<TransactionModel>(); qmlRegisterType<ResourcesUpdatesModel>("org.kde.discover", 2, 0, "ResourcesUpdatesModel"); qmlRegisterType<ResourcesProxyModel>("org.kde.discover", 2, 0, "ResourcesProxyModel"); @@ -72,11 +71,21 @@ void DiscoverDeclarativePlugin::register qmlRegisterUncreatableType<Transaction>("org.kde.discover", 2, 0, "Transaction", QStringLiteral("should come from the backends")); qmlRegisterUncreatableType<SourcesModel>("org.kde.discover", 2, 0, "SourcesModelClass", QStringLiteral("should come from the backends")); qmlRegisterUncreatableType<SourcesModel>("org.kde.discover", 2, 0, "AbstractBackendUpdater", QStringLiteral("should come from the backends")); +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + qmlRegisterType<TransactionModel>(); qmlRegisterType<Rating>(); qmlRegisterType<AbstractResourcesBackend>(); qmlRegisterType<AbstractReviewsBackend>(); qmlRegisterType<Category>(); qmlRegisterType<ResourcesModel>(); +#else + qmlRegisterAnonymousType<TransactionModel>("org.kde.discover", 1); + qmlRegisterAnonymousType<Rating>("org.kde.discover", 1); + qmlRegisterAnonymousType<AbstractResourcesBackend>("org.kde.discover", 1); + qmlRegisterAnonymousType<AbstractReviewsBackend>("org.kde.discover", 1); + qmlRegisterAnonymousType<Category>("org.kde.discover", 1); + qmlRegisterAnonymousType<ResourcesModel>("org.kde.discover", 1); +#endif qmlProtectModule("org.kde.discover", 2); qRegisterMetaType<QList<QAction*>>(); }
  69. Download patch libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/AppPackageKitResource.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -112,10 +112,12 @@ QStringList AppPackageKitResource::mimet return m_appdata.provided(AppStream::Provided::KindMimetype).items(); } +static const QVector<AppStream::Component::Kind> s_addonKinds = {AppStream::Component::KindAddon, AppStream::Component::KindCodec}; + QStringList AppPackageKitResource::categories() { auto cats = m_appdata.categories(); - if (m_appdata.kind() != AppStream::Component::KindAddon) + if (!s_addonKinds.contains(m_appdata.kind())) cats.append(QStringLiteral("Application")); return cats; } @@ -134,6 +136,13 @@ QString AppPackageKitResource::appstream return m_appdata.id(); } +QSet<QString> AppPackageKitResource::alternativeAppstreamIds() const +{ + const AppStream::Provided::Kind AppStream_Provided_KindId = (AppStream::Provided::Kind) 12; //Should be AppStream::Provided::KindId when released + const auto ret = m_appdata.provided(AppStream_Provided_KindId).items(); + return QSet<QString>(ret.begin(), ret.end()); +} + QUrl AppPackageKitResource::homepage() { return m_appdata.url(AppStream::Component::UrlKindHomepage); @@ -158,7 +167,7 @@ AbstractResource::Type AppPackageKitReso { static QString desktop = QString::fromUtf8(qgetenv("XDG_CURRENT_DESKTOP")); const auto desktops = m_appdata.compulsoryForDesktops(); - return m_appdata.kind() == AppStream::Component::KindAddon ? Addon + return s_addonKinds.contains(m_appdata.kind()) ? Addon : (desktops.isEmpty() || !desktops.contains(desktop)) ? Application : Technical; } @@ -222,7 +231,7 @@ void AppPackageKitResource::invokeApplic const QStringList exes = m_appdata.provided(AppStream::Provided::KindBinary).items(); const auto packageExecutables = kFilter<QStringList>(exes, [filenames](const QString &exe) { return filenames.contains(QLatin1Char('/') + exe); }); if (!packageExecutables.isEmpty()) { - QProcess::startDetached(exes.constFirst()); + QProcess::startDetached(exes.constFirst(), QStringList()); return; } else { const auto locations = QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
  70. Download patch libdiscover/backends/DummyBackend/DummySourcesBackend.cpp

    --- 5.17.5-2/libdiscover/backends/DummyBackend/DummySourcesBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/DummyBackend/DummySourcesBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -67,15 +67,15 @@ bool DummySourcesBackend::removeSource(c { const auto it = sourceForId(id); if (!it) { - qWarning() << "couldn't find " << id; + Q_EMIT passiveMessage(QStringLiteral("Could not find %1").arg(id)); return false; } return m_sources->removeRow(it->row()); } -QList<QAction*> DummySourcesBackend::actions() const +QVariantList DummySourcesBackend::actions() const { - return QList<QAction*>() << m_testAction; + return QVariantList() << QVariant::fromValue<QObject*>(m_testAction); } bool DummySourcesBackend::moveSource(const QString& sourceId, int delta)
  71. Download patch discover/resources.qrc

    --- 5.17.5-2/discover/resources.qrc 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/resources.qrc 2020-07-07 11:04:06.000000000 +0000 @@ -31,6 +31,7 @@ <file>qml/Shadow.qml</file> <file>qml/DiscoverPopup.qml</file> <file>qml/AboutPage.qml</file> + <file>qml/Feedback.qml</file> <file>qml/navigation.js</file> </qresource>
  72. Download patch libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitNotifier.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -38,6 +38,7 @@ #include <KConfigGroup> #include "pk-offline-private.h" +#include "libdiscover_backend_debug.h" PackageKitNotifier::PackageKitNotifier(QObject* parent) : BackendNotifierModule(parent) @@ -104,7 +105,7 @@ void PackageKitNotifier::checkOfflineUpd if (!QFile::exists(QStringLiteral(PK_OFFLINE_RESULTS_FILENAME))) { return; } - qDebug() << "found offline update results at " << PK_OFFLINE_RESULTS_FILENAME; + qCDebug(LIBDISCOVER_BACKEND_LOG) << "found offline update results at " << PK_OFFLINE_RESULTS_FILENAME; KDesktopFile file(QStringLiteral(PK_OFFLINE_RESULTS_FILENAME)); KConfigGroup group(&file, PK_OFFLINE_RESULTS_GROUP); @@ -120,10 +121,10 @@ void PackageKitNotifier::checkOfflineUpd notification->setText(i18n("Offline Updates")); notification->setText(i18np("Failed to update %1 package\n%2", "Failed to update %1 packages\n%2", packages.count(), errorDetails)); - notification->setActions(QStringList{i18nc("@action:button", "Open Discover")}); + notification->setActions(QStringList{i18nc("@action:button", "Open Discover"), i18nc("@action:button", "Repair System")}); connect(notification, &KNotification::action1Activated, this, [] () { - QProcess::startDetached(QStringLiteral("plasma-discover")); + QProcess::startDetached(QStringLiteral("plasma-discover"), QStringList()); }); connect(notification, &KNotification::action2Activated, this, [this] () { auto trans = PackageKit::Daemon::global()->repairSystem(); @@ -141,7 +142,7 @@ void PackageKitNotifier::checkOfflineUpd notification->setActions(QStringList{i18nc("@action:button", "Open Discover")}); connect(notification, &KNotification::action1Activated, this, [] () { - QProcess::startDetached(QStringLiteral("plasma-discover")); + QProcess::startDetached(QStringLiteral("plasma-discover"), QStringList()); }); notification->sendEvent(); @@ -173,7 +174,7 @@ void PackageKitNotifier::recheckSystemUp void PackageKitNotifier::setupGetUpdatesTransaction(PackageKit::Transaction* trans) { - qDebug() << "using..." << trans << trans->tid().path(); + qCDebug(LIBDISCOVER_BACKEND_LOG) << "using..." << trans << trans->tid().path(); trans->setProperty("normalUpdates", 0); trans->setProperty("securityUpdates", 0); @@ -250,11 +251,11 @@ QProcess* PackageKitNotifier::checkAptVa { QProcess* process = new QProcess; process->start(aptconfig, {QStringLiteral("dump")}); - connect(process, static_cast<void(QProcess::*)(int)>(&QProcess::finished), this, [func, process, varname](int code) { + connect(process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, [func, process, varname](int code) { if (code != 0) return; - QRegularExpression rx(QLatin1Char('^') + varname + QStringLiteral(" \"(.*?)\"$")); + QRegularExpression rx(QLatin1Char('^') + varname + QStringLiteral(" \"(.*?)\";?$"), QRegularExpression::CaseInsensitiveOption); QTextStream stream(process); QString line; while (stream.readLineInto(&line)) { @@ -266,7 +267,7 @@ QProcess* PackageKitNotifier::checkAptVa } func({}); }); - connect(process, static_cast<void(QProcess::*)(int)>(&QProcess::finished), process, &QObject::deleteLater); + connect(process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), process, &QObject::deleteLater); return process; } @@ -314,5 +315,5 @@ void PackageKitNotifier::onRequireRestar { PackageKit::Transaction* t = qobject_cast<PackageKit::Transaction*>(sender()); t->setProperty("requireRestart", qMax<int>(t->property("requireRestart").toInt(), type)); - qDebug() << "RESTART" << type << "is required for package" << packageID; + qCDebug(LIBDISCOVER_BACKEND_LOG) << "RESTART" << type << "is required for package" << packageID; }
  73. Download patch discover/qml/navigation.js

    --- 5.17.5-2/discover/qml/navigation.js 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/navigation.js 2020-07-07 11:04:06.000000000 +0000 @@ -33,7 +33,7 @@ function openApplicationMime(mime) { } function openApplicationList(props) { - var page = window.stack.push(applicationListComp, props) + var page = window.stack.push("qrc:/qml/ApplicationsListPage.qml", props) if (props.search === "") page.clearSearch(); } @@ -45,15 +45,15 @@ function openCategory(cat, search) { function openApplication(app) { console.assert(app) - window.stack.push(applicationComp, { application: app }) + window.stack.push("qrc:/qml/ApplicationPage.qml", { application: app }) } function openReviews(model) { - window.stack.push(reviewsComp, { model: model }) + window.stack.push("qrc:/qml/ReviewsPage.qml", { model: model }) } function openExtends(ext) { - window.stack.push(applicationListComp, { extending: ext, title: i18n("Extensions...") }) + window.stack.push("qrc:/qml/ApplicationsListPage.qml", { extending: ext, title: i18n("Extensions...") }) } function openHome() {
  74. Download patch discover/qml/ApplicationScreenshots.qml

    --- 5.17.5-2/discover/qml/ApplicationScreenshots.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ApplicationScreenshots.qml 2020-07-07 11:04:06.000000000 +0000 @@ -132,11 +132,11 @@ Flickable { DropShadow { source: thumbnail anchors.fill: thumbnail - verticalOffset: Kirigami.Units.largeSpacing + verticalOffset: Kirigami.Units.smallSpacing horizontalOffset: 0 radius: 12.0 samples: 25 - color: Kirigami.Theme.disabledTextColor + color: "Black" // Shadows should always be pure black cached: true }
  75. Download patch libdiscover/appstream/AppStreamUtils.cpp

    --- 5.17.5-2/libdiscover/appstream/AppStreamUtils.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/appstream/AppStreamUtils.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -22,6 +22,7 @@ #include <QJsonArray> #include <QJsonObject> +#include <QUrlQuery> #include <QDebug> #include "utils.h" #include <KLocalizedString> @@ -73,7 +74,7 @@ QPair<QList<QUrl>, QList<QUrl> > AppStre screenshots << plain; thumbnails << (thumbnail.isEmpty() ? plain : thumbnail); } - return {screenshots, thumbnails}; + return {thumbnails, screenshots}; } QJsonArray AppStreamUtils::licenses(const AppStream::Component& appdata) @@ -81,7 +82,9 @@ QJsonArray AppStreamUtils::licenses(cons #if APPSTREAM_HAS_SPDX QJsonArray ret; const auto licenses = AppStream::SPDX::tokenizeLicense(appdata.projectLicense()); +#if !APPSTREAM_HAS_SPDX_LICENSEURL static const QLatin1String prop ("@LicenseRef-proprietary="); +#endif for (const auto &token : licenses) { QString license = token; license.remove(0, 1); //tokenize prefixes with an @ for some reason @@ -102,7 +105,17 @@ QJsonArray AppStreamUtils::licenses(cons #endif } -QString AppStreamUtils::appstreamId(const QUrl &appstreamUrl) +QStringList AppStreamUtils::appstreamIds(const QUrl &appstreamUrl) { - return appstreamUrl.host().isEmpty() ? appstreamUrl.path() : appstreamUrl.host(); + QStringList ret; + ret += appstreamUrl.host().isEmpty() ? appstreamUrl.path() : appstreamUrl.host(); + if (appstreamUrl.hasQuery()) { + QUrlQuery query(appstreamUrl); +#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) + ret << query.queryItemValue(QStringLiteral("alt")).split(QLatin1Char(','), QString::SkipEmptyParts); +#else + ret << query.queryItemValue(QStringLiteral("alt")).split(QLatin1Char(','), Qt::SkipEmptyParts); +#endif + } + return ret; }
  76. Download patch debian/plasma-discover-common.install

    --- 5.17.5-2/debian/plasma-discover-common.install 2020-01-18 10:24:07.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/plasma-discover-common.install 2020-07-07 12:57:44.000000000 +0000 @@ -1,7 +1,6 @@ usr/share/discover/ usr/share/icons/hicolor/*/apps/plasmadiscover.* -usr/share/knsrcfiles/ +usr/share/knsrcfiles/discover_ktexteditor_codesnippets_core.knsrc usr/share/kxmlgui5/plasmadiscover/ usr/share/libdiscover/categories/packagekit-backend-categories.xml usr/share/locale/ -usr/share/qlogging-categories5/
  77. Download patch libdiscover/appstream/OdrsReviewsBackend.cpp

    --- 5.17.5-2/libdiscover/appstream/OdrsReviewsBackend.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/appstream/OdrsReviewsBackend.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -142,8 +142,10 @@ void OdrsReviewsBackend::reviewsFetched( QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender()); QScopedPointer<QNetworkReply, QScopedPointerDeleteLater> replyPtr(reply); const QByteArray data = reply->readAll(); - if (reply->error() != QNetworkReply::NoError) { + const auto networkError = reply->error(); + if (networkError != QNetworkReply::NoError) { qCWarning(LIBDISCOVER_LOG) << "error fetching reviews:" << reply->errorString() << data; + Q_EMIT error(i18n("Error while fetching reviews: %1", reply->errorString())); m_isFetching = false; return; } @@ -184,22 +186,24 @@ void OdrsReviewsBackend::submitUsefulnes void OdrsReviewsBackend::usefulnessSubmitted() { QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender()); - - if (reply->error() == QNetworkReply::NoError) { - qCWarning(LIBDISCOVER_LOG) << "Usefullness submitted"; + const auto networkError = reply->error(); + if (networkError == QNetworkReply::NoError) { + qCWarning(LIBDISCOVER_LOG) << "Usefulness submitted"; } else { qCWarning(LIBDISCOVER_LOG) << "Failed to submit usefulness: " << reply->errorString(); + Q_EMIT error(i18n("Error while submitting usefulness: %1", reply->errorString())); } reply->deleteLater(); } QString OdrsReviewsBackend::userName() const { - return i18n("%1 (%2)", KUser().property(KUser::FullName).toString(), KUser().loginName()); + return KUser().property(KUser::FullName).toString(); } void OdrsReviewsBackend::submitReview(AbstractResource *res, const QString &summary, const QString &description, const QString &rating) { + Q_ASSERT(res); QJsonObject map = {{QStringLiteral("app_id"), res->appstreamId()}, {QStringLiteral("user_skey"), res->getMetadata(QStringLiteral("ODRS::user_skey")).toString()}, {QStringLiteral("user_hash"), userHash()}, @@ -230,16 +234,19 @@ void OdrsReviewsBackend::submitReview(Ab void OdrsReviewsBackend::reviewSubmitted(QNetworkReply *reply) { - if (reply->error() == QNetworkReply::NoError) { - qCWarning(LIBDISCOVER_LOG) << "Review submitted"; + const auto networkError = reply->error(); + if (networkError == QNetworkReply::NoError) { AbstractResource *resource = qobject_cast<AbstractResource*>(reply->request().originatingObject()); - const QJsonArray array = {resource->getMetadata(QStringLiteral("ODRS::review_map")).toObject()}; - const QJsonDocument document(array); - // Remove local file with reviews so we can re-download it next time to get our review - QFile file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/reviews/%1.json").arg(array.first().toObject().value(QStringLiteral("app_id")).toString())); - file.remove(); - parseReviews(document, resource); + Q_ASSERT(resource); + qCWarning(LIBDISCOVER_LOG) << "Review submitted" << resource; + if (resource) { + const QJsonDocument document({resource->getMetadata(QStringLiteral("ODRS::review_map")).toObject()}); + parseReviews(document, resource); + } else { + qCWarning(LIBDISCOVER_LOG) << "Failed to submit review: missing object"; + } } else { + Q_EMIT error(i18n("Error while submitting review: %1", reply->errorString())); qCWarning(LIBDISCOVER_LOG) << "Failed to submit review: " << reply->errorString(); } reply->deleteLater(); @@ -290,7 +297,7 @@ void OdrsReviewsBackend::parseReviews(co const int usefulFavorable = review.value(QStringLiteral("karma_up")).toInt(); const int usefulTotal = review.value(QStringLiteral("karma_down")).toInt() + usefulFavorable; QDateTime dateTime; - dateTime.setTime_t(review.value(QStringLiteral("date_created")).toInt()); + dateTime.setSecsSinceEpoch(review.value(QStringLiteral("date_created")).toInt()); ReviewPtr r(new Review(review.value(QStringLiteral("app_id")).toString(), resource->packageName(), review.value(QStringLiteral("locale")).toString(), review.value(QStringLiteral("summary")).toString(), review.value(QStringLiteral("description")).toString(), review.value(QStringLiteral("user_display")).toString(),
  78. Download patch libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/org.kde.discover-flatpak.desktop 2020-07-07 11:04:06.000000000 +0000 @@ -1,6 +1,7 @@ [Desktop Entry] Name=Discover Name[ar]=استكشف +Name[ast]=Discover Name[ca]=Discover Name[ca@valencia]=Discover Name[cs]=Discover @@ -9,14 +10,14 @@ Name[de]=Discover Name[el]=Discover Name[en_GB]=Discover Name[es]=Discover -Name[et]=Avastusretk +Name[et]=Discover Name[eu]=Discover Name[fi]=Discover Name[fr]=Discover Name[gl]=Descubrir Name[he]=מרכז התוכנות Discover Name[hu]=Discover -Name[ia]=Discoperi +Name[ia]=Discover (Discoperi) Name[id]=Discover Name[it]=Discover Name[ko]=둘러보기
  79. Download patch libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h 2020-07-07 11:04:06.000000000 +0000 @@ -24,6 +24,8 @@ #include <resources/AbstractSourcesBackend.h> #include <QStandardItemModel> +#include <QStack> +#include <functional> extern "C" { #include <flatpak.h> @@ -37,11 +39,13 @@ public: explicit FlatpakSourcesBackend(const QVector<FlatpakInstallation *>& installations, AbstractResourcesBackend *parent); ~FlatpakSourcesBackend() override; + enum Roles { IconUrlRole = LastRole + 1 }; + QAbstractItemModel* sources() override; bool addSource(const QString &id) override; bool removeSource(const QString &id) override; QString idDescription() override; - QList<QAction*> actions() const override; + QVariantList actions() const override; bool supportsAdding() const override { return true; } bool canFilterSources() const override { return true; } @@ -51,9 +55,12 @@ public: bool moveSource(const QString & sourceId, int delta) override; int originIndex(const QString& sourceId) const; QStandardItem* sourceByUrl(const QString & url) const; + QStandardItem* sourceById(const QString & sourceId) const; + + void cancel() override; + void proceed() override; private: - QStandardItem* sourceById(const QString & sourceId) const; bool listRepositories(FlatpakInstallation *installation); void addRemote(FlatpakRemote *remote, FlatpakInstallation *installation); @@ -61,6 +68,7 @@ private: QStandardItemModel* m_sources; QAction* const m_flathubAction; QStandardItem* m_noSourcesItem; + QStack<std::function<void()>> m_proceedFunctions; }; #endif // FLATPAKSOURCESBACKEND_H
  80. Download patch libdiscover/backends/PackageKitBackend/runservice/CMakeLists.txt

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/runservice/CMakeLists.txt 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/runservice/CMakeLists.txt 2020-07-07 11:04:06.000000000 +0000 @@ -1,3 +1,3 @@ add_executable(runservice main.cpp) -target_link_libraries(runservice KF5::Service KF5::KIOWidgets) +target_link_libraries(runservice KF5::Service KF5::KIOGui) install(TARGETS runservice DESTINATION ${KDE_INSTALL_LIBEXECDIR_KF5}/discover)
  81. Download patch libdiscover/backends/PackageKitBackend/LocalFilePKResource.h

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/LocalFilePKResource.h 2020-07-07 11:04:06.000000000 +0000 @@ -39,6 +39,9 @@ class LocalFilePKResource : public Packa void fetchDetails() override; bool canExecute() const override { return !m_exec.isEmpty(); } void invokeApplication() const override; + QString displayOrigin() const override { return origin(); } + + void setDetails(const PackageKit::Details & details); private: AbstractResource::State m_state = AbstractResource::None;
  82. Download patch discover/DiscoverObject.cpp
  83. Download patch discover/qml/ReviewDelegate.qml
  84. Download patch discover/qml/ProgressView.qml

    --- 5.17.5-2/discover/qml/ProgressView.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ProgressView.qml 2020-07-07 11:04:06.000000000 +0000 @@ -23,10 +23,13 @@ Kirigami.AbstractListItem { } visible: TransactionModel.count > 0 - property QtObject sheetObject: null + property Kirigami.OverlaySheet sheetObject: null onClicked: { - sheetObject = sheet.createObject() - sheetObject.open() + if (!sheetObject) + sheetObject = sheet.createObject() + + if (!sheetObject.sheetOpen) + sheetObject.open() } onVisibleChanged: if (!visible && sheetObject) { sheetObject.close() @@ -36,9 +39,14 @@ Kirigami.AbstractListItem { readonly property var v3: Component { id: sheet Kirigami.OverlaySheet { - + parent: applicationWindow().overlay + header: Kirigami.Heading { + text: i18n("Tasks") + } contentItem: ListView { + id: tasksView spacing: 0 + implicitWidth: Kirigami.Units.gridUnit * 30 Component { id: listenerComp @@ -59,8 +67,7 @@ Kirigami.AbstractListItem { } readonly property QtObject listener: listenerComp.createObject(del, (model.transaction.resource ? {resource: model.transaction.resource} : {transaction: model.transaction})) - ColumnLayout { - width: parent.width + contentItem: ColumnLayout { RowLayout { Layout.fillWidth: true
  85. Download patch libdiscover/backends/PackageKitBackend/packagekit-backend-categories.xml

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/packagekit-backend-categories.xml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/packagekit-backend-categories.xml 2020-07-07 11:04:06.000000000 +0000 @@ -3,7 +3,7 @@ <Menu> <Name>Applications</Name> - <Icon>applications-internet</Icon> + <Icon>applications-all</Icon> <Image>pkcategories/applicationcrop.jpg</Image> <Include> <And>
  86. Download patch debian/meta/cmake-ignore

    --- 5.17.5-2/debian/meta/cmake-ignore 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/meta/cmake-ignore 2020-07-07 12:57:44.000000000 +0000 @@ -0,0 +1 @@ +KUserFeedback
  87. Download patch libdiscover/backends/FlatpakBackend/FlatpakNotifier.h

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h 2020-07-07 11:04:06.000000000 +0000 @@ -22,6 +22,7 @@ #define FLATPAKNOTIFIER_H #include <BackendNotifierModule.h> +#include <functional> extern "C" { #include <flatpak.h> @@ -41,18 +42,19 @@ public: void recheckSystemUpdateNeeded() override; bool needsReboot() const override { return false; } -private: - void onFetchUpdatesFinished(FlatpakInstallation *flatpakInstallation, GPtrArray *updates); - void loadRemoteUpdates(FlatpakInstallation *flatpakInstallation); - bool setupFlatpakInstallations(GError **error); - struct Installation { ~Installation(); + bool ensureInitialized(std::function<FlatpakInstallation*()> func, GCancellable *, GError **error); + bool m_hasUpdates = false; GFileMonitor *m_monitor = nullptr; FlatpakInstallation *m_installation = nullptr; }; + + void onFetchUpdatesFinished(Installation *flatpakInstallation, GPtrArray *updates); + void loadRemoteUpdates(Installation* installation); + bool setupFlatpakInstallations(GError **error); Installation m_user; Installation m_system; GCancellable * const m_cancellable;
  88. Download patch discover/qml/SourcesPage.qml

    --- 5.17.5-2/discover/qml/SourcesPage.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/SourcesPage.qml 2020-07-07 11:04:06.000000000 +0000 @@ -9,22 +9,15 @@ import "navigation.js" as Navigation DiscoverPage { id: page clip: true - title: i18n("Sources") + title: i18n("Settings") property string search: "" - background: Rectangle { - color: Kirigami.Theme.backgroundColor - Kirigami.Theme.colorSet: Kirigami.Theme.Window - Kirigami.Theme.inherit: false - } + contextualActions: feedbackLoader.item ? feedbackLoader.item.actions : [] mainItem: ListView { id: sourcesView - model: QSortFilterProxyModel { - filterRegExp: new RegExp(page.search, 'i') - dynamicSortFilter: false //We don't want to sort, as sorting can have some semantics on some backends - sourceModel: SourcesModel - } + model: SourcesModel + Component.onCompleted: Qt.callLater(SourcesModel.showingNow) currentIndex: -1 section.property: "sourceName" @@ -38,58 +31,70 @@ DiscoverPage { width: sourcesView.width label: backendItem.isDefault ? i18n("%1 (Default)", resourcesBackend.displayName) : resourcesBackend.displayName - Connections { + readonly property var p0: Connections { target: backendItem.backend - onPassiveMessage: window.showPassiveNotification(message) - onProceedRequest: { + function onPassiveMessage(message) { + window.showPassiveNotification(message) + } + function onProceedRequest(title, description) { var dialog = sourceProceedDialog.createObject(window, {sourcesBackend: backendItem.backend, title: title, description: description}) dialog.open() } } - Repeater { - id: backendActionsInst - model: ActionsModel { - actions: backendItem.backend ? backendItem.backend.actions : undefined - } - delegate: Button { - Layout.column: 1 - text: modelData.text - icon.name: app.iconName(modelData.icon) - ToolTip.visible: hovered - ToolTip.text: modelData.toolTip - onClicked: modelData.trigger() + Kirigami.ActionToolBar { + id: actionBar + Layout.fillWidth: true + alignment: Qt.AlignRight + Kirigami.Action { + id: addSource + text: i18n("Add Source...") + icon.name: "list-add" + visible: backendItem.backend && backendItem.backend.supportsAdding + + readonly property Component p0: Component { + id: dialogComponent + AddSourceDialog { + source: backendItem.backend + onVisibleChanged: if (!visible) { + destroy() + } + } + } + + onTriggered: { + var addSourceDialog = dialogComponent.createObject(null, {displayName: backendItem.backend.resourcesBackend.displayName }) + addSourceDialog.open() + } } - } + Kirigami.Action { + id: makeDefault + visible: resourcesBackend && resourcesBackend.hasApplications - Button { - text: i18n("Add Source...") - icon.name: "list-add" - visible: backendItem.backend && backendItem.backend.supportsAdding + enabled: !backendItem.isDefault + text: i18n("Make default") + icon.name: "favorite" + onTriggered: ResourcesModel.currentApplicationBackend = backendItem.backend.resourcesBackend + } Component { - id: dialogComponent - AddSourceDialog { - source: backendItem.backend - onVisibleChanged: if (!visible) { - destroy() - } + id: kirigamiAction + Kirigami.Action { + property QtObject action + text: action.text + tooltip: action.toolTip + onTriggered: action.trigger() } } - onClicked: { - var addSourceDialog = dialogComponent.createObject(null, {displayName: backendItem.backend.resourcesBackend.displayName }) - addSourceDialog.open() + function mergeActions(moreActions) { + var actions = [makeDefault, addSource] + for(var i in moreActions) { + actions.push(kirigamiAction.createObject(null, {action: moreActions[i]})) + } + return actions; } - } - - Button { - visible: resourcesBackend && resourcesBackend.hasApplications - - enabled: !backendItem.isDefault - text: i18n("Make default") - icon.name: "favorite" - onClicked: ResourcesModel.currentApplicationBackend = backendItem.backend.resourcesBackend + actions: mergeActions(backendItem.backend.actions) } } @@ -102,10 +107,13 @@ DiscoverPage { property alias title: heading.text property alias description: desc.text property bool acted: false + + header: Kirigami.Heading { + id: heading + wrapMode: Text.WordWrap + } + ColumnLayout { - Kirigami.Heading { - id: heading - } Label { id: desc Layout.fillWidth: true @@ -147,6 +155,8 @@ DiscoverPage { enabled: model.display.length>0 && model.enabled highlighted: ListView.isCurrentItem supportsMouseEvents: false + visible: model.display.indexOf(page.search)>=0 + height: visible ? implicitHeight : 0 Keys.onReturnPressed: clicked() actions: [ @@ -177,7 +187,7 @@ DiscoverPage { onTriggered: { var backend = sourcesBackend if (!backend.removeSource(sourceId)) { - window.showPassiveNotification(i18n("Failed to remove the source '%1'", model.display)) + console.warn("Failed to remove the source", model.display) } } },
  89. Download patch discover/org.kde.discover.desktop.cmake

    --- 5.17.5-2/discover/org.kde.discover.desktop.cmake 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/org.kde.discover.desktop.cmake 2020-07-07 11:04:06.000000000 +0000 @@ -1,6 +1,7 @@ [Desktop Entry] Name=Discover Name[ar]=استكشف +Name[ast]=Discover Name[ca]=Discover Name[ca@valencia]=Discover Name[cs]=Discover @@ -9,14 +10,14 @@ Name[de]=Discover Name[el]=Discover Name[en_GB]=Discover Name[es]=Discover -Name[et]=Avastusretk +Name[et]=Discover Name[eu]=Discover Name[fi]=Discover Name[fr]=Discover Name[gl]=Descubrir Name[he]=מרכז התוכנות Discover Name[hu]=Discover -Name[ia]=Discoperi +Name[ia]=Discover (Discoperi) Name[id]=Discover Name[it]=Discover Name[ko]=둘러보기 @@ -52,6 +53,7 @@ NoDisplay=@DesktopNoDisplay@ Actions=Updates; GenericName=Software Center GenericName[ar]=مركز البرمجيّات +GenericName[ast]=Centru de software GenericName[ca]=Centre de programari GenericName[ca@valencia]=Centre de programari GenericName[cs]=Centrum softwaru @@ -67,6 +69,7 @@ GenericName[fr]=Logithèque GenericName[gl]=Centro de Software GenericName[he]=מרכז התוכנות GenericName[hu]=Szoftverközpont +GenericName[ia]=Centro de Software GenericName[id]=Pusat Perangkat Lunak GenericName[it]=Software Center GenericName[ko]=소프트웨어 센터 @@ -80,7 +83,7 @@ GenericName[pl]=Ośrodek programów GenericName[pt]=Centro de Aplicações GenericName[pt_BR]=Central de aplicativos GenericName[ru]=Центр программ -GenericName[sk]=Softwareové centum +GenericName[sk]=Centrum softvéru GenericName[sl]=Programsko središče GenericName[sr]=Софтверски центар GenericName[sr@ijekavian]=Софтверски центар @@ -96,6 +99,7 @@ GenericName[zh_TW]=軟體中心 Categories=Qt;KDE;System; Keywords=program;software;repository;package;install;remove;update;apps;applications; Keywords[ar]=برنامج;برمجيّة;برمجية;مستودع;حزمة;تثبيت;إزالة;ازالة;تحديث;تطبيقات;تطبيق; +Keywords[ast]=programa;software;depósitu;paquete;instalar;instalación;desaniciar;desaniciu;anovar;anovamientu;aplicación;aplicaciones; Keywords[ca]=programa;programari;repositori;paquet;instal·la;suprimeix;actualitza;apps;aplicacions; Keywords[ca@valencia]=programa;programari;repositori;paquet;instal·la;suprimeix;actualitza;apps;aplicacions; Keywords[cs]=program;software;repozitář;balíček;instalovat;odstranit;aktualizovat;programy;aplikace; @@ -115,7 +119,7 @@ Keywords[ia]=program;software;repository Keywords[id]=program;perangkat lunak;repositori;paket;pasang;hapus;perbarui;apl;aplikasi; Keywords[it]=programma;software;deposito;pacchetto;installa;rimuovi;aggiorna;app;applicazioni; Keywords[ko]=프로그램;software;repository;archive;package;install;remove;update;deb;프로그램;소프트웨어;저장소;리포지토리;패키지;꾸러미;설치;삭제;업데이트; -Keywords[lt]=programa;programinė įranga;saugykla;paketas;įdiegti;diegti;šalinti;ištrinti;naujinti;atnaujinti;programos; +Keywords[lt]=programa;programinė įranga;programine iranga;saugykla;paketas;įdiegti;idiegti;diegti;šalinti;salinti;ištrinti;istrinti;naujinti;atnaujinti;programos;programas; Keywords[nb]=program;programvare;pakkebrønn;pakke;installere;fjerne;oppdatere;app;apper; Keywords[nl]=programma;software;opslagruimte;pakket;installeren;verwijderen;bijwerken;apps;toepassingen;applicaties; Keywords[nn]=program;programvare;pakkebrønn;pakke;pakkar;installera;installering;fjerna;fjerning;oppdatera;oppdatering;app;appar;applikasjonar; @@ -123,7 +127,7 @@ Keywords[pl]=program,oprogramowanie,repo Keywords[pt]=programa;software;repositório;pacote;instalar;remover;actualizar;aplicações; Keywords[pt_BR]=programa;software;repositório;pacote;instalar;instalação;remover;atualizar;aplicativos;apps;aplicações; Keywords[ru]=program;software;repository;package;install;remove;update;apps;applications;программа;приложение;репозиторий;пакет;установка;удаление;deb; -Keywords[sk]=program;softvér;repozitár;archív;balík;inštalácia;odstránenie;appky;aplikácie;aktualizácia; +Keywords[sk]=program;softvér;repozitár;balík;inštalácia;inľtalovať;odstránenie;odstrániť;aktualizovať;aktualizácia;appky;aplikácie; Keywords[sl]=program;programska oprema;skladišče;paket;namesti;odstrani;posodobi;programi; Keywords[sr]=program;software;repository;package;install;remove;update;apps;applications;програм;софтвер;ризница;пакет;инсталирати;уклонити;ажурирати; Keywords[sr@ijekavian]=program;software;repository;package;install;remove;update;apps;applications;програм;софтвер;ризница;пакет;инсталирати;уклонити;ажурирати; @@ -140,6 +144,7 @@ Keywords[zh_TW]=program;software;reposit [Desktop Action Updates] Name=Updates Name[ar]=التّحديثات +Name[ast]=Anovamientos Name[ca]=Actualitzacions Name[ca@valencia]=Actualitzacions Name[cs]=Aktualizace
  90. Download patch discover/autotests/updateandinstall.qml

    --- 5.17.5-2/discover/autotests/updateandinstall.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/autotests/updateandinstall.qml 2020-07-07 11:04:06.000000000 +0000 @@ -7,7 +7,7 @@ DiscoverTest function test_openResource() { app.openMode("Update"); - {// we start an upate + {// we start an update var updatePage = appRoot.stack.currentItem; compare(typeName(updatePage), "UpdatesPage") compare(updatePage.state, "has-updates", "to update")
  91. Download patch debian/gbp.conf

    --- 5.17.5-2/debian/gbp.conf 1970-01-01 00:00:00.000000000 +0000 +++ 5.19.3-0ubuntu1/debian/gbp.conf 2020-07-07 12:57:44.000000000 +0000 @@ -0,0 +1,6 @@ +[buildpackage] +sign-tags = True +#debian-tag-msg = %(version)s <suite>; urgency=<urgency> + +[import-orig] +dch = False
  92. Download patch libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp

    --- 5.17.5-2/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/PackageKitBackend/PackageKitUpdater.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -30,6 +30,9 @@ #include <KConfigGroup> #include <KLocalizedString> +#include "libdiscover_backend_debug.h" +#include "utils.h" + int percentageWithStatus(PackageKit::Transaction::Status status, uint percentage) { const auto was = percentage; @@ -43,12 +46,12 @@ int percentageWithStatus(PackageKit::Tra }; const auto idx = statuses.value(status, -1); if (idx < 0) { - qDebug() << "Status not present" << status << "among" << statuses .keys() << percentage; + qCDebug(LIBDISCOVER_BACKEND_LOG) << "Status not present" << status << "among" << statuses .keys() << percentage; return -1; } percentage = (idx * 100 + percentage) / 2 /*the maximum in statuses*/; } - qDebug() << "reporting progress with status:" << status << percentage << was; + qCDebug(LIBDISCOVER_BACKEND_LOG) << "reporting progress with status:" << status << percentage << was; return percentage; } @@ -85,7 +88,7 @@ void PackageKitUpdater::prepare() void PackageKitUpdater::setupTransaction(PackageKit::Transaction::TransactionFlags flags) { m_packagesModified.clear(); - auto pkgs = involvedPackages(m_toUpgrade).toList(); + auto pkgs = involvedPackages(m_toUpgrade).values(); pkgs.sort(); m_transaction = PackageKit::Daemon::updatePackages(pkgs, flags); m_isCancelable = m_transaction->allowCancel(); @@ -117,7 +120,7 @@ QSet<AbstractResource*> PackageKitUpdate QSet<AbstractResource*> ret; foreach (AbstractResource * res, m_allUpgradeable) { PackageKitResource* pres = qobject_cast<PackageKitResource*>(res); - if (packages.contains(pres->allPackageNames().toSet())) { + if (packages.contains(kToSet(pres->allPackageNames()))) { ret.insert(res); } } @@ -198,7 +201,7 @@ void PackageKitUpdater::start() void PackageKitUpdater::finished(PackageKit::Transaction::Exit exit, uint /*time*/) { -// qDebug() << "update finished!" << exit << time; +// qCDebug(LIBDISCOVER_BACKEND_LOG) << "update finished!" << exit << time; if (!m_proceedFunctions.isEmpty()) return; const bool cancel = exit == PackageKit::Transaction::ExitCancelled; @@ -260,19 +263,24 @@ qreal PackageKitUpdater::progress() cons void PackageKitUpdater::removeResources(const QList<AbstractResource*>& apps) { - QSet<QString> pkgs = involvedPackages(apps.toSet()); + QSet<QString> pkgs = involvedPackages(kToSet(apps)); m_toUpgrade.subtract(packagesForPackageId(pkgs)); } void PackageKitUpdater::addResources(const QList<AbstractResource*>& apps) { - QSet<QString> pkgs = involvedPackages(apps.toSet()); + QSet<QString> pkgs = involvedPackages(kToSet(apps)); m_toUpgrade.unite(packagesForPackageId(pkgs)); } QList<AbstractResource*> PackageKitUpdater::toUpdate() const { - return m_toUpgrade.toList(); + return m_toUpgrade +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + .values(); +#else + .toList(); +#endif } bool PackageKitUpdater::isMarked(AbstractResource* res) const @@ -373,7 +381,7 @@ AbstractBackendUpdater::State toUpdateSt case PackageKit::Transaction::StatusCancel: return AbstractBackendUpdater::Done; default: - qDebug() << "unknown packagekit status" << t; + qCDebug(LIBDISCOVER_BACKEND_LOG) << "unknown packagekit status" << t; return AbstractBackendUpdater::None; } Q_UNREACHABLE();
  93. Download patch libdiscover/backends/FlatpakBackend/FlatpakResource.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakResource.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -21,6 +21,7 @@ #include "FlatpakResource.h" #include "FlatpakBackend.h" +#include "FlatpakSourcesBackend.h" #include "config-paths.h" #include <Transaction/AddonList.h> @@ -569,7 +570,16 @@ QDate FlatpakResource::releaseDate() con QString FlatpakResource::sourceIcon() const { - return QStringLiteral("flatpak-discover"); + const auto sourceItem = qobject_cast<FlatpakBackend*>(backend())->sources()->sourceById(origin()); + if (!sourceItem) { + qWarning() << "Could not find source " << origin(); + return QStringLiteral("flatpak-discover"); + } + + const auto iconUrl = sourceItem->data(FlatpakSourcesBackend::IconUrlRole).toString(); + if (iconUrl.isEmpty()) + return QStringLiteral("flatpak-discover"); + return iconUrl; } QString FlatpakResource::author() const @@ -581,3 +591,11 @@ QStringList FlatpakResource::extends() c { return m_appdata.extends(); } + +QSet<QString> FlatpakResource::alternativeAppstreamIds() const +{ + const AppStream::Provided::Kind AppStream_Provided_KindId = (AppStream::Provided::Kind) 12; //Should be AppStream::Provided::KindId when released + const auto ret = m_appdata.provided(AppStream_Provided_KindId).items(); + + return QSet<QString>(ret.begin(), ret.end()); +}
  94. Download patch libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/org.kde.discover.flatpak.appdata.xml 2020-07-07 11:04:06.000000000 +0000 @@ -10,14 +10,18 @@ <name xml:lang="de">Flatpak-Backend</name> <name xml:lang="en-GB">Flatpak backend</name> <name xml:lang="es">Motor Flatpak</name> + <name xml:lang="et">Flatpaki taustaprogramm</name> <name xml:lang="eu">Flatpak bizkarraldeakoa</name> <name xml:lang="fi">Flatpak-taustaosa</name> <name xml:lang="fr">Moteur Flatpak</name> <name xml:lang="gl">Infraestrutura de Flatpak</name> + <name xml:lang="hu">Flatpak backend</name> + <name xml:lang="ia">Retro-Administration de Flatpak</name> <name xml:lang="id">Backend Flatpak</name> <name xml:lang="it">Motore Flatpak</name> <name xml:lang="ko">Flatpak 백엔드</name> <name xml:lang="lt">Flatpak vidinė pusė</name> + <name xml:lang="ml">ഫ്ലാറ്റ്പ്പാക്ക് ബാക്കെൻഡ്</name> <name xml:lang="nb">Flatpak-motor</name> <name xml:lang="nl">Flatpak-backend</name> <name xml:lang="nn">Flatpak-motor</name> @@ -26,9 +30,10 @@ <name xml:lang="pt">Infra-estrutura do Flatpak</name> <name xml:lang="pt-BR">Infraestrutura Flatpak</name> <name xml:lang="ru">Модуль для работы с форматом Flatpak</name> - <name xml:lang="sk">Backend Flatpak</name> + <name xml:lang="sk">Podporný program pre Flatpak</name> <name xml:lang="sl">Zaledje Flatpak</name> <name xml:lang="sv">Gränssnitt för Flatpak</name> + <name xml:lang="tg">Коркардкунандаи Flatpak</name> <name xml:lang="uk">Модуль Flatpak</name> <name xml:lang="x-test">xxFlatpak backendxx</name> <name xml:lang="zh-CN">Flatpak 后端</name> @@ -41,14 +46,18 @@ <summary xml:lang="de">Integriert Flatpak-Anwendungen in Discover</summary> <summary xml:lang="en-GB">Integrates Flatpak applications into Discover</summary> <summary xml:lang="es">Integra aplicaciones Flatpak en Discover</summary> + <summary xml:lang="et">Flatpaki rakenduste lõimimine Discoverisse</summary> <summary xml:lang="eu">Flatpak aplikazioak Discover-ren integratzen ditu</summary> <summary xml:lang="fi">Yhdistää Flatpak-sovellukset Discoveriin</summary> <summary xml:lang="fr">Intègre les applications Flatpak au sein de Discover</summary> <summary xml:lang="gl">Integra aplicacións de Flatpak con Discover</summary> + <summary xml:lang="hu">Flatpak alkalmazások integrálása a Discoverbe</summary> + <summary xml:lang="ia">Integra pplicationes de Flatpak in Discover</summary> <summary xml:lang="id">Aplikasi Flatpak terintegrasi ke dalam Discover</summary> <summary xml:lang="it">Integra le applicazioni Flatpak in Discover</summary> - <summary xml:lang="ko">Flatpak 프로그램을 살펴보기에 통합</summary> + <summary xml:lang="ko">Flatpak 프로그램을 둘러보기에 통합</summary> <summary xml:lang="lt">Integruoja Flatpak programas į Discover</summary> + <summary xml:lang="ml">ഡിസ്കവറിൽ ഫ്ലാറ്റ്പ്പാക്ക് ആപ്ലിക്കേഷൻ സംയോജിപ്പിക്കുന്നു</summary> <summary xml:lang="nb">Integrerer Flatpak-programmer i Discover</summary> <summary xml:lang="nl">Integreert Flatpak-toepassingen in Discover</summary> <summary xml:lang="nn">Integrerer Flatpak-program i Discover</summary> @@ -56,9 +65,10 @@ <summary xml:lang="pt">Integra as aplicações do Flatpak no Discover</summary> <summary xml:lang="pt-BR">Integra aplicativos Flatpak no Discover</summary> <summary xml:lang="ru">Добавление поддержки формата Flatpak в центр программ Discover</summary> - <summary xml:lang="sk">Integruje aplikácie Flatpad do Discoveru</summary> + <summary xml:lang="sk">Integruje aplikácie Flatpad do aplikácie Discover</summary> <summary xml:lang="sl">V Discover vgradi programe Flatpack</summary> <summary xml:lang="sv">Integrerar Flatpak-program i Discover</summary> + <summary xml:lang="tg">Барномаҳои Flatpak-ро ба барномаи Кашфиёт дарунсохт мекунад</summary> <summary xml:lang="uk">Інтеграція програм Flatpak з Discover</summary> <summary xml:lang="x-test">xxIntegrates Flatpak applications into Discoverxx</summary> <summary xml:lang="zh-CN">将 Flatpak 应用程序集成到Discover中</summary> @@ -75,14 +85,18 @@ <developer_name xml:lang="de">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="en-GB">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="es">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="et">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="eu">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="fi">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="fr">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="gl">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="hu">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="ia">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="id">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="it">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="ko">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="lt">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="ml">അലെയ്‌സ് പോൽ ഗോൺസാലസ്</developer_name> <developer_name xml:lang="nb">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="nl">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="nn">Aleix Pol Gonzalez</developer_name> @@ -93,15 +107,16 @@ <developer_name xml:lang="sk">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="sl">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="sv">Aleix Pol Gonzalez</developer_name> + <developer_name xml:lang="tg">Алейкс Пол Гонзалес (Aleix Pol Gonzalez)</developer_name> <developer_name xml:lang="uk">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="x-test">xxAleix Pol Gonzalezxx</developer_name> <developer_name xml:lang="zh-CN">Aleix Pol Gonzalez</developer_name> <developer_name xml:lang="zh-TW">Aleix Pol Gonzalez</developer_name> <icon type="stock">system-software-install</icon> <releases> - <release version="5.17.5" date="2020-01-07"/> - <release version="5.17.5" date="2020-01-07"/> - <release version="5.17.4" date="2019-12-03"/> - <release version="5.17.3" date="2019-11-12"/> + <release version="5.19.3" date="2020-07-07"/> + <release version="5.19.2" date="2020-06-23"/> + <release version="5.19.1" date="2020-06-16"/> + <release version="5.19.0" date="2020-06-09"/> </releases> </component>
  95. Download patch discover/qml/DiscoverWindow.qml

    --- 5.17.5-2/discover/qml/DiscoverWindow.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/DiscoverWindow.qml 2020-07-07 11:04:06.000000000 +0000 @@ -3,27 +3,21 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.1 import org.kde.discover 2.0 import org.kde.discover.app 1.0 +import org.kde.kquickcontrolsaddons 2.0 import org.kde.kirigami 2.5 as Kirigami import "navigation.js" as Navigation Kirigami.ApplicationWindow { id: window - readonly property string applicationListComp: ("qrc:/qml/ApplicationsListPage.qml") - readonly property string applicationComp: ("qrc:/qml/ApplicationPage.qml") - readonly property string reviewsComp: ("qrc:/qml/ReviewsPage.qml") - - //toplevels readonly property string topBrowsingComp: ("qrc:/qml/BrowsingPage.qml") readonly property string topInstalledComp: ("qrc:/qml/InstalledPage.qml") readonly property string topSearchComp: ("qrc:/qml/SearchPage.qml") readonly property string topUpdateComp: ("qrc:/qml/UpdatesPage.qml") readonly property string topSourcesComp: ("qrc:/qml/SourcesPage.qml") readonly property string topAboutComp: ("qrc:/qml/AboutPage.qml") - readonly property string loadingComponent: ("qrc:/qml/LoadingPage.qml") readonly property QtObject stack: window.pageStack - property string currentTopLevel: defaultStartup ? topBrowsingComp : loadingComponent - property bool defaultStartup: true + property string currentTopLevel objectName: "DiscoverMainWindow" title: leftPage ? leftPage.title : "" @@ -46,6 +40,12 @@ Kirigami.ApplicationWindow showPassiveNotification(i18n("Running as <em>root</em> is discouraged and unnecessary.")); } + readonly property string describeSources: feedbackLoader.item ? feedbackLoader.item.describeDataSources : "" + Loader { + id: feedbackLoader + source: "Feedback.qml" + } + TopLevelPageData { iconName: "tools-wizard" text: i18n("Discover") @@ -72,7 +72,7 @@ Kirigami.ApplicationWindow TopLevelPageData { id: updateAction iconName: ResourcesModel.updatesCount>0 ? ResourcesModel.hasSecurityUpdates ? "update-high" : "update-low" : "update-none" - text: ResourcesModel.updatesCount<=0 ? (ResourcesModel.isFetching ? i18n("Fetching Updates...") : i18n("Up to Date") ) : i18nc("Update section name", "Update (%1)", ResourcesModel.updatesCount) + text: ResourcesModel.updatesCount<=0 ? (ResourcesModel.isFetching ? i18n("Fetching updates...") : i18n("Up to date") ) : i18nc("Update section name", "Update (%1)", ResourcesModel.updatesCount) component: topUpdateComp objectName: "update" } @@ -86,7 +86,7 @@ Kirigami.ApplicationWindow TopLevelPageData { id: sourcesAction iconName: "configure" - text: i18n("Sources") + text: i18n("Settings") component: topSourcesComp objectName: "sources" } @@ -105,32 +105,34 @@ Kirigami.ApplicationWindow Connections { target: app - onOpenApplicationInternal: { + function onOpenApplicationInternal(app) { Navigation.clearStack() Navigation.openApplication(app) } - onListMimeInternal: { + function onListMimeInternal(mime) { currentTopLevel = topBrowsingComp; Navigation.openApplicationMime(mime) } - onListCategoryInternal: { + function onListCategoryInternal(cat) { currentTopLevel = topBrowsingComp; Navigation.openCategory(cat, "") } - onOpenSearch: { + function onOpenSearch(search) { Navigation.clearStack() Navigation.openApplicationList({search: search}) } - onOpenErrorPage: { + function onOpenErrorPage(errorMessage) { Navigation.clearStack() console.warn("error", errorMessage) window.stack.push(errorPageComponent, { error: errorMessage, title: i18n("Sorry...") }) } - onPreventedClose: showPassiveNotification(i18n("Could not close Discover, there are tasks that need to be done."), 20000, i18n("Quit Anyway"), function() { Qt.quit() }) - onUnableToFind: { + function onPreventedClose() { + showPassiveNotification(i18n("Could not close Discover, there are tasks that need to be done."), 20000, i18n("Quit Anyway"), function() { Qt.quit() }) + } + function onUnableToFind(resid) { showPassiveNotification(i18n("Unable to find resource: %1", resid)); Navigation.openHome() } @@ -138,7 +140,7 @@ Kirigami.ApplicationWindow Connections { target: ResourcesModel - onPassiveMessage: { + function onPassiveMessage (message) { showPassiveNotification(message) console.log("message:", message) } @@ -191,15 +193,37 @@ Kirigami.ApplicationWindow property alias title: heading.text property alias description: desc.text property bool acted: false + + header: Kirigami.Heading { + id: heading + wrapMode: Text.WordWrap + } + ColumnLayout { - Kirigami.Heading { - id: heading - } Label { id: desc Layout.fillWidth: true + Layout.maximumHeight: clip ? window.height * 0.5 : implicitHeight + clip: true textFormat: Text.StyledText wrapMode: Text.WordWrap + + readonly property var bottomShadow: Shadow { + parent: desc + anchors { + right: parent.right + left: parent.left + bottom: parent.bottom + } + visible: desc.clip + edge: Qt.BottomEdge + height: desc.height * 0.01 + } + } + Button { + text: desc.clip ? i18n("Show all") : i18n("Hide") + onClicked: desc.clip = !desc.clip + visible: window.height * 0.5 < desc.implicitHeight } RowLayout { Layout.alignment: Qt.AlignRight
  96. Download patch discover/FeaturedModel.h

    --- 5.17.5-2/discover/FeaturedModel.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/FeaturedModel.h 2020-07-07 11:04:06.000000000 +0000 @@ -52,7 +52,6 @@ class FeaturedModel : public QAbstractLi void acquireFetching(bool f); - QVector<QUrl> m_uris; QVector<AbstractResource*> m_resources; int m_isFetching = 0; };
  97. Download patch libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp 2020-07-07 11:04:06.000000000 +0000 @@ -47,7 +47,7 @@ progress_changed_cb (FlatpakTransactionP { FlatpakTransactionThread *obj = (FlatpakTransactionThread*) user_data; - obj->setProgress(flatpak_transaction_progress_get_progress(progress)); + obj->setProgress(qMin(99, flatpak_transaction_progress_get_progress(progress))); #ifdef FLATPAK_VERBOSE_PROGRESS guint64 start_time = flatpak_transaction_progress_get_start_time (progress); @@ -72,6 +72,17 @@ new_operation_cb(FlatpakTransaction flatpak_transaction_progress_set_update_frequency (progress, FLATPAK_CLI_UPDATE_FREQUENCY); } +void +operation_error_cb(FlatpakTransaction */*object*/, + FlatpakTransactionOperation */*operation*/, + GError *error, + gint /*details*/, + gpointer user_data) +{ + FlatpakTransactionThread *obj = (FlatpakTransactionThread*) user_data; + obj->addErrorMessage(QString::fromUtf8(error->message)); +} + FlatpakTransactionThread::FlatpakTransactionThread(FlatpakResource *app, Transaction::Role role) : QThread() , m_result(false) @@ -83,11 +94,12 @@ FlatpakTransactionThread::FlatpakTransac g_autoptr(GError) localError = nullptr; m_transaction = flatpak_transaction_new_for_installation(app->installation(), m_cancellable, &localError); if (localError) { - m_errorMessage = QString::fromUtf8(localError->message); + addErrorMessage(QString::fromUtf8(localError->message)); qWarning() << "Failed to create transaction" << m_errorMessage; } else { g_signal_connect (m_transaction, "add-new-remote", G_CALLBACK (add_new_remote_cb), this); g_signal_connect (m_transaction, "new-operation", G_CALLBACK (new_operation_cb), this); + g_signal_connect (m_transaction, "operation-error", G_CALLBACK (operation_error_cb), this); } } @@ -155,16 +167,43 @@ void FlatpakTransactionThread::run() } } - // We are done so we can set the progress to 100 m_result = flatpak_transaction_run(m_transaction, m_cancellable, &localError); if (!m_result) { m_errorMessage = QString::fromUtf8(localError->message); +#if defined(FLATPAK_LIST_UNUSED_REFS) + } else { + const auto installation = flatpak_transaction_get_installation(m_transaction); + g_autoptr(GPtrArray) refs = flatpak_installation_list_unused_refs(installation, nullptr, m_cancellable, nullptr); + if (refs->len > 0) { + g_autoptr(GError) localError = nullptr; + qDebug() << "found unused refs:" << refs->len; + auto transaction = flatpak_transaction_new_for_installation(installation, m_cancellable, &localError); + for (uint i = 0; i < refs->len; i++) { + FlatpakRef *ref = FLATPAK_REF(g_ptr_array_index(refs, i)); + g_autofree gchar *strRef = flatpak_ref_format_ref(ref); + qDebug() << "unused ref:" << strRef; + if (!flatpak_transaction_add_uninstall(transaction, + strRef, + &localError)) + { + qDebug() << "failed to uninstall unused ref" << refName << localError->message; + break; + } + } + if (!flatpak_transaction_run(transaction, m_cancellable, &localError)) { + qWarning() << "could not properly clean the elements" << refs->len << localError->message; + } + g_object_unref(m_transaction); + } +#endif } + // We are done so we can set the progress to 100 setProgress(100); } void FlatpakTransactionThread::setProgress(int progress) { + Q_ASSERT(qBound(0, progress, 100) == progress); if (m_progress != progress) { m_progress = progress; Q_EMIT progressChanged(m_progress); @@ -189,3 +228,9 @@ bool FlatpakTransactionThread::result() return m_result; } +void FlatpakTransactionThread::addErrorMessage(const QString &error) +{ + if (!m_errorMessage.isEmpty()) + m_errorMessage.append(QLatin1Char('\n')); + m_errorMessage.append(error); +}
  98. Download patch discover/org.kde.discover.appdata.xml
  99. Download patch libdiscover/backends/FlatpakBackend/FlatpakResource.h

    --- 5.17.5-2/libdiscover/backends/FlatpakBackend/FlatpakResource.h 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/libdiscover/backends/FlatpakBackend/FlatpakResource.h 2020-07-07 11:04:06.000000000 +0000 @@ -136,6 +136,7 @@ public: void invokeApplication() const override; void fetchChangelog() override; void fetchScreenshots() override; + QSet<QString> alternativeAppstreamIds() const override; void setBranch(const QString &branch); void setBundledIcon(const QPixmap &pixmap);
  100. Download patch discover/qml/ReviewDialog.qml

    --- 5.17.5-2/discover/qml/ReviewDialog.qml 2020-01-07 15:19:12.000000000 +0000 +++ 5.19.3-0ubuntu1/discover/qml/ReviewDialog.qml 2020-07-07 11:04:06.000000000 +0000 @@ -3,7 +3,7 @@ import QtQuick.Controls 2.2 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 import QtQuick.Window 2.0 -import org.kde.kirigami 2.0 as Kirigami +import org.kde.kirigami 2.10 as Kirigami Kirigami.OverlaySheet { @@ -17,49 +17,74 @@ Kirigami.OverlaySheet signal accepted() + header: Kirigami.Heading { + wrapMode: Text.WordWrap + text: i18n("Reviewing %1", application.name) + } + ColumnLayout { - height: Kirigami.Units.gridUnit * 22 - Kirigami.Heading { level: 3; text: i18n("Reviewing '%1'", application.name) } - Label { text: i18n("Rating:") } - Rating { - id: ratingInput - editable: true - } + Layout.maximumWidth: Kirigami.Units.gridUnit * 8 - Label { - visible: reviewDialog.backend.userName.length > 0 - Layout.fillWidth: true - elide: Text.ElideRight - text: visible ? xi18nc("@info", "Submission name:<nl/>%1", reviewDialog.backend.userName) : "" - } - Label { text: i18n("Title:") } - TextField { - id: titleInput - Layout.fillWidth: true - validator: RegExpValidator { regExp: /.{3,70}/ } + Kirigami.FormLayout { + id: contentLayout + Layout.fillHeight: true + + Rating { + id: ratingInput + Kirigami.FormData.label: i18n("Rating:") + editable: true + } + Label { + Kirigami.FormData.label: i18n("Name:") + visible: reviewDialog.backend.userName.length > 0 + Layout.fillWidth: true + elide: Text.ElideRight + text: visible ? reviewDialog.backend.userName : "" + } + TextField { + id: titleInput + Kirigami.FormData.label: i18n("Title:") + Layout.fillWidth: true + validator: RegExpValidator { regExp: /.{3,70}/ } + } } - Label { text: i18n("Review:") } + TextArea { id: reviewInput readonly property bool acceptableInput: length > 15 && length < 3000 Layout.fillWidth: true - Layout.fillHeight: true + Layout.minimumHeight: Kirigami.Units.gridUnit * 8 } - Button { - id: acceptButton - Layout.alignment: Qt.AlignRight - enabled: rating > 2 && titleInput.acceptableInput && reviewInput.acceptableInput - text: { - if (rating < 2) return i18n("Enter a rating"); - if (! titleInput.acceptableInput) return i18n("Write a title"); - if (reviewInput.length < 15) return i18n("Keep writing..."); - if (reviewInput.length > 3000) return i18n("Too long!"); - return i18n("Submit review"); - } - onClicked: { - reviewDialog.accepted() - reviewDialog.sheetOpen = false + RowLayout { + + Label { + id: instructionalLabel + Layout.fillWidth: true + text: { + if (rating < 2) return i18n("Enter a rating"); + if (! titleInput.acceptableInput) return i18n("Write the title"); + if (reviewInput.length === 0) return i18n("Write the review"); + if (reviewInput.length < 15) return i18n("Keep writing..."); + if (reviewInput.length > 3000) return i18n("Too long!"); + return ""; + } + wrapMode: Text.WordWrap + opacity: 0.6 + visible: text.length > 0 + } + Item { + Layout.fillWidth: true + visible: !instructionalLabel.visible + } + Button { + id: acceptButton + enabled: !instructionalLabel.visible + text: i18n("Submit review") + onClicked: { + reviewDialog.accepted() + reviewDialog.sheetOpen = false + } } } }
  101. ...

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: xdg-user-dirs

xdg-user-dirs (0.17-2ubuntu2) groovy; urgency=medium * No change rebuild against new CET ABI. -- Dimitri John Ledkov <xnox@ubuntu.com> Fri, 10 Jul 2020 18:30:20 +0100 xdg-user-dirs (0.17-2ubuntu1) disco; urgency=low * Merge with Debian. Remaining change: - Add launchpad_translation_export.patch: + update translations from Launchpad -- Sebastien Bacher <seb128@ubuntu.com> Thu, 24 Jan 2019 15:37:01 +0100

Modifications :
  1. Download patch debian/rules

    --- 0.17-2/debian/rules 2018-12-28 00:48:38.000000000 +0000 +++ 0.17-2ubuntu2/debian/rules 2019-01-24 14:32:35.000000000 +0000 @@ -1,5 +1,6 @@ #!/usr/bin/make -f +export NO_PKG_MANGLE=1 export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_LDFLAGS_MAINT_APPEND = -Wl,-O1 -Wl,-z,defs -Wl,--as-needed
  2. Download patch debian/patches/launchpad_translation_export.patch
  3. Download patch debian/control

    --- 0.17-2/debian/control 2018-12-28 00:48:38.000000000 +0000 +++ 0.17-2ubuntu2/debian/control 2019-01-24 14:39:24.000000000 +0000 @@ -5,7 +5,8 @@ Source: xdg-user-dirs Section: utils Priority: optional -Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> Uploaders: Iain Lane <laney@debian.org>, Jeremy Bicha <jbicha@debian.org>, Jordi Mallach <jordi@debian.org>, Matthias Klumpp <mak@debian.org>, Michael Biebl <biebl@debian.org>, Sebastian Dröge <slomo@debian.org> Build-Depends: debhelper-compat (= 12), docbook-xml,
  4. Download patch debian/control.in

    --- 0.17-2/debian/control.in 2018-12-28 00:48:38.000000000 +0000 +++ 0.17-2ubuntu2/debian/control.in 2019-01-24 14:39:24.000000000 +0000 @@ -1,7 +1,8 @@ Source: xdg-user-dirs Section: utils Priority: optional -Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org> Uploaders: @GNOME_TEAM@ Build-Depends: debhelper-compat (= 12), docbook-xml,
  5. Download patch debian/patches/series

    --- 0.17-2/debian/patches/series 2018-12-28 00:48:38.000000000 +0000 +++ 0.17-2ubuntu2/debian/patches/series 2018-03-23 15:54:24.000000000 +0000 @@ -0,0 +1 @@ +launchpad_translation_export.patch
  1. gnome-software
  2. plasma-discover
  3. xdg-user-dirs