#[allow(clippy::wildcard_imports)]
use super::*;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Action {
None,
Quit,
OpenEditor(String),
OpenViewer(String),
OpenViewerAt(PathBuf),
OpenRepo(PathBuf),
CompareEdit,
ReeditRepair,
OpenAgent(String),
SwitchBoard(usize),
ConfirmDeleteYes,
ConfirmDeleteNo,
FilterModalFocus(FilterField),
FilterPickerOption(usize),
FilterPickerClose,
SettingsRow(usize),
ConfigDetailRow(usize),
DatePickerHit(DatePickerHit),
HelpClose,
SwitchMode(TopMode),
TriageOpenStatus,
TriageOpenAssignee,
TriageCreate,
TriageFocusQueue,
TriagePickOption(usize),
TriageDropdownClose,
TriageModalOk,
CycleSelect(usize),
OpenIssue(String),
TemplateOpen,
TemplatePickOption(usize),
ConfigSection(ConfigSection),
ConfigPlanningRow(usize),
ConfigListRow(usize),
SelectBoard(String),
SelectCycle(String),
SelectMilestone(String),
NewFromTemplate(String),
}
pub(in crate::app) struct CapacityCache {
pub(in crate::app) index: crate::cycle_schedule::identity::ScheduleIndex,
pub(in crate::app) snapshot: crate::capacity::scope::IssueSnapshot,
pub(in crate::app) view: crate::ui::schedule::CapacityView,
pub(in crate::app) nothing_committed: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(in crate::app) enum CandidateAction {
Generate,
Defer,
Skip,
Ignore,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum MoveTarget {
Visible(usize),
Named(String),
}
impl MoveTarget {
pub fn name(&self, board: &BoardState) -> String {
match self {
Self::Visible(index) => board.column_name(*index).to_string(),
Self::Named(name) => name.clone(),
}
}
pub fn visible_index(&self) -> Option<usize> {
match self {
Self::Visible(index) => Some(*index),
Self::Named(_) => None,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PendingMove {
pub numbers: Vec<u32>,
pub target: MoveTarget,
pub target_name: String,
pub reason: Option<String>,
pub acknowledged: bool,
#[allow(clippy::option_option)]
pub commit: Option<Option<String>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LinkStep {
Target,
Kind,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct HitRegion {
pub rect: Rect,
pub action: Action,
}
#[derive(Debug)]
pub(in crate::app) struct MouseDown {
pub(in crate::app) col: usize,
pub(in crate::app) card: Option<usize>,
pub(in crate::app) at: Instant,
}
#[derive(Debug)]
pub(in crate::app) struct Drag {
pub(in crate::app) col: usize,
pub(in crate::app) card: Option<usize>,
}
#[derive(Debug)]
pub struct MouseState {
pub(in crate::app) last_down: Option<MouseDown>,
pub(in crate::app) drag: Option<Drag>,
pub double_click_window: Duration,
}
impl Default for MouseState {
fn default() -> Self {
MouseState {
last_down: None,
drag: None,
double_click_window: Duration::from_millis(500),
}
}
}
pub(in crate::app) const WHEEL_ROWS: u16 = 5;
pub(in crate::app) const MAX_DETAIL_NAV: usize = 32;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub(in crate::app) struct HelpMetrics {
pub(in crate::app) visible: u16,
pub(in crate::app) max_scroll: u16,
}
pub(in crate::app) struct PendingEdit {
pub(in crate::app) filename: String,
pub(in crate::app) temp: PathBuf,
pub(in crate::app) snapshot: Vec<u8>,
}
pub(in crate::app) struct ViewSession {
pub(in crate::app) marker: ActiveViewMarker,
pub(in crate::app) name: String,
pub(in crate::app) visibility: bool,
}