aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xCargo.lock7
-rwxr-xr-xCargo.toml1
-rwxr-xr-xREADME.md2
-rwxr-xr-xsrc/app.rs19
-rwxr-xr-xsrc/ui.rs13
5 files changed, 24 insertions, 18 deletions
diff --git a/Cargo.lock b/Cargo.lock
index fdabdc5..79b2484 100755
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -226,12 +226,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
-name = "humantime"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-
-[[package]]
name = "indoc"
version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -392,7 +386,6 @@ version = "0.1.0"
dependencies = [
"clap",
"crossterm",
- "humantime",
"mpd",
"ratatui",
"rust-fuzzy-search",
diff --git a/Cargo.toml b/Cargo.toml
index 89621b4..ef3cf49 100755
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -13,4 +13,3 @@ simple-dmenu = "0.1.0"
ratatui = "0.26.2"
crossterm = "0.27.0"
rust-fuzzy-search = "0.1.1"
-humantime = "2.1.0"
diff --git a/README.md b/README.md
index 5997eb4..e65e051 100755
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ A MPD client in Rust
- [x] improvements on queue control
- [x] add to playlists
- [x] search for songs
-- [x] Humantime format
+- [x] Human readable time format
- [x] metadata based tree view
- [ ] view playlist
- [ ] change playlist name
diff --git a/src/app.rs b/src/app.rs
index c2ce06c..e38222d 100755
--- a/src/app.rs
+++ b/src/app.rs
@@ -1,3 +1,5 @@
+use std::time::Duration;
+
use crate::browser::FileBrowser;
use crate::connection::Connection;
use crate::list::ContentList;
@@ -152,7 +154,9 @@ impl App {
for (i, song) in self.queue_list.list.clone().iter().enumerate() {
if song.contains(&file) {
self.conn.conn.delete(i as u32).unwrap();
- if self.queue_list.index == self.queue_list.list.len() - 1 && self.queue_list.index != 0 {
+ if self.queue_list.index == self.queue_list.list.len() - 1
+ && self.queue_list.index != 0
+ {
self.queue_list.index -= 1;
}
}
@@ -268,4 +272,17 @@ impl App {
pub fn reset_cursor(&mut self) {
self.cursor_position = 0;
}
+
+ /// Given time in seconds, convert it to hh:mm:ss
+ pub fn format_time(time: Duration) -> String {
+ let time = time.as_secs();
+ let h = time / 3600;
+ let m = (time % 3600) / 60;
+ let s = (time % 3600) % 60;
+ if h == 0 {
+ format!("{:02}:{:02}", m, s)
+ } else {
+ format!("{:02}:{:02}:{:02}", h, m, s)
+ }
+ }
}
diff --git a/src/ui.rs b/src/ui.rs
index b4b789d..c1877a6 100755
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -77,9 +77,8 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) {
.collect::<Vec<String>>()
.join("");
- let time = humantime::format_duration(
- song.clone().duration.unwrap_or_else(|| Duration::new(0, 0)),
- );
+ let time =
+ App::format_time(song.clone().duration.unwrap_or_else(|| Duration::new(0, 0)));
let mut status: bool = false;
for sn in app.queue_list.list.iter() {
@@ -188,9 +187,7 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) {
.collect::<Vec<String>>()
.join("");
- let time = humantime::format_duration(
- song.clone().duration.unwrap_or_else(|| Duration::new(0, 0)),
- );
+ let time = App::format_time(song.clone().duration.unwrap_or_else(|| Duration::new(0, 0)));
if s.contains(&app.conn.current_song.file) {
let row = Row::new(vec![
@@ -353,8 +350,8 @@ fn draw_progress_bar(frame: &mut Frame, app: &mut App, size: Rect) {
let duration = if app.conn.total_duration.as_secs() != 0 {
format!(
"[{}/{}]",
- humantime::format_duration(app.conn.elapsed),
- humantime::format_duration(app.conn.total_duration)
+ App::format_time(app.conn.elapsed),
+ App::format_time(app.conn.total_duration)
)
} else {
"".to_string()