From a0582ead78fda02e4137a82e100963e88362f252 Mon Sep 17 00:00:00 2001 From: krolxon Date: Tue, 23 Apr 2024 16:10:03 +0530 Subject: get basic tui working with Ratatui --- src/app.rs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 src/app.rs (limited to 'src/app.rs') diff --git a/src/app.rs b/src/app.rs new file mode 100755 index 0000000..d57c0b6 --- /dev/null +++ b/src/app.rs @@ -0,0 +1,61 @@ +use crate::connection::Connection; +use crate::list::ContentList; +use std::collections::VecDeque; + +// Application result type +pub type AppResult = std::result::Result>; + +/// Application +#[derive(Debug)] +pub struct App { + /// check if app is running + pub running: bool, + pub conn: Connection, + pub play_deque: VecDeque, + pub list: ContentList, +} + +impl App { + pub fn new(addrs: &str) -> Self { + let mut conn = Connection::new(addrs).unwrap(); + let mut vec: VecDeque = VecDeque::new(); + Self::get_queue(&mut conn, &mut vec); + Self { + running: true, + conn, + play_deque: vec, + list: ContentList::new(), + } + } + + pub fn tick(&self) {} + + pub fn quit(&mut self) { + self.running = false; + } + + pub fn get_queue(conn: &mut Connection, vec: &mut VecDeque) { + conn.conn.queue().unwrap().into_iter().for_each(|x| { + if let Some(title) = x.title { + if let Some(artist) = x.artist { + vec.push_back(format!("{} - {}", artist, title)); + } else { + vec.push_back(title) + } + } else { + vec.push_back(x.file) + } + }); + } + + pub fn update_queue(&mut self) { + self.play_deque.clear(); + Self::get_queue(&mut self.conn, &mut self.play_deque); + } +} + +fn to_vecdeque(filenames: &Vec) -> VecDeque { + let mut v: VecDeque = VecDeque::new(); + v = filenames.iter().map(|x| x.to_string()).collect(); + v +} -- cgit v1.2.3