vcard_tui 0.1.2

Terminal UI application for managing vCard contacts.
use crate::state::files::{FilesExclude, FilesState};
use crate::state::selected::{Select, Selected};

#[derive(Clone)]
pub struct ImportState {
    pub files: FilesState,
    pub selected: Selected<ImportSelected>,
}

impl Default for ImportState {
    fn default() -> Self {
        Self {
            files: FilesState::new(FilesExclude::None),
            selected: Selected::from(ImportSelected::Files),
        }
    }
}

#[derive(Clone, Eq, PartialEq)]
pub enum ImportSelected {
    Files,
    Cancel,
    Import,
}

impl Select for Selected<ImportSelected> {
    fn prev(&mut self) {
        self.set(match self.get() {
            ImportSelected::Files => ImportSelected::Files,
            ImportSelected::Cancel => ImportSelected::Files,
            ImportSelected::Import => ImportSelected::Cancel,
        })
    }
    fn next(&mut self) {
        self.set(match self.get() {
            ImportSelected::Files => ImportSelected::Cancel,
            ImportSelected::Cancel => ImportSelected::Import,
            ImportSelected::Import => ImportSelected::Import,
        })
    }
}