summaryrefslogtreecommitdiffstats
path: root/src/canvas/widgets/disk_table.rs
blob: 04a626f8f8567b6807aa7c55da8a485ccf21345f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use tui::{layout::Rect, terminal::Frame};

use crate::{
    app,
    canvas::{
        components::data_table::{DrawInfo, SelectionState},
        Painter,
    },
};

impl Painter {
    pub fn draw_disk_table(
        &self, f: &mut Frame<'_>, app_state: &mut app::App, draw_loc: Rect, widget_id: u64,
    ) {
        let recalculate_column_widths = app_state.should_get_widget_bounds();
        if let Some(disk_widget_state) = app_state
            .states
            .disk_state
            .widget_states
            .get_mut(&widget_id)
        {
            let is_on_widget = app_state.current_widget.widget_id == widget_id;

            let draw_info = DrawInfo {
                loc: draw_loc,
                force_redraw: app_state.is_force_redraw,
                recalculate_column_widths,
                selection_state: SelectionState::new(app_state.is_expanded, is_on_widget),
            };

            disk_widget_state.table.draw(
                f,
                &draw_info,
                app_state.widget_map.get_mut(&widget_id),
                self,
            );
        }
    }
}