making songs almost more updatable....
This commit is contained in:
parent
7137cf715d
commit
4fe68236ea
17
src/main.rs
17
src/main.rs
|
@ -416,6 +416,21 @@ impl cosmic::Application for App {
|
||||||
self.process_key_press(key, modifiers)
|
self.process_key_press(key, modifiers)
|
||||||
}
|
}
|
||||||
Message::SongEditor(message) => {
|
Message::SongEditor(message) => {
|
||||||
|
debug!(?message);
|
||||||
|
match message {
|
||||||
|
song_editor::Message::UpdateSong(ref song) => {
|
||||||
|
debug!(?song);
|
||||||
|
if let Some(library) = self.library.as_mut() {
|
||||||
|
match library.update_song(song.clone()) {
|
||||||
|
Ok(_) => {
|
||||||
|
debug!("upated song")
|
||||||
|
}
|
||||||
|
Err(e) => error!(?e),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
};
|
||||||
self.song_editor.update(message).map(|m| {
|
self.song_editor.update(message).map(|m| {
|
||||||
debug!(?m);
|
debug!(?m);
|
||||||
cosmic::app::Message::App(Message::None)
|
cosmic::app::Message::App(Message::None)
|
||||||
|
@ -435,7 +450,7 @@ impl cosmic::Application for App {
|
||||||
}
|
}
|
||||||
|
|
||||||
Message::Library(message) => {
|
Message::Library(message) => {
|
||||||
debug!(?message);
|
// debug!(?message);
|
||||||
let (mut kind, mut index): (LibraryKind, i32) =
|
let (mut kind, mut index): (LibraryKind, i32) =
|
||||||
(LibraryKind::Song, 0);
|
(LibraryKind::Song, 0);
|
||||||
let mut opened_item = false;
|
let mut opened_item = false;
|
||||||
|
|
|
@ -9,6 +9,7 @@ use cosmic::{
|
||||||
},
|
},
|
||||||
Element, Task,
|
Element, Task,
|
||||||
};
|
};
|
||||||
|
use miette::{miette, Result};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
use crate::core::{
|
use crate::core::{
|
||||||
|
@ -32,6 +33,7 @@ pub(crate) struct Library {
|
||||||
selected_item: Option<(LibraryKind, i32)>,
|
selected_item: Option<(LibraryKind, i32)>,
|
||||||
hovered_item: Option<(LibraryKind, i32)>,
|
hovered_item: Option<(LibraryKind, i32)>,
|
||||||
dragged_item: Option<(LibraryKind, i32)>,
|
dragged_item: Option<(LibraryKind, i32)>,
|
||||||
|
editing_item: Option<(LibraryKind, i32)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
|
@ -62,6 +64,7 @@ impl Library {
|
||||||
selected_item: None,
|
selected_item: None,
|
||||||
hovered_item: None,
|
hovered_item: None,
|
||||||
dragged_item: None,
|
dragged_item: None,
|
||||||
|
editing_item: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,6 +340,23 @@ impl Library {
|
||||||
})
|
})
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn update_song(&mut self, song: Song) -> Result<()> {
|
||||||
|
let Some((kind, index)) = self.editing_item else {
|
||||||
|
return Err(miette!("Not editing an item"));
|
||||||
|
};
|
||||||
|
|
||||||
|
if kind != LibraryKind::Song {
|
||||||
|
return Err(miette!("Not editing a song item"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(_) = self.song_library.items.get(index as usize) {
|
||||||
|
self.song_library.update_item(song, index);
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
Err(miette!("Song not found"))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn elide_text(text: String, width: f32) -> String {
|
fn elide_text(text: String, width: f32) -> String {
|
||||||
|
|
|
@ -156,9 +156,9 @@ impl SongEditor {
|
||||||
Task::none()
|
Task::none()
|
||||||
}
|
}
|
||||||
Message::ChangeTitle(title) => {
|
Message::ChangeTitle(title) => {
|
||||||
debug!(title);
|
|
||||||
self.title = title.clone();
|
self.title = title.clone();
|
||||||
if let Some(mut song) = self.song.clone() {
|
if let Some(mut song) = self.song.clone() {
|
||||||
|
debug!(title);
|
||||||
song.title = title;
|
song.title = title;
|
||||||
self.update(Message::UpdateSong(song))
|
self.update(Message::UpdateSong(song))
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue