[gnome-boxes/wip/feborges/new-wizard-design: 8/13] wizard-source: Introduce "Download an OS" page
- From: Felipe Borges <felipeborges src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes/wip/feborges/new-wizard-design: 8/13] wizard-source: Introduce "Download an OS" page
- Date: Mon, 22 Jan 2018 10:15:31 +0000 (UTC)
commit 737bd726bae41f50ff295da90c72b053b72d3b8d
Author: Felipe Borges <felipeborges gnome org>
Date: Tue Jan 16 15:18:18 2018 +0100
wizard-source: Introduce "Download an OS" page
Fixes #42
data/ui/wizard-source.ui | 72 ++++++++++++++++++++++++++++++++++++++++++++++++
src/wizard-source.vala | 64 +++++++++++++++++++++++++-----------------
src/wizard.vala | 10 +++++--
3 files changed, 119 insertions(+), 27 deletions(-)
---
diff --git a/data/ui/wizard-source.ui b/data/ui/wizard-source.ui
index 94dfe782..23e2d222 100644
--- a/data/ui/wizard-source.ui
+++ b/data/ui/wizard-source.ui
@@ -174,6 +174,49 @@
<property name="visible">True</property>
<property name="orientation">vertical</property>
+ <child>
+ <object class="GtkButton" id="download_an_os_button">
+ <property name="visible">True</property>
+ <signal name="clicked" handler="on_download_an_os_button_clicked"/>
+ <style>
+ <class name="boxes-menu-row"/>
+ </style>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="margin-top">10</property>
+ <property name="margin-bottom">10</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <property name="spacing">20</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="halign">start</property>
+ <property name="use-underline">True</property>
+ <property name="label" translatable="yes">Download an OS</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">▶</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+
<child>
<object class="GtkButton" id="enter_url_button">
<property name="visible">True</property>
@@ -288,6 +331,35 @@
</packing>
</child>
+ <!-- Download an OS page -->
+ <child>
+ <object class="GtkBox" id="download_an_os_page">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <property name="border-width">20</property>
+ <property name="margin-start">20</property>
+ <property name="margin-end">20</property>
+ <child>
+ <object class="GtkListBox" id="downloads_list">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="name">download-an-os-page</property>
+ </packing>
+ </child>
<!-- RHEL web view page -->
<child>
diff --git a/src/wizard-source.vala b/src/wizard-source.vala
index 470d9744..15ef5f3d 100644
--- a/src/wizard-source.vala
+++ b/src/wizard-source.vala
@@ -4,6 +4,7 @@
MAIN,
RHEL_WEB_VIEW,
URL,
+ DOWNLOADS,
LAST,
}
@@ -307,7 +308,7 @@ private void on_notify_estimated_load_progress () {
[GtkTemplate (ui = "/org/gnome/Boxes/ui/wizard-source.ui")]
private class Boxes.WizardSource: Gtk.Stack {
- private const string[] page_names = { "main-page", "rhel-web-view-page", "url-page" };
+ private const string[] page_names = { "main-page", "rhel-web-view-page", "url-page",
"download-an-os-page" };
public Gtk.Widget? selected { get; set; }
public string uri {
@@ -342,6 +343,8 @@ private void on_notify_estimated_load_progress () {
private Gtk.Image install_rhel_image;
[GtkChild]
private Boxes.WizardWebView rhel_web_view;
+ [GtkChild]
+ private Gtk.ListBox downloads_list;
private AppWindow window;
@@ -401,6 +404,7 @@ private void on_notify_estimated_load_progress () {
main_vbox.grab_focus ();
break;
case SourcePage.RHEL_WEB_VIEW:
+ case SourcePage.DOWNLOADS:
break;
case SourcePage.URL:
url_entry.changed ();
@@ -448,31 +452,11 @@ public void setup_ui (AppWindow window) {
var os_db = media_manager.os_db;
var available_downloads_model = new GLib.ListStore (typeof (Osinfo.Os));
- available_downloads_listbox.bind_model (available_downloads_model, (obj) => {
- var os = obj as Osinfo.Os;
-
- var entry = new WizardDownloadableEntry (os);
- entry.activated.connect ((media) => {
- this.uri = media.url;
-
- activated ();
- });
-
- return entry;
- });
-
- available_downloads_listbox.row_activated.connect ((row) => {
- var entry = (row as WizardDownloadableEntry);
+ available_downloads_listbox.bind_model (available_downloads_model, create_downloadable_entry);
+ available_downloads_listbox.row_activated.connect (on_downloadable_entry_clicked);
- selected = entry;
- if (entry.single_media != null) {
- this.uri = entry.single_media.url;
-
- activated ();
- } else {
- entry.toggle();
- }
- });
+ downloads_list.bind_model (available_downloads_model, create_downloadable_entry);
+ downloads_list.row_activated.connect (on_downloadable_entry_clicked);
os_db.list_latest_downloadable_oses.begin ((db, result) => {
try {
@@ -547,6 +531,31 @@ public void setup_ui (AppWindow window) {
});
}
+ private Gtk.Widget create_downloadable_entry (Object item) {
+ var os = item as Osinfo.Os;
+
+ var entry = new WizardDownloadableEntry (os);
+ entry.activated.connect ((media) => {
+ this.uri = media.url;
+ activated ();
+ });
+
+ return entry;
+ }
+
+ private void on_downloadable_entry_clicked (Gtk.ListBoxRow row) {
+ var entry = (row as WizardDownloadableEntry);
+
+ selected = entry;
+ if (entry.single_media != null) {
+ this.uri = entry.single_media.url;
+
+ activated ();
+ } else {
+ entry.toggle();
+ }
+ }
+
public void cleanup () {
filename = null;
install_media = null;
@@ -665,6 +674,11 @@ private void on_media_selected (InstallerMedia media) {
}
}
+ [GtkCallback]
+ private void on_download_an_os_button_clicked () {
+ page = SourcePage.DOWNLOADS;
+ }
+
[GtkCallback]
private void on_install_rhel_button_clicked () {
page = SourcePage.RHEL_WEB_VIEW;
diff --git a/src/wizard.vala b/src/wizard.vala
index 975bafaf..5182a7eb 100644
--- a/src/wizard.vala
+++ b/src/wizard.vala
@@ -121,7 +121,8 @@
} else {
switch (value) {
case WizardPage.SOURCE:
- if (wizard_source.page == SourcePage.RHEL_WEB_VIEW)
+ if (wizard_source.page == SourcePage.RHEL_WEB_VIEW ||
+ wizard_source.page == SourcePage.DOWNLOADS)
wizard_source.page = SourcePage.MAIN;
break;
}
@@ -177,6 +178,10 @@ private void wizard_source_update_buttons () {
next_button.sensitive = false;
break;
+ case Boxes.SourcePage.DOWNLOADS:
+ next_button.sensitive = false;
+ break;
+
case Boxes.SourcePage.URL:
next_button.sensitive = false;
if (wizard_source.uri.length == 0)
@@ -657,7 +662,8 @@ public void setup_ui (AppWindow window, WizardWindow wizard_window) {
back_button = wizard_window.topbar.back_btn;
back_button.clicked.connect (() => {
if (page == WizardPage.SOURCE) {
- return_if_fail (wizard_source.page == SourcePage.RHEL_WEB_VIEW);
+ return_if_fail (wizard_source.page == SourcePage.RHEL_WEB_VIEW ||
+ wizard_source.page == SourcePage.DOWNLOADS);
wizard_source.page = SourcePage.MAIN;
wizard_source.cleanup ();
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]