Files
HeavenlyHeroStar/main/app/ui_handlers.c
T

186 lines
4.1 KiB
C

#include "ui_handlers.h"
#include <stdbool.h>
#include <stdint.h>
#include "ble_hid.h"
#include "boot_button.h"
#include "esp_log.h"
#include "esp_system.h"
#include "screens/ui_Settings.h"
#include "settings/settings_store.h"
#include "settings/settings_tabs.h"
#include "ui_events.h"
static const char *TAG = "ui_handlers";
static void send_hid_combo_or_warn(uint8_t modifier, uint8_t keycode)
{
if (ble_hid_ready()) {
ble_hid_send_combo(modifier, keycode);
} else {
ESP_LOGW(TAG, "HID not ready");
}
}
static void send_consumer_or_warn(uint16_t usage)
{
if (ble_hid_ready()) {
ble_hid_send_consumer(usage);
} else {
ESP_LOGW(TAG, "HID not ready");
}
}
static void on_boot_press(void)
{
send_hid_combo_or_warn(0, HID_KEY_C);
}
void ui_handlers_init(void)
{
boot_button_init(on_boot_press);
}
void settings_on_tab_clicked(lv_event_t *e)
{
settings_tab_t tab = (settings_tab_t)(intptr_t)lv_event_get_user_data(e);
ui_Settings_switch_tab(tab);
}
void settings_on_save_clicked(lv_event_t *e)
{
(void)e;
settings_data_t buf = *settings_store_get();
settings_tabs_collect(ui_Settings_get_active_tab(), &buf);
settings_store_update(&buf);
esp_err_t err = settings_store_commit();
if (err == ESP_OK) {
settings_store_apply();
ESP_LOGI(TAG, "Settings saved");
} else {
ESP_LOGW(TAG, "Settings save failed");
}
}
void settings_on_factory_reset(lv_event_t *e)
{
(void)e;
ESP_LOGW(TAG, "Factory reset");
settings_store_factory_reset();
settings_store_apply();
esp_restart();
}
void settings_on_brightness_changed(lv_event_t *e)
{
lv_obj_t *slider = lv_event_get_target(e);
uint8_t pct = (uint8_t)lv_slider_get_value(slider);
settings_data_t buf = *settings_store_get();
buf.brightness_pct = pct;
settings_store_update(&buf);
settings_store_apply();
lv_obj_t *pct_label = lv_obj_get_user_data(slider);
if (pct_label != NULL) {
lv_label_set_text_fmt(pct_label, "%u%%", pct);
}
}
void settings_on_value_changed(lv_event_t *e)
{
settings_field_t field =
(settings_field_t)(intptr_t)lv_event_get_user_data(e);
lv_obj_t *target = lv_event_get_target(e);
settings_data_t buf = *settings_store_get();
switch (field) {
case SETTINGS_FIELD_NOTIFICATION:
buf.notification_enabled = lv_obj_has_state(target, LV_STATE_CHECKED);
break;
case SETTINGS_FIELD_VOLUME:
buf.volume_pct = (uint8_t)lv_slider_get_value(target);
break;
case SETTINGS_FIELD_MUTE:
buf.mute = lv_obj_has_state(target, LV_STATE_CHECKED);
break;
case SETTINGS_FIELD_SHAKE_NAV:
buf.shake_nav_enabled = lv_obj_has_state(target, LV_STATE_CHECKED);
break;
case SETTINGS_FIELD_SHAKE_SENS:
buf.shake_sensitivity = (shake_sensitivity_t)lv_dropdown_get_selected(target);
break;
default:
LV_ASSERT_MSG(false, "unexpected settings_field_t");
break;
}
settings_store_update(&buf);
}
void settings_on_network_scan_clicked(lv_event_t *e)
{
(void)e;
ESP_LOGI(TAG, "Not available");
}
void update_year_action(lv_event_t * e)
{
(void)e;
}
void click_button_two(lv_event_t * e)
{
(void)e;
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_C);
}
void click_button_three(lv_event_t * e)
{
(void)e;
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_V);
}
void click_button_one(lv_event_t * e)
{
(void)e;
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_X);
}
void click_consumer_vol_up(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_VOLUME_UP);
}
void click_consumer_vol_down(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_VOLUME_DOWN);
}
void click_consumer_mute(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_MUTE);
}
void click_consumer_play_pause(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_PLAY_PAUSE);
}
void click_consumer_prev(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_SCAN_PREVIOUS);
}
void click_consumer_next(lv_event_t * e)
{
(void)e;
send_consumer_or_warn(HID_CONSUMER_SCAN_NEXT);
}