aboutsummaryrefslogtreecommitdiff
path: root/src/ui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.rs')
-rwxr-xr-xsrc/ui.rs118
1 files changed, 40 insertions, 78 deletions
diff --git a/src/ui.rs b/src/ui.rs
index 76a4c09..2f1bca3 100755
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -1,7 +1,4 @@
-use crate::{
- app::{App, AppResult, SelectedTab},
- browser::FileBrowser,
-};
+use crate::app::{App, SelectedTab};
use ratatui::{
prelude::*,
widgets::{block::Title, *},
@@ -17,73 +14,62 @@ pub fn render(app: &mut App, frame: &mut Frame) {
// Layout
let layout = Layout::default()
.direction(Direction::Vertical)
- .constraints(vec![
- Constraint::Percentage(0),
- // Constraint::Percentage(88),
- Constraint::Percentage(93),
- Constraint::Percentage(7),
- ])
+ .constraints(vec![Constraint::Percentage(93), Constraint::Percentage(7)])
.split(frame.size());
- //
- // let outer_layout = Layout::default()
- // .direction(Direction::Horizontal)
- // .constraints(vec![Constraint::Percentage(50), Constraint::Percentage(50)])
- // .split(main_layout[1]);
- //
- // let inner_layout = Layout::default()
- // .direction(Direction::Vertical)
- // .constraints(vec![Constraint::Percentage(50), Constraint::Percentage(50)])
- // .split(outer_layout[1]);
-
- // draw_song_list(frame, app, outer_layout[0]);
- // draw_queue(frame, app, inner_layout[0]);
- // draw_playlists(frame, app, inner_layout[1]);
- draw_progress_bar(frame, app, layout[2]);
-
- // let highlight_style = (Color::default(), tailwind::YELLOW.c700);
- // let tab = Tabs::new(vec!["Songs List", "Play Queue", "Playlists"])
- // .block(Block::default().title("Tabs").borders(Borders::ALL))
- // .style(Style::default().white())
- // .highlight_style(highlight_style)
- // .divider(" ")
- // .select(app.selected_tab.clone() as usize)
- // .padding("", "");
- // frame.render_widget(tab, layout[0]);
match app.selected_tab {
- // SelectedTab::SongList => draw_song_list(frame, app, layout[1]),
- SelectedTab::Queue => draw_queue(frame, app, layout[1]),
- SelectedTab::Playlists => draw_playlists(frame, app, layout[1]),
- SelectedTab::DirectoryBrowser => draw_directory_browser(frame, app, layout[1]),
+ SelectedTab::Queue => draw_queue(frame, app, layout[0]),
+ SelectedTab::Playlists => draw_playlists(frame, app, layout[0]),
+ SelectedTab::DirectoryBrowser => draw_directory_browser(frame, app, layout[0]),
}
+
+ draw_progress_bar(frame, app, layout[1]);
}
-/// draws list of songs
-fn draw_song_list(frame: &mut Frame, app: &mut App, size: Rect) {
+/// Draws the file tree browser
+fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
let mut song_state = ListState::default();
let total_songs = app.conn.conn.stats().unwrap().songs.to_string();
- let list = List::new(app.conn.songs_filenames.clone())
+ let mut list: Vec<String> = vec![];
+ for (t, s) in app.browser.filetree.iter() {
+ if t == "file" {
+ list.push(s.to_string());
+ } else {
+ list.push(format!("[{}]", *s));
+ }
+ }
+ let list = List::new(list)
.block(
Block::default()
- .title("Song List".green().bold())
+ .title(format!("File Browser: {}", app.browser.path.clone()).bold())
.title(
Title::from(format!("Total Songs: {}", total_songs).bold().green())
+ .alignment(Alignment::Center),
+ )
+ .title(
+ Title::from(format!("Volume: {}%", app.conn.volume).bold().green())
.alignment(Alignment::Right),
)
.borders(Borders::ALL),
)
.highlight_style(Style::new().add_modifier(Modifier::REVERSED))
.highlight_symbol(">>")
- .repeat_highlight_symbol(true);
+ .repeat_highlight_symbol(true)
+ .scroll_padding(20);
- song_state.select(Some(app.song_list.index));
+ song_state.select(Some(app.browser.selected));
frame.render_stateful_widget(list, size, &mut song_state);
}
/// draws playing queue
fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
let mut queue_state = ListState::default();
- let title = Block::default().title(Title::from("Play Queue".green().bold()));
+ let title = Block::default()
+ .title(Title::from("Play Queue".green().bold()))
+ .title(
+ Title::from(format!("Volume: {}%", app.conn.volume).bold().green())
+ .alignment(Alignment::Right),
+ );
let list = List::new(app.queue_list.list.clone())
.block(title.borders(Borders::ALL))
.highlight_style(Style::new().add_modifier(Modifier::REVERSED))
@@ -98,7 +84,13 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
fn draw_playlists(frame: &mut Frame, app: &mut App, size: Rect) {
let mut state = ListState::default();
- let title = Block::default().title(Title::from("Playlist".green().bold()));
+ let title = Block::default()
+ .title(Title::from("Playlist".green().bold()))
+ .title(
+ Title::from(format!("Volume: {}%", app.conn.volume).bold().green())
+ .alignment(Alignment::Right),
+ );
+
let list = List::new(app.pl_list.list.clone())
.block(title.borders(Borders::ALL))
.highlight_style(Style::new().add_modifier(Modifier::REVERSED))
@@ -109,7 +101,7 @@ fn draw_playlists(frame: &mut Frame, app: &mut App, size: Rect) {
frame.render_stateful_widget(list, size, &mut state);
}
-// Progress Bar
+/// Draws Progress Bar
fn draw_progress_bar(frame: &mut Frame, app: &mut App, size: Rect) {
let song = app
.conn
@@ -151,33 +143,3 @@ fn draw_progress_bar(frame: &mut Frame, app: &mut App, size: Rect) {
frame.render_widget(progress_bar, size);
}
-
-fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
- let mut song_state = ListState::default();
- let total_songs = app.conn.conn.stats().unwrap().songs.to_string();
- let mut list: Vec<String> = vec![];
- for (t, s) in app.browser.filetree.iter() {
- if t == "file" {
- list.push(s.to_string());
- } else {
- list.push(format!("[{}]", *s));
- }
- }
- let list = List::new(list)
- .block(
- Block::default()
- .title(format!("File Browser: {}", app.browser.path.clone()).bold())
- .title(
- Title::from(format!("Total Songs: {}", total_songs).bold().green())
- .alignment(Alignment::Right),
- )
- .borders(Borders::ALL),
- )
- .highlight_style(Style::new().add_modifier(Modifier::REVERSED))
- .highlight_symbol(">>")
- .repeat_highlight_symbol(true)
- .scroll_padding(20);
-
- song_state.select(Some(app.browser.selected));
- frame.render_stateful_widget(list, size, &mut song_state);
-}