budget_tracker_tui 1.4.1

A feature rich TUI budget tracker app
use crate::app::state::App;
use crossterm::event::{KeyCode, KeyEvent, KeyModifiers};

pub fn handle_recurring_mode(app: &mut App, key_event: KeyEvent) {
    match (key_event.modifiers, key_event.code) {
        (KeyModifiers::NONE, KeyCode::Esc) => app.exit_recurring_settings(true),
        (KeyModifiers::NONE, KeyCode::Enter) => match app.current_recurring_field {
            1 => app.start_frequency_selection(),
            _ => app.save_recurring_settings(),
        },
        (KeyModifiers::NONE, KeyCode::Tab) | (KeyModifiers::NONE, KeyCode::Down) => {
            app.next_recurring_field()
        }
        (KeyModifiers::NONE, KeyCode::BackTab) | (KeyModifiers::NONE, KeyCode::Up) => {
            app.previous_recurring_field()
        }
        (KeyModifiers::NONE, KeyCode::Left) => match app.current_recurring_field {
            0 => app.toggle_recurring_enabled(),
            2 => app.decrement_date_recurring(),
            _ => {}
        },
        (KeyModifiers::NONE, KeyCode::Right) => match app.current_recurring_field {
            0 => app.toggle_recurring_enabled(),
            2 => app.increment_date_recurring(),
            _ => {}
        },
        (KeyModifiers::SHIFT, KeyCode::Left) if app.current_recurring_field == 2 => {
            app.decrement_month_recurring();
        }
        (KeyModifiers::SHIFT, KeyCode::Right) if app.current_recurring_field == 2 => {
            app.increment_month_recurring();
        }
        (KeyModifiers::NONE, KeyCode::Char(c)) => match app.current_recurring_field {
            2 if c == '+' || c == '=' => app.increment_date_recurring(),
            2 if c == '-' => app.decrement_date_recurring(),
            2 if c.is_ascii_digit() => app.insert_char_recurring(c),
            _ => {}
        },
        (KeyModifiers::NONE, KeyCode::Backspace) if app.current_recurring_field == 2 => {
            app.delete_char_recurring();
        }
        _ => {}
    }
}