~ruther/simple-clock

ref: 9a82d5eec0c6de36140bb72311230a4a12d7a9ae simple-clock/source/src/display_view.rs -rw-r--r-- 1.0 KiB
9a82d5ee — František Boháček chore(src): move source to source/ folder 1 year, 8 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use crate::{
    clock_display::{ClockDisplay, DisplayError},
    clock_state::ClockState,
};

pub mod clock_display_view;
pub mod date_display_view;

#[derive(Copy, Clone, PartialEq, Eq)]
#[repr(usize)]
pub enum DisplayViews {
    ClockView = 0,
    ClockSecondsView = 1,
    ClockDateView = 2,
    DateView = 3,
}

impl DisplayViews {
    pub fn count() -> usize {
        4
    }
}

impl From<usize> for DisplayViews {
    fn from(value: usize) -> Self {
        match value {
            0 => Self::ClockView,
            1 => Self::ClockSecondsView,
            2 => Self::ClockDateView,
            3 => Self::DateView,
            _ => panic!(),
        }
    }
}

#[derive(Debug)]
pub enum DisplayViewError {
    Unknown,
    DisplayError(DisplayError),
}

impl From<DisplayError> for DisplayViewError {
    fn from(value: DisplayError) -> Self {
        Self::DisplayError(value)
    }
}

pub trait DisplayView {
    fn update_display(
        &mut self,
        state: &ClockState,
        display: &mut ClockDisplay,
    ) -> Result<(), DisplayViewError>;
}
Do not follow this link