CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
SliderView.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
20class SliderView : public ViewBase {
21public:
26 using SaveCallback = void(*)(uint16_t value);
27
32 using ChangeCallback = void(*)(uint16_t value);
33
40 using StepCallback = uint16_t(*)(uint16_t currentValue, bool increasing);
41
46 using CancelCallback = void(*)();
47
57 void init(const char* title, uint16_t minVal, uint16_t maxVal,
58 uint16_t initial, uint16_t step, const char* unit = nullptr);
59
63 void setOnSave(SaveCallback callback) { onSave_ = callback; }
64
68 void setOnChange(ChangeCallback callback) { onChange_ = callback; }
69
74 void setStepCallback(StepCallback callback) { stepCallback_ = callback; }
75
79 void setOnCancel(CancelCallback callback) { onCancel_ = callback; }
80
84 uint16_t getValue() const { return value_; }
85
89 void setValue(uint16_t value);
90
95 void setDisplayOffset(int16_t offset) { displayOffset_ = offset; }
96
100 void setZeroLabel(const char* label) { zeroLabel_ = label; }
101
102 // IView implementation
103 void render(bool partial) override;
104 InputResult onKey(char key) override;
105 void onTick(uint32_t nowMs) override;
106 const char* getName() const override { return "SliderView"; }
107 const char* getFooterHint() const override;
108
109private:
110 const char* title_ = nullptr;
111 const char* unit_ = nullptr;
112 const char* zeroLabel_ = nullptr;
113 uint16_t value_ = 0;
114 uint16_t minValue_ = 0;
115 uint16_t maxValue_ = 100;
116 uint16_t step_ = 1;
117 int16_t displayOffset_ = 0;
118 SaveCallback onSave_ = nullptr;
119 CancelCallback onCancel_ = nullptr;
120 ChangeCallback onChange_ = nullptr;
121 StepCallback stepCallback_ = nullptr;
122 uint32_t repeatStartMs_ = 0;
123 uint32_t lastRepeatMs_ = 0;
124
125 void adjust(bool increase);
126};
127
128// ============================================================================
129// Convenience Functions
130// ============================================================================
131
151SliderView* showSlider(const char* title, uint16_t minVal, uint16_t maxVal,
152 uint16_t initial, uint16_t step, const char* unit,
154 SliderView::ChangeCallback onChange = nullptr);
155
156} // namespace cdc::ui
void(*)() CancelCallback
Definition SliderView.h:46
const char * getFooterHint() const override
Returns localized footer hint text.
void setStepCallback(StepCallback callback)
Definition SliderView.h:74
uint16_t getValue() const
Definition SliderView.h:84
void setOnCancel(CancelCallback callback)
Definition SliderView.h:79
const char * getName() const override
Definition SliderView.h:106
void setZeroLabel(const char *label)
Definition SliderView.h:100
InputResult onKey(char key) override
Handles key input for slider adjustment and confirmation.
void onTick(uint32_t nowMs) override
uint16_t(*)(uint16_t currentValue, bool increasing) StepCallback
Definition SliderView.h:40
void setOnChange(ChangeCallback callback)
Definition SliderView.h:68
void setValue(uint16_t value)
Sets slider value with range clamping.
void(*)(uint16_t value) ChangeCallback
Definition SliderView.h:32
void setDisplayOffset(int16_t offset)
Definition SliderView.h:95
void init(const char *title, uint16_t minVal, uint16_t maxVal, uint16_t initial, uint16_t step, const char *unit=nullptr)
Initializes slider bounds, value, and display options.
void(*)(uint16_t value) SaveCallback
Definition SliderView.h:26
void setOnSave(SaveCallback callback)
Definition SliderView.h:63
const char * title_
Definition IView.h:202
Centralized key-code constants for cdc_views.
Definition IModule.h:8
InputResult
Definition IView.h:10
SliderView * showSlider(const char *title, uint16_t minVal, uint16_t maxVal, uint16_t initial, uint16_t step, const char *unit, SliderView::SaveCallback onSave, SliderView::ChangeCallback onChange=nullptr)
Shows a shared slider view instance.