[gnome-boxes] wizard-source: Don't list just a single ISO



commit 53e74078811dbc79e592a2fe168ec8ce250d1a07
Author: Felipe Borges <felipeborges gnome org>
Date:   Mon Nov 20 13:26:25 2017 +0100

    wizard-source: Don't list just a single ISO
    
    In the "Available to Download" section we reveal a list of
    available ISOs for each operating system when its entry gets
    clicked.
    
    There's no need to list it if there's just one item to show.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=790614

 src/wizard-source.vala |   21 ++++++++++++++++++---
 1 files changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/src/wizard-source.vala b/src/wizard-source.vala
index 20e0adb..8f4b608 100644
--- a/src/wizard-source.vala
+++ b/src/wizard-source.vala
@@ -84,6 +84,8 @@ private class Boxes.WizardDownloadableEntry : Gtk.ListBoxRow {
     [GtkChild]
     private Gtk.ListBox medias_listbox;
 
+    public Osinfo.Media single_media;
+
     public signal void activated (Osinfo.Media media);
 
     public WizardDownloadableEntry (Osinfo.Os os) {
@@ -92,7 +94,15 @@ private class Boxes.WizardDownloadableEntry : Gtk.ListBoxRow {
         title_label.label = os.name;
         details_label.label = os.vendor;
 
-        foreach (var media_entity in os.get_media_list ().get_elements()) {
+        var media_list = os.get_media_list () as Osinfo.List;
+        if (media_list.get_length () == 1)
+            single_media = media_list.get_nth (0) as Osinfo.Media;
+        else
+            populate_media_listbox (media_list);
+    }
+
+    private void populate_media_listbox (Osinfo.List media_list) {
+        foreach (var media_entity in media_list.get_elements()) {
             var media = (media_entity as Osinfo.Media);
 
             medias_listbox.insert (new WizardDownloadableMediaEntry (media), -1);
@@ -416,9 +426,14 @@ private class Boxes.WizardSource: Gtk.Stack {
         available_downloads_listbox.row_activated.connect ((row) => {
             var entry = (row as WizardDownloadableEntry);
 
-            entry.toggle();
-
             selected = entry;
+            if (entry.single_media != null) {
+                this.uri = entry.single_media.url;
+
+                activated ();
+            } else {
+                entry.toggle();
+            }
         });
 
         os_db.list_latest_downloadable_oses.begin ((db, result) => {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]