[Add] Split Focus From UI
This commit is contained in:
parent
6b957f8eaa
commit
a81f80b191
4 changed files with 68 additions and 64 deletions
54
src/terms/focus.rs
Normal file
54
src/terms/focus.rs
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
use crate::terms::consent_state::ConsentState;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum Focus {
|
||||
Eula,
|
||||
Tos,
|
||||
Pp,
|
||||
Cancel,
|
||||
Continue,
|
||||
ContinueAll,
|
||||
}
|
||||
impl Focus {
|
||||
pub fn next(&mut self, state: ConsentState) {
|
||||
*self = match self {
|
||||
Focus::Eula => Focus::Tos,
|
||||
Focus::Tos => Focus::Pp,
|
||||
Focus::Pp => Focus::Cancel,
|
||||
Focus::Cancel => {
|
||||
if state.can_continue() {
|
||||
Focus::Continue
|
||||
} else {
|
||||
Focus::Eula
|
||||
}
|
||||
}
|
||||
Focus::Continue => {
|
||||
if state.can_continue_all() {
|
||||
Focus::ContinueAll
|
||||
} else {
|
||||
Focus::Eula
|
||||
}
|
||||
}
|
||||
Focus::ContinueAll => Focus::Eula,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn prev(&mut self, state: ConsentState) {
|
||||
*self = match self {
|
||||
Focus::Eula => {
|
||||
if state.can_continue_all() {
|
||||
Focus::ContinueAll
|
||||
} else if state.can_continue() {
|
||||
Focus::Continue
|
||||
} else {
|
||||
Focus::Cancel
|
||||
}
|
||||
}
|
||||
Focus::Tos => Focus::Eula,
|
||||
Focus::Pp => Focus::Tos,
|
||||
Focus::Cancel => Focus::Pp,
|
||||
Focus::Continue => Focus::Cancel,
|
||||
Focus::ContinueAll => Focus::Continue,
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue