From 05c4b17bc078df9c5694e450b72aecbed9fc5216 Mon Sep 17 00:00:00 2001 From: krolxon Date: Tue, 23 Apr 2024 19:16:42 +0530 Subject: damn --- src/app.rs | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'src/app.rs') diff --git a/src/app.rs b/src/app.rs index d57c0b6..cb7b520 100755 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,6 @@ -use crate::connection::Connection; +use crate::connection::{self, Connection}; use crate::list::ContentList; +use mpd::Client; use std::collections::VecDeque; // Application result type @@ -12,20 +13,30 @@ pub struct App { pub running: bool, pub conn: Connection, pub play_deque: VecDeque, - pub list: ContentList, + pub song_list: ContentList, + pub queue_list: ContentList, + pub pl_list: ContentList, } impl App { - pub fn new(addrs: &str) -> Self { + pub fn builder(addrs: &str) -> AppResult { let mut conn = Connection::new(addrs).unwrap(); let mut vec: VecDeque = VecDeque::new(); + let mut pl_list = ContentList::new(); + pl_list.list = Self::get_playlist(&mut conn.conn)?; Self::get_queue(&mut conn, &mut vec); - Self { + + let mut song_list = ContentList::new(); + song_list.list = conn.songs_filenames.clone(); + + Ok(Self { running: true, conn, play_deque: vec, - list: ContentList::new(), - } + song_list, + queue_list: ContentList::new(), + pl_list, + }) } pub fn tick(&self) {} @@ -52,10 +63,15 @@ impl App { 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 + pub fn get_playlist(conn: &mut Client) -> AppResult> { + let list: Vec = conn.playlists()?.iter().map(|p| p.clone().name).collect(); + + Ok(list) + } + + pub fn update_playlist(&mut self) -> AppResult<()> { + Self::get_playlist(&mut self.conn.conn)?; + Ok(()) + } } -- cgit v1.2.3