CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
ConfirmView.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 ConfirmView : public ViewBase {
19public:
20 enum class Icon : uint8_t {
21 NONE = 0,
25 };
26
27 using ConfirmCallback = void(*)(void* userData);
28 using CancelCallback = void(*)(void* userData);
29
35 void init(const char* message, Icon icon = Icon::QUESTION);
36
40 void setOnConfirm(ConfirmCallback callback, void* userData = nullptr) {
41 onConfirm_ = callback;
42 confirmUserData_ = userData;
43 }
44
48 void setOnCancel(CancelCallback callback, void* userData = nullptr) {
49 onCancel_ = callback;
50 cancelUserData_ = userData;
51 }
52
53 // IView implementation
54 void render(bool partial) override;
55 InputResult onKey(char key) override;
56 const char* getName() const override { return "ConfirmView"; }
57 const char* getFooterHint() const override { return "Y=OK N=Abbruch"; }
58
59private:
60 static constexpr uint16_t MAX_MSG_LEN = 96;
61 static constexpr int BOX_WIDTH = 220;
62 static constexpr int BOX_HEIGHT = 60;
63
64 char message_[MAX_MSG_LEN] = {};
65 Icon icon_ = Icon::QUESTION;
66 ConfirmCallback onConfirm_ = nullptr;
67 CancelCallback onCancel_ = nullptr;
68 void* confirmUserData_ = nullptr;
69 void* cancelUserData_ = nullptr;
70};
71
72// ============================================================================
73// Convenience Functions
74// ============================================================================
75
84void showConfirm(const char* message,
86 ConfirmView::CancelCallback onCancel = nullptr,
88 void* userData = nullptr);
89
94inline void askConfirm(const char* message, ConfirmView::ConfirmCallback onYes, void* userData = nullptr) {
95 showConfirm(message, onYes, nullptr, ConfirmView::Icon::QUESTION, userData);
96}
97
98} // namespace cdc::ui
void setOnConfirm(ConfirmCallback callback, void *userData=nullptr)
Definition ConfirmView.h:40
InputResult onKey(char key) override
Handles key input for the confirmation dialog.
const char * getName() const override
Definition ConfirmView.h:56
void(*)(void *userData) CancelCallback
Definition ConfirmView.h:28
void init(const char *message, Icon icon=Icon::QUESTION)
Initializes confirm dialog message and icon.
void setOnCancel(CancelCallback callback, void *userData=nullptr)
Definition ConfirmView.h:48
const char * getFooterHint() const override
Definition ConfirmView.h:57
void(*)(void *userData) ConfirmCallback
Definition ConfirmView.h:27
Centralized key-code constants for cdc_views.
Definition IModule.h:8
void askConfirm(const char *message, ConfirmView::ConfirmCallback onYes, void *userData=nullptr)
Definition ConfirmView.h:94
InputResult
Definition IView.h:10
void showConfirm(const char *message, ConfirmView::ConfirmCallback onConfirm, ConfirmView::CancelCallback onCancel=nullptr, ConfirmView::Icon icon=ConfirmView::Icon::QUESTION, void *userData=nullptr)
Shows a shared modal confirmation dialog instance.