aquinas 0.0.13

A simple command line media player. (Like cmus, but simpler.)
use super::*;
use tui::{
  layout::{Constraint, Direction, Layout, Rect},
  style::{Color, Style},
  terminal::Frame,
  widgets::{Block, Borders, Gauge},
};

pub fn render<'a, B: Backend>(state: &'a mut App, area: &Rect, frame: &mut Frame<B>) {
  let chunks = Layout::default()
    .direction(Direction::Vertical)
    .constraints(vec![Constraint::Length(2)])
    .split(*area);

  let (pct, pos, dur) = state.progress;

  let pos_min = pos / 60;
  let pos_sec = pos % 60;
  let dur_min = dur / 60;
  let dur_sec = dur % 60;

  let gauge = Gauge::default()
    .block(Block::default().borders(Borders::TOP))
    .gauge_style(Style::default().fg(Color::Blue))
    .percent(((pct * 100.) as u16).min(100))
    .label(format!(
      "{}{}:{:0>2}/{}:{:0>2}",
      state
        .playing
        .as_ref()
        .map(|p| format!("{} - ", p))
        .unwrap_or(String::new()),
      pos_min,
      pos_sec,
      dur_min,
      dur_sec
    ));

  frame.render_widget(gauge, chunks[0]);
}