[gnome-boxes] wizard: Display OS info & logo ASAP during preparation
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes] wizard: Display OS info & logo ASAP during preparation
- Date: Fri, 21 Dec 2012 19:19:17 +0000 (UTC)
commit cc4a8bb5607bc11d62de93fcb83a038d054d9fde
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Mon Dec 17 04:41:07 2012 +0200
wizard: Display OS info & logo ASAP during preparation
https://bugzilla.gnome.org/show_bug.cgi?id=690321
src/media-manager.vala | 22 ++++++++++++++++------
src/wizard.vala | 33 +++++++++++++++++----------------
2 files changed, 33 insertions(+), 22 deletions(-)
---
diff --git a/src/media-manager.vala b/src/media-manager.vala
index 6c00adf..877b6e5 100644
--- a/src/media-manager.vala
+++ b/src/media-manager.vala
@@ -12,6 +12,8 @@ private class Boxes.MediaManager : Object {
public OSDatabase os_db { get; private set; }
public Client client { get; private set; }
+ public delegate void InstallerRecognized (Osinfo.Media os_media, Osinfo.Os os);
+
private Sparql.Connection connection;
public static MediaManager get_instance () {
@@ -21,11 +23,13 @@ private class Boxes.MediaManager : Object {
return media_manager;
}
- public async InstallerMedia create_installer_media_for_path (string path,
- Cancellable? cancellable) throws GLib.Error {
+ public async InstallerMedia create_installer_media_for_path
+ (string path,
+ InstallerRecognized? on_installer_recognized = null,
+ Cancellable? cancellable = null) throws GLib.Error {
var media = yield InstallerMedia.create_for_path (path, this, cancellable);
- return yield create_installer_media_from_media (media);
+ return yield create_installer_media_from_media (media, on_installer_recognized, progress);
}
public async InstallerMedia create_installer_media_from_config (GVirConfig.Domain config) {
@@ -76,7 +80,7 @@ private class Boxes.MediaManager : Object {
var path = device.get_device_file ();
try {
- var media = yield create_installer_media_for_path (path, null);
+ var media = yield create_installer_media_for_path (path);
list.append (media);
} catch (GLib.Error error) {
@@ -137,7 +141,7 @@ private class Boxes.MediaManager : Object {
throw new Boxes.Error.INVALID (_("No such file %s").printf (path));
if (label == null || os_id == null || media_id == null)
- return yield create_installer_media_for_path (path, null);
+ return yield create_installer_media_for_path (path);
var os = yield os_db.get_os_by_id (os_id);
var os_media = os_db.get_media_by_id (os, media_id);
@@ -147,10 +151,16 @@ private class Boxes.MediaManager : Object {
return yield create_installer_media_from_media (media);
}
- private async InstallerMedia create_installer_media_from_media (InstallerMedia media) throws GLib.Error {
+ private async InstallerMedia create_installer_media_from_media
+ (InstallerMedia media,
+ InstallerRecognized? on_installer_recognized = null,
+ Cancellable? cancellable = null) throws GLib.Error {
if (media.os == null)
return media;
+ if (on_installer_recognized != null)
+ on_installer_recognized (media.os_media, media.os);
+
var install_scripts = media.os.get_install_script_list ();
var filter = new Filter ();
filter.add_constraint (INSTALL_SCRIPT_PROP_PROFILE, INSTALL_SCRIPT_PROFILE_DESKTOP);
diff --git a/src/wizard.vala b/src/wizard.vala
index 05c8695..39add96 100644
--- a/src/wizard.vala
+++ b/src/wizard.vala
@@ -266,7 +266,19 @@ private class Boxes.Wizard: Boxes.UI {
private void prepare_for_installer (string path) throws GLib.Error {
next_button.sensitive = false;
- media_manager.create_installer_media_for_path.begin (path, null, on_installer_media_instantiated);
+
+ prep_media_label.label = _("Unknown installer media");
+ prep_status_label.label = _("Analyzing..."); // Translators: Analyzing installer media
+
+ media_manager.create_installer_media_for_path.begin (path,
+ on_installer_recognized,
+ null,
+ on_installer_media_instantiated);
+ }
+
+ private void on_installer_recognized (Osinfo.Media os_media, Osinfo.Os os) {
+ prep_media_label.label = os.name;
+ Downloader.fetch_os_logo.begin (installer_image, os, 128);
}
private void on_installer_media_instantiated (Object? source_object, AsyncResult result) {
@@ -275,19 +287,8 @@ private class Boxes.Wizard: Boxes.UI {
try {
var install_media = media_manager.create_installer_media_for_path.end (result);
vm_creator = new VMCreator (install_media);
- if (install_media.os == null) {
- prep_progress.fraction = 1.0;
- page = WizardPage.SETUP;
-
- return;
- }
-
- Downloader.fetch_os_logo.begin (installer_image, install_media.os, 128, (object, result) => {
- Downloader.fetch_os_logo.end (result);
-
- prep_progress.fraction = 1.0;
- page = WizardPage.SETUP;
- });
+ prep_progress.fraction = 1.0;
+ page = WizardPage.SETUP;
} catch (IOError.CANCELLED cancel_error) { // We did this, so no warning!
} catch (GLib.Error error) {
debug("Failed to analyze installer image: %s", error.message);
@@ -578,11 +579,11 @@ private class Boxes.Wizard: Boxes.UI {
var prep_vbox = new Gtk.VBox (true, 10);
prep_vbox.valign = Gtk.Align.CENTER;
hbox.pack_start (prep_vbox, true, true);
- prep_media_label = new Gtk.Label (_("Unknown installer media"));
+ prep_media_label = new Gtk.Label (null);
prep_media_label.get_style_context ().add_class ("boxes-wizard-media-os-label");
prep_media_label.halign = Gtk.Align.START;
prep_vbox.pack_start (prep_media_label, false, false);
- prep_status_label = new Gtk.Label (_("Analyzing...")); // Translators: Analyzing installer media
+ prep_status_label = new Gtk.Label (null);
prep_status_label.get_style_context ().add_class ("boxes-wizard-label");
prep_status_label.halign = Gtk.Align.START;
prep_vbox.pack_start (prep_status_label, false, false);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]