1use crate::preview::structured_log::LogEntry;
2use crate::preview::{PreviewContent, PreviewSource};
3use crate::runtime::interactive::input::InputEvent;
4use crate::search::matcher::MatcherState;
5use crate::search::types::SearchMode;
6
7pub enum AppEvent {
8 Input(InputEvent),
9 Matcher(MatcherState, u64),
10 Preview(PreviewSource, PreviewContent),
11 LogAppend(String, Vec<LogEntry>),
12}
13
14#[derive(Debug, PartialEq, Clone, Copy)]
15pub enum Mode {
16 Search,
17 Preview,
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum InputMode {
22 Normal,
23 Visual,
24 VisualLine,
25 Insert,
26 Command,
27}
28
29#[derive(Debug, Clone, Copy, PartialEq, Eq)]
30pub enum HelpTab {
31 Overview,
32 Search,
33 Preview,
34 Logs,
35 Layout,
36}
37
38impl HelpTab {
39 pub fn title(self) -> &'static str {
40 match self {
41 Self::Overview => "Overview",
42 Self::Search => "Search",
43 Self::Preview => "Preview",
44 Self::Logs => "Logs",
45 Self::Layout => "Layout",
46 }
47 }
48
49 pub fn next(self) -> Self {
50 match self {
51 Self::Overview => Self::Search,
52 Self::Search => Self::Preview,
53 Self::Preview => Self::Logs,
54 Self::Logs => Self::Layout,
55 Self::Layout => Self::Overview,
56 }
57 }
58
59 pub fn previous(self) -> Self {
60 match self {
61 Self::Overview => Self::Layout,
62 Self::Search => Self::Overview,
63 Self::Preview => Self::Search,
64 Self::Logs => Self::Preview,
65 Self::Layout => Self::Logs,
66 }
67 }
68}
69
70#[derive(Debug, Clone, Copy, PartialEq, Eq)]
71pub enum AppAction {
72 Quit,
73 FocusSearch,
74 FocusPreview,
75 ToggleHelp,
76 CloseHelp,
77 ShowHelpTab(HelpTab),
78 NextHelpTab,
79 PreviousHelpTab,
80 TogglePreviewFullscreen,
81 SwapPanes,
82 AdjustPreviewWidth(i16),
83 ToggleSearchBarPosition,
84 TogglePreviewVisibility,
85 ToggleExactMatcher,
86 SetSearchMode(SearchMode),
87 RequestSearchRestart,
88}