#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum McPanel {
#[default]
Inbox,
Activity,
Schedule,
}
#[derive(Debug, Clone, Default)]
pub struct McState {
pub focused_panel: McPanel,
pub selected_index: usize,
pub scroll_offset: u16,
pub detail_open: bool,
pub activity: Vec<crate::brain::mission_control::McActivity>,
pub schedule: Vec<crate::brain::mission_control::McScheduleItem>,
}
impl McState {
pub fn reset_focus(&mut self) {
self.focused_panel = McPanel::default();
self.selected_index = 0;
self.scroll_offset = 0;
}
pub fn focus_next(&mut self) {
self.focused_panel = match self.focused_panel {
McPanel::Inbox => McPanel::Activity,
McPanel::Activity => McPanel::Schedule,
McPanel::Schedule => McPanel::Inbox,
};
self.selected_index = 0;
self.scroll_offset = 0;
}
pub fn focus_prev(&mut self) {
self.focused_panel = match self.focused_panel {
McPanel::Inbox => McPanel::Schedule,
McPanel::Activity => McPanel::Inbox,
McPanel::Schedule => McPanel::Activity,
};
self.selected_index = 0;
self.scroll_offset = 0;
}
}