CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
TimeInputView.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 TimeInputView : public ViewBase {
19public:
25 using ConfirmCallback = void(*)(uint8_t hour, uint8_t minute);
26
31 using CancelCallback = void(*)();
32
39 void init(const char* title, uint8_t hour, uint8_t minute);
40
44 void setOnConfirm(ConfirmCallback callback) { onConfirm_ = callback; }
45
49 void setOnCancel(CancelCallback callback) { onCancel_ = callback; }
50
54 uint8_t getHour() const { return hour_; }
55 uint8_t getMinute() const { return minute_; }
56
57 // IView implementation
58 void render(bool partial) override;
59 InputResult onKey(char key) override;
60 const char* getName() const override { return "TimeInputView"; }
61 const char* getFooterHint() const override;
62
63private:
64 enum class Field : uint8_t { HOUR = 0, MINUTE = 1 };
65
66 const char* title_ = nullptr;
67 uint8_t hour_ = 0;
68 uint8_t minute_ = 0;
69 Field currentField_ = Field::HOUR;
70 uint8_t digitPos_ = 0; // Position within current field
71 ConfirmCallback onConfirm_ = nullptr;
72 CancelCallback onCancel_ = nullptr;
73
74 void nextField();
75 void prevField();
76 void clearField();
77 void enterDigit(char digit);
78};
79
80} // namespace cdc::ui
void(*)(uint8_t hour, uint8_t minute) ConfirmCallback
InputResult onKey(char key) override
Handles key input for the time editor.
uint8_t getHour() const
void setOnCancel(CancelCallback callback)
const char * getName() const override
uint8_t getMinute() const
void init(const char *title, uint8_t hour, uint8_t minute)
Initializes time input state.
const char * getFooterHint() const override
Returns localized footer hint text.
void setOnConfirm(ConfirmCallback callback)
const char * title_
Definition IView.h:202
Centralized key-code constants for cdc_views.
Definition IModule.h:8
InputResult
Definition IView.h:10