Krolyxon
Commit 6c378af

rmptui6c378af

seperate UI states into App

Author
krolxon
Date
2024-06-07 23:50 +0530
Parent
b9bbabd
Commit
6c378af61f7c386b0a207b39129f90bef3d8b33c

+20 −9

3 files changed

  1. M src/app.rs +12 −0
  2. M src/ui.rs +6 −9
  3. A todo.md +2 −0
M src/app.rs View
@@ -35,6 +35,11 @@ pub struct App {
3535
3636 // Determines if the database should be updated or not
3737 pub should_update_song_list: bool,
38+
39+ // States
40+ pub queue_state: TableState,
41+ pub browser_state: TableState,
42+ pub playlists_state: ListState,
3843 }
3944
4045 #[derive(Debug, PartialEq, Clone)]
@@ -58,6 +63,10 @@ impl App {
5863
5964 let browser = FileBrowser::new();
6065
66+ let queue_state = TableState::new();
67+ let browser_state = TableState::new();
68+ let playlists_state = ListState::default();
69+
6170 Ok(Self {
6271 running: true,
6372 conn,
@@ -73,6 +82,9 @@ impl App {
7382 playlist_popup: false,
7483 append_list,
7584 should_update_song_list: false,
85+ queue_state,
86+ browser_state,
87+ playlists_state,
7688 })
7789 }
7890
M src/ui.rs View
@@ -101,7 +101,6 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
101101 }
102102 });
103103
104− let mut state = TableState::new();
105104 let header = ["Artist", "Track", "Title", "Album", "Time"]
106105 .into_iter()
107106 .map(Cell::from)
@@ -140,8 +139,8 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
140139 .header(header)
141140 .flex(layout::Flex::Legacy);
142141
143− state.select(Some(app.browser.selected));
144− frame.render_stateful_widget(table, size, &mut state);
142+ app.browser_state.select(Some(app.browser.selected));
143+ frame.render_stateful_widget(table, size, &mut app.browser_state);
145144 }
146145
147146 /// draws playing queue
@@ -196,7 +195,6 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
196195 }
197196 });
198197
199− let mut state = TableState::new();
200198 let header = ["Artist", "Track", "Title", "Album", "Time"]
201199 .into_iter()
202200 .map(Cell::from)
@@ -234,8 +232,8 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
234232 .header(header)
235233 .flex(layout::Flex::Legacy);
236234
237− state.select(Some(app.queue_list.index));
238− frame.render_stateful_widget(table, size, &mut state);
235+ app.queue_state.select(Some(app.queue_list.index));
236+ frame.render_stateful_widget(table, size, &mut app.queue_state);
239237 }
240238
241239 // Draw search bar
@@ -336,7 +334,6 @@ fn draw_playlist_viewer(frame: &mut Frame, app: &mut App, area: Rect) {
336334 .split(area);
337335
338336 // Draw list of playlists
339− let mut state = ListState::default();
340337 let title = Block::default().title(Title::from("Playlist".green().bold()));
341338 let list = List::new(app.pl_list.list.clone())
342339 .block(title.borders(Borders::ALL))
@@ -348,8 +345,8 @@ fn draw_playlist_viewer(frame: &mut Frame, app: &mut App, area: Rect) {
348345 .add_modifier(Modifier::REVERSED),
349346 )
350347 .repeat_highlight_symbol(true);
351− state.select(Some(app.pl_list.index));
352− frame.render_stateful_widget(list, layouts[0], &mut state);
348+ app.playlists_state.select(Some(app.pl_list.index));
349+ frame.render_stateful_widget(list, layouts[0], &mut app.playlists_state);
353350
354351 // Playlist viewer
355352
A todo.md View
@@ -0,0 +1,2 @@
1+- [ ] create new playlist
2+- [ ] add to new playlist