|
|
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 |
|