ClockWidget (#10)

This commit is contained in:
Jens K.
2024-12-05 17:25:09 +01:00
committed by GitHub
parent b5f9147b45
commit 929e453d85
6 changed files with 308 additions and 35 deletions

View File

@@ -3,7 +3,6 @@ use crate::{
constants::TICK_VALUE_MS,
events::{Event, EventHandler, Events},
terminal::Terminal,
utils::center,
widgets::{
countdown::{Countdown, CountdownWidget},
footer::Footer,
@@ -17,7 +16,7 @@ use ratatui::{
buffer::Buffer,
crossterm::event::{KeyCode, KeyEvent},
layout::{Constraint, Layout, Rect},
widgets::{Block, StatefulWidget, Widget},
widgets::{StatefulWidget, Widget},
};
use tracing::debug;
@@ -114,8 +113,6 @@ struct AppWidget;
impl AppWidget {
fn render_content(&self, area: Rect, buf: &mut Buffer, state: &mut App) {
// center content
let area = center(area, Constraint::Length(50), Constraint::Length(2));
match state.content {
Content::Timer => TimerWidget.render(area, buf, &mut state.timer),
Content::Countdown => CountdownWidget.render(area, buf, &mut state.countdown),
@@ -129,14 +126,13 @@ impl StatefulWidget for AppWidget {
fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
let vertical = Layout::vertical([
Constraint::Length(1),
Constraint::Fill(0),
Constraint::Percentage(100),
Constraint::Length(if state.show_menu { 2 } else { 1 }),
]);
let [v0, v1, v4] = vertical.areas(area);
let [v0, v1, v2] = vertical.areas(area);
Block::new().render(area, buf);
Header::new(true).render(v0, buf);
self.render_content(v1, buf, state);
Footer::new(state.show_menu, state.content).render(v4, buf);
Footer::new(state.show_menu, state.content).render(v2, buf);
}
}