move_timer 0.1.0

a small, portable desktop app reminding you to move a bit during ctivities like programming
use std::time::Duration;

use crate::{data::AppData, utils::format_as_secs_minutes_and_hours};
use xilem::{
    TextAlign, WidgetView,
    view::{GridExt, GridParams, grid, label, progress_bar},
};

pub(crate) fn time_view(total: Duration, progress: Duration) -> impl WidgetView<AppData> + use<> {
    let relative_progress = if progress == Duration::ZERO {
        0f64
    } else {
        progress.as_millis() as f64 / total.as_millis() as f64
    };

    //FIXME
    debug_assert!(relative_progress <= 1.);

    grid(
        (
            progress_bar(Some(relative_progress)).grid_item(GridParams::new(0, 0, 3, 1)),
            label(format_as_secs_minutes_and_hours(progress))
                .text_alignment(TextAlign::Start)
                .text_size(25.)
                .grid_item(GridParams::new(0, 1, 1, 1)),
            label(format_as_secs_minutes_and_hours(total))
                .text_alignment(TextAlign::End)
                .text_size(25.)
                .grid_item(GridParams::new(2, 1, 1, 1)),
        ),
        3,
        2,
    )
}