Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions examples/companion_radio/ui-new/UITask.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,7 @@ void UITask::loop() {
c = handleLongPress(KEY_RIGHT);
}
ev = back_btn.check();
if (ev == BUTTON_EVENT_TRIPLE_CLICK) {
if (ev == BUTTON_EVENT_TRIPLE_CLICK || ev == BUTTON_EVENT_QUAD_CLICK) { // Until we have a need for Quad Click here, we treat is as a Triple Click
c = handleTripleClick(KEY_SELECT);
}
#elif defined(PIN_USER_BTN)
Expand All @@ -743,6 +743,8 @@ void UITask::loop() {
c = handleDoubleClick(KEY_PREV);
} else if (ev == BUTTON_EVENT_TRIPLE_CLICK) {
c = handleTripleClick(KEY_SELECT);
} else if (ev == BUTTON_EVENT_QUAD_CLICK) {
c = handleQuadClick(KEY_SELECT);
}
#endif
#if defined(PIN_USER_BTN_ANA)
Expand All @@ -754,19 +756,19 @@ void UITask::loop() {
c = handleLongPress(KEY_ENTER);
} else if (ev == BUTTON_EVENT_DOUBLE_CLICK) {
c = handleDoubleClick(KEY_PREV);
} else if (ev == BUTTON_EVENT_TRIPLE_CLICK) {
} else if (ev == BUTTON_EVENT_TRIPLE_CLICK || ev == BUTTON_EVENT_QUAD_CLICK) { // Until we have a need for Quad Click here, we treat is as a Triple Click
c = handleTripleClick(KEY_SELECT);
}
_analogue_pin_read_millis = millis();
}
#endif
#if defined(BACKLIGHT_BTN)
if (millis() > next_backlight_btn_check) {
bool touch_state = digitalRead(PIN_BUTTON2);
bool touch_state = digitalRead(BACKLIGHT_BTN);
#if defined(DISP_BACKLIGHT)
digitalWrite(DISP_BACKLIGHT, !touch_state);
digitalWrite(DISP_BACKLIGHT, _forceBacklight || !touch_state);
#elif defined(EXP_PIN_BACKLIGHT)
expander.digitalWrite(EXP_PIN_BACKLIGHT, !touch_state);
expander.digitalWrite(EXP_PIN_BACKLIGHT, _forceBacklight || !touch_state);
#endif
next_backlight_btn_check = millis() + 300;
}
Expand Down Expand Up @@ -876,6 +878,14 @@ char UITask::handleTripleClick(char c) {
return c;
}

char UITask::handleQuadClick(char c) {
MESH_DEBUG_PRINTLN("UITask: quad click triggered");
checkDisplayOn(c);
toggleBacklight();
c = 0;
return c;
}

bool UITask::getGPSState() {
if (_sensors != NULL) {
int num = _sensors->getNumSettings();
Expand Down Expand Up @@ -925,5 +935,18 @@ void UITask::toggleBuzzer() {
the_mesh.savePrefs();
showAlert(buzzer.isQuiet() ? "Buzzer: OFF" : "Buzzer: ON", 800);
_next_refresh = 0; // trigger refresh
#else
showAlert("Buzzer N/A", 800);
#endif
}

void UITask::toggleBacklight() {
// Toggle forced backlight mode
#if defined(DISP_BACKLIGHT) || defined(EXP_PIN_BACKLIGHT)
_forceBacklight = !_forceBacklight;
showAlert(_forceBacklight ? "Backlight: ALWAYS" : "Backlight: BUTTON ", 800);
_next_refresh = 0; // trigger refresh
#else
showAlert("Backlight N/A", 800);
#endif
}
3 changes: 3 additions & 0 deletions examples/companion_radio/ui-new/UITask.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class UITask : public AbstractUITask {
unsigned long _alert_expiry;
int _msgcount;
unsigned long ui_started_at, next_batt_chck;
bool _forceBacklight = false;
int next_backlight_btn_check = 0;
#ifdef PIN_STATUS_LED
int led_state = 0;
Expand All @@ -60,6 +61,7 @@ class UITask : public AbstractUITask {
char handleLongPress(char c);
char handleDoubleClick(char c);
char handleTripleClick(char c);
char handleQuadClick(char c);

void setCurrScreen(UIScreen* c);

Expand All @@ -78,6 +80,7 @@ class UITask : public AbstractUITask {
bool hasDisplay() const { return _display != NULL; }
bool isButtonPressed() const;

void toggleBacklight();
void toggleBuzzer();
bool getGPSState();
void toggleGPS();
Expand Down
7 changes: 5 additions & 2 deletions src/helpers/ui/MomentaryButton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,9 +131,12 @@ int MomentaryButton::check(bool repeat_click) {
case 3:
event = BUTTON_EVENT_TRIPLE_CLICK;
break;
case 4:
event = BUTTON_EVENT_QUAD_CLICK;
break;
default:
// For 4+ clicks, treat as triple click?
event = BUTTON_EVENT_TRIPLE_CLICK;
// For 4+ clicks, treat as quad click?
event = BUTTON_EVENT_QUAD_CLICK;
break;
}
_click_count = 0;
Expand Down
1 change: 1 addition & 0 deletions src/helpers/ui/MomentaryButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#define BUTTON_EVENT_LONG_PRESS 2
#define BUTTON_EVENT_DOUBLE_CLICK 3
#define BUTTON_EVENT_TRIPLE_CLICK 4
#define BUTTON_EVENT_QUAD_CLICK 5

class MomentaryButton {
int8_t _pin;
Expand Down