Blame SOURCES/gnome-boxes-download-from-url.patch

e98b86
From bb0e600c9931d053d85f684953ec4aa2c20b7584 Mon Sep 17 00:00:00 2001
e98b86
From: Felipe Borges <felipeborges@gnome.org>
e98b86
Date: Wed, 24 Jun 2020 15:35:00 +0200
e98b86
Subject: [PATCH] assistant, downloads-hub: Restore support to download from
e98b86
 URI
e98b86
e98b86
Fixes #520
e98b86
---
e98b86
 src/assistant/downloads-page.vala |  9 +++++++++
e98b86
 src/assistant/index-page.vala     |  1 +
e98b86
 src/downloads-hub.vala            | 25 +++++++++++++++++++++----
e98b86
 3 files changed, 31 insertions(+), 4 deletions(-)
e98b86
e98b86
diff --git a/src/assistant/downloads-page.vala b/src/assistant/downloads-page.vala
e98b86
index 41b93581..98086cee 100644
e98b86
--- a/src/assistant/downloads-page.vala
e98b86
+++ b/src/assistant/downloads-page.vala
e98b86
@@ -20,6 +20,7 @@
e98b86
     private GLib.ListStore recommended_model;
e98b86
 
e98b86
     public signal void media_selected (Gtk.ListBoxRow row);
e98b86
+    public signal void url_entered ();
e98b86
 
e98b86
     private AssistantDownloadsPageView _page;
e98b86
     public AssistantDownloadsPageView page {
e98b86
@@ -105,6 +106,14 @@ private void on_search_changed () {
e98b86
         if (text == null)
e98b86
             return;
e98b86
 
e98b86
+        var uri = Xml.URI.parse (text);
e98b86
+        if (uri.scheme.has_prefix ("http")) {
e98b86
+            DownloadsHub.get_instance ().add_url (text);
e98b86
+
e98b86
+            url_entered ();
e98b86
+            return;
e98b86
+        }
e98b86
+
e98b86
         search.text = text;
e98b86
     }
e98b86
 
e98b86
diff --git a/src/assistant/index-page.vala b/src/assistant/index-page.vala
e98b86
index 097220be..c7637407 100644
e98b86
--- a/src/assistant/index-page.vala
e98b86
+++ b/src/assistant/index-page.vala
e98b86
@@ -37,6 +37,7 @@
e98b86
 
e98b86
         source_medias.set_header_func (use_list_box_separator);
e98b86
         featured_medias.set_header_func (use_list_box_separator);
e98b86
+        recommended_downloads_page.url_entered.connect (() => { dialog.hide (); });
e98b86
     }
e98b86
 
e98b86
     public void setup (VMAssistant dialog) {
e98b86
diff --git a/src/downloads-hub.vala b/src/downloads-hub.vala
e98b86
index 3b1bc8ef..61c1e53f 100644
e98b86
--- a/src/downloads-hub.vala
e98b86
+++ b/src/downloads-hub.vala
e98b86
@@ -33,10 +33,12 @@ public static DownloadsHub get_instance () {
e98b86
     }
e98b86
 
e98b86
     public void add_item (WizardDownloadableEntry entry) {
e98b86
-        n_items+=1;
e98b86
-
e98b86
         var row = new DownloadsHubRow.from_entry (entry);
e98b86
+        add_row (row);
e98b86
+    }
e98b86
 
e98b86
+    private void add_row (DownloadsHubRow row) {
e98b86
+        n_items+=1;
e98b86
         if (!button.visible)
e98b86
             button.visible = true;
e98b86
 
e98b86
@@ -62,6 +64,11 @@ public void add_item (WizardDownloadableEntry entry) {
e98b86
         popup ();
e98b86
     }
e98b86
 
e98b86
+    public void add_url (string url) {
e98b86
+       var row = new DownloadsHubRow.from_url (url);
e98b86
+       add_row (row);
e98b86
+    }
e98b86
+
e98b86
     private void on_row_deleted () {
e98b86
         n_items-= 1;
e98b86
         if (!ongoing_downloads) {
e98b86
@@ -163,17 +170,27 @@ private bool draw_button_pie (Widget drawing_area, Cairo.Context context) {
e98b86
 
e98b86
         Downloader.fetch_os_logo.begin (image, entry.os, 64);
e98b86
 
e98b86
+        setup (entry.url);
e98b86
+    }
e98b86
+
e98b86
+    public DownloadsHubRow.from_url (string url) {
e98b86
+        label.label = url;
e98b86
+
e98b86
+        setup (url);
e98b86
+    }
e98b86
+
e98b86
+    private void setup (string url) {
e98b86
         progress_notify_id = progress.notify["progress"].connect (() => {
e98b86
             progress_bar.fraction = progress.progress;
e98b86
         });
e98b86
         progress_bar.fraction = progress.progress = 0;
e98b86
 
e98b86
-        var soup_download_uri = new Soup.URI (entry.url);
e98b86
+        var soup_download_uri = new Soup.URI (url);
e98b86
         var download_path = soup_download_uri.get_path ();
e98b86
 
e98b86
         var filename = GLib.Path.get_basename (download_path);
e98b86
 
e98b86
-        download.begin (entry.url, filename);
e98b86
+        download.begin (url, filename);
e98b86
     }
e98b86
 
e98b86
     private async void download (string url, string filename) {
e98b86
-- 
e98b86
2.26.2
e98b86