diff options
| author | krolxon <krolyxon@tutanota.com> | 2024-06-07 23:50:05 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2024-06-07 23:50:05 +0530 |
| commit | 8f41c6e1d0815ed5b9395a23003bdd4546c0cc53 (patch) | |
| tree | 751107054272f0dd54ca2b2a5d6397260d2e8c4b /src | |
| parent | faaddc2bd752d9416798d986c9821197a13b8640 (diff) | |
seperate UI states into App
Diffstat (limited to 'src')
| -rwxr-xr-x | src/app.rs | 12 | ||||
| -rwxr-xr-x | src/ui.rs | 15 |
2 files changed, 18 insertions, 9 deletions
@@ -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, }) } @@ -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 |
