use crate::components::sprint_picker::{SprintFilter, SprintPicker};
use kanban_core::SelectionState;
use std::cell::Cell;
use uuid::Uuid;
#[derive(Default, Clone, Copy, PartialEq, Eq, Debug)]
pub enum CreateCardFocus {
#[default]
Title,
Sprint,
}
pub struct DialogInputState {
pub import_files: Vec<String>,
pub import_selection: SelectionState,
pub priority_selection: SelectionState,
pub column_selection: SelectionState,
pub column_scroll: Cell<usize>,
pub sprint_assign_selection: SelectionState,
pub task_list_view_selection: SelectionState,
pub carry_over_sprint_selection: SelectionState,
pub carry_over_source_sprint_id: Option<Uuid>,
pub create_card_sprint_picker: SprintPicker,
pub create_card_focus: CreateCardFocus,
pub assign_sprint_picker: SprintPicker,
}
impl Default for DialogInputState {
fn default() -> Self {
Self {
import_files: Vec::new(),
import_selection: SelectionState::default(),
priority_selection: SelectionState::default(),
column_selection: SelectionState::default(),
column_scroll: Cell::new(0),
sprint_assign_selection: SelectionState::default(),
task_list_view_selection: SelectionState::default(),
carry_over_sprint_selection: SelectionState::default(),
carry_over_source_sprint_id: None,
create_card_sprint_picker: SprintPicker::with_filter(SprintFilter::ActiveOnly),
create_card_focus: CreateCardFocus::default(),
assign_sprint_picker: SprintPicker::with_filter(SprintFilter::All),
}
}
}
impl DialogInputState {
pub fn create_card_focus_is_title(&self) -> bool {
self.create_card_focus == CreateCardFocus::Title
}
pub fn toggle_create_card_focus(&mut self) {
self.create_card_focus = match self.create_card_focus {
CreateCardFocus::Title => CreateCardFocus::Sprint,
CreateCardFocus::Sprint => CreateCardFocus::Title,
};
}
pub fn reset_create_card_focus(&mut self) {
self.create_card_focus = CreateCardFocus::Title;
}
}