CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
DateInputView.h
Go to the documentation of this file.
1#pragma once
2
3#include "cdc_ui/IView.h"
4#include <cstdint>
5
6namespace cdc::ui {
7
18class DateInputView : public ViewBase {
19public:
26 using ConfirmCallback = void(*)(uint8_t day, uint8_t month, uint16_t year);
27
32 using CancelCallback = void(*)();
33
41 void init(const char* title, uint8_t day, uint8_t month, uint16_t year);
42
46 void setOnConfirm(ConfirmCallback callback) { onConfirm_ = callback; }
47
51 void setOnCancel(CancelCallback callback) { onCancel_ = callback; }
52
56 uint8_t getDay() const { return day_; }
57 uint8_t getMonth() const { return month_; }
58 uint16_t getYear() const { return year_; }
59
60 // IView implementation
61 void render(bool partial) override;
62 InputResult onKey(char key) override;
63 const char* getName() const override { return "DateInputView"; }
64 const char* getFooterHint() const override;
65
66private:
67 enum class Field : uint8_t { DAY = 0, MONTH = 1, YEAR = 2 };
68
69 const char* title_ = nullptr;
70 uint8_t day_ = 1;
71 uint8_t month_ = 1;
72 uint16_t year_ = 2026;
73 Field currentField_ = Field::DAY;
74 uint8_t digitPos_ = 0; // Position within current field
75 ConfirmCallback onConfirm_ = nullptr;
76 CancelCallback onCancel_ = nullptr;
77
78 void nextField();
79 void prevField();
80 void clearField();
81 void enterDigit(char digit);
82 bool validateAndClamp();
83};
84
85} // namespace cdc::ui
const char * getName() const override
InputResult onKey(char key) override
Handles key input for the date editor.
uint16_t getYear() const
void init(const char *title, uint8_t day, uint8_t month, uint16_t year)
Initializes date input state.
const char * getFooterHint() const override
Returns localized footer hint text.
void setOnConfirm(ConfirmCallback callback)
uint8_t getMonth() const
void setOnCancel(CancelCallback callback)
uint8_t getDay() const
void(*)(uint8_t day, uint8_t month, uint16_t year) ConfirmCallback
const char * title_
Definition IView.h:202
Centralized key-code constants for cdc_views.
Definition IModule.h:8
InputResult
Definition IView.h:10