aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/app.rs12
-rwxr-xr-xsrc/ui.rs15
-rw-r--r--todo.md2
3 files changed, 20 insertions, 9 deletions
diff --git a/src/app.rs b/src/app.rs
index 6df47ab..baea0a2 100755
--- a/src/app.rs
+++ b/src/app.rs
@@ -35,6 +35,11 @@ pub struct App {
// Determines if the database should be updated or not
pub should_update_song_list: bool,
+
+ // States
+ pub queue_state: TableState,
+ pub browser_state: TableState,
+ pub playlists_state: ListState,
}
#[derive(Debug, PartialEq, Clone)]
@@ -58,6 +63,10 @@ impl App {
let browser = FileBrowser::new();
+ let queue_state = TableState::new();
+ let browser_state = TableState::new();
+ let playlists_state = ListState::default();
+
Ok(Self {
running: true,
conn,
@@ -73,6 +82,9 @@ impl App {
playlist_popup: false,
append_list,
should_update_song_list: false,
+ queue_state,
+ browser_state,
+ playlists_state,
})
}
diff --git a/src/ui.rs b/src/ui.rs
index 973d021..f565f63 100755
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -101,7 +101,6 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
}
});
- let mut state = TableState::new();
let header = ["Artist", "Track", "Title", "Album", "Time"]
.into_iter()
.map(Cell::from)
@@ -140,8 +139,8 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
.header(header)
.flex(layout::Flex::Legacy);
- state.select(Some(app.browser.selected));
- frame.render_stateful_widget(table, size, &mut state);
+ app.browser_state.select(Some(app.browser.selected));
+ frame.render_stateful_widget(table, size, &mut app.browser_state);
}
/// draws playing queue
@@ -196,7 +195,6 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
}
});
- let mut state = TableState::new();
let header = ["Artist", "Track", "Title", "Album", "Time"]
.into_iter()
.map(Cell::from)
@@ -234,8 +232,8 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
.header(header)
.flex(layout::Flex::Legacy);
- state.select(Some(app.queue_list.index));
- frame.render_stateful_widget(table, size, &mut state);
+ app.queue_state.select(Some(app.queue_list.index));
+ frame.render_stateful_widget(table, size, &mut app.queue_state);
}
// Draw search bar
@@ -336,7 +334,6 @@ fn draw_playlist_viewer(frame: &mut Frame, app: &mut App, area: Rect) {
.split(area);
// Draw list of playlists
- let mut state = ListState::default();
let title = Block::default().title(Title::from("Playlist".green().bold()));
let list = List::new(app.pl_list.list.clone())
.block(title.borders(Borders::ALL))
@@ -348,8 +345,8 @@ fn draw_playlist_viewer(frame: &mut Frame, app: &mut App, area: Rect) {
.add_modifier(Modifier::REVERSED),
)
.repeat_highlight_symbol(true);
- state.select(Some(app.pl_list.index));
- frame.render_stateful_widget(list, layouts[0], &mut state);
+ app.playlists_state.select(Some(app.pl_list.index));
+ frame.render_stateful_widget(list, layouts[0], &mut app.playlists_state);
// Playlist viewer
diff --git a/todo.md b/todo.md
new file mode 100644
index 0000000..390c3a2
--- /dev/null
+++ b/todo.md
@@ -0,0 +1,2 @@
+- [ ] create new playlist
+- [ ] add to new playlist