diff --git a/musicus/res/ui/medium_editor.ui b/musicus/res/ui/medium_editor.ui index d6e2841..3a7a817 100644 --- a/musicus/res/ui/medium_editor.ui +++ b/musicus/res/ui/medium_editor.ui @@ -29,22 +29,7 @@ - False - - - crossfade - - - True - - - - - object-select-symbolic - - - - + object-select-symbolic diff --git a/musicus/src/import/import_screen.rs b/musicus/src/import/import_screen.rs index 78e9c33..08176cb 100644 --- a/musicus/src/import/import_screen.rs +++ b/musicus/src/import/import_screen.rs @@ -145,7 +145,9 @@ impl Screen, ()> for ImportScreen { add_button.connect_clicked(clone!(@weak this => move |_| { spawn!(@clone this, async move { - push!(this.handle, MediumEditor, Arc::clone(&this.session)).await; + if let Some(medium) = push!(this.handle, MediumEditor, Arc::clone(&this.session)).await { + this.select_medium(medium); + } }); })); diff --git a/musicus/src/import/medium_editor.rs b/musicus/src/import/medium_editor.rs index c763651..25cfc67 100644 --- a/musicus/src/import/medium_editor.rs +++ b/musicus/src/import/medium_editor.rs @@ -15,7 +15,7 @@ use std::sync::Arc; /// A dialog for editing metadata while importing music into the music library. pub struct MediumEditor { - handle: NavigationHandle<()>, + handle: NavigationHandle, session: Arc, widget: gtk::Stack, done_button: gtk::Button, @@ -27,9 +27,9 @@ pub struct MediumEditor { track_sets: RefCell>, } -impl Screen, ()> for MediumEditor { +impl Screen, Medium> for MediumEditor { /// Create a new medium editor. - fn new(session: Arc, handle: NavigationHandle<()>) -> Rc { + fn new(session: Arc, handle: NavigationHandle) -> Rc { // Create UI let builder = gtk::Builder::from_resource("/de/johrpan/musicus/ui/medium_editor.ui"); @@ -72,7 +72,7 @@ impl Screen, ()> for MediumEditor { this.widget.set_visible_child_name("loading"); spawn!(@clone this, async move { match this.save().await { - Ok(_) => this.handle.pop(Some(())), + Ok(medium) => this.handle.pop(Some(medium)), Err(err) => { this.status_page.set_description(Some(&err.to_string())); this.widget.set_visible_child_name("error"); @@ -135,7 +135,7 @@ impl Screen, ()> for MediumEditor { impl MediumEditor { /// Save the medium and possibly upload it to the server. - async fn save(&self) -> Result<()> { + async fn save(&self) -> Result { let name = self.name_entry.get_text().to_string(); // Create a new directory in the music library path for the imported medium. @@ -199,7 +199,7 @@ impl MediumEditor { self.handle.backend.library_changed(); - Ok(()) + Ok(medium) } }