You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.1 KiB
108 lines
2.1 KiB
/*
|
|
* Copyright 2023 jacqueline <me@jacqueline.id.au>
|
|
*
|
|
* SPDX-License-Identifier: GPL-3.0-only
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <cstdint>
|
|
#include <list>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "bluetooth.hpp"
|
|
#include "bluetooth_types.hpp"
|
|
#include "display.hpp"
|
|
#include "index.hpp"
|
|
#include "lvgl.h"
|
|
|
|
#include "nvs.hpp"
|
|
#include "screen.hpp"
|
|
|
|
namespace ui {
|
|
namespace screens {
|
|
|
|
class Settings : public MenuScreen {
|
|
public:
|
|
Settings();
|
|
};
|
|
|
|
class Bluetooth : public MenuScreen {
|
|
public:
|
|
Bluetooth(drivers::Bluetooth& bt, drivers::NvsStorage& nvs);
|
|
|
|
auto ChangeEnabledState(bool enabled) -> void;
|
|
auto RefreshDevicesList() -> void;
|
|
auto OnDeviceSelected(size_t index) -> void;
|
|
|
|
private:
|
|
auto RemoveAllDevices() -> void;
|
|
auto AddPreferredDevice(const drivers::bluetooth::Device&) -> void;
|
|
auto AddDevice(const drivers::bluetooth::Device&) -> void;
|
|
|
|
drivers::Bluetooth& bt_;
|
|
drivers::NvsStorage& nvs_;
|
|
|
|
lv_obj_t* devices_list_;
|
|
lv_obj_t* preferred_device_;
|
|
|
|
std::list<drivers::bluetooth::mac_addr_t> macs_in_list_;
|
|
};
|
|
|
|
class Headphones : public MenuScreen {
|
|
public:
|
|
Headphones(drivers::NvsStorage& nvs);
|
|
|
|
auto ChangeMaxVolume(uint8_t index) -> void;
|
|
auto ChangeCustomVolume(int8_t diff) -> void;
|
|
|
|
private:
|
|
auto UpdateCustomVol(uint16_t) -> void;
|
|
|
|
drivers::NvsStorage& nvs_;
|
|
lv_obj_t* custom_vol_container_;
|
|
lv_obj_t* custom_vol_label_;
|
|
|
|
std::vector<uint16_t> index_to_level_;
|
|
uint16_t custom_limit_;
|
|
};
|
|
|
|
class Appearance : public MenuScreen {
|
|
public:
|
|
Appearance(drivers::NvsStorage& nvs, drivers::Display& display);
|
|
|
|
auto ChangeBrightness(uint_fast8_t) -> void;
|
|
auto CommitBrightness() -> void;
|
|
|
|
private:
|
|
drivers::NvsStorage& nvs_;
|
|
drivers::Display& display_;
|
|
|
|
lv_obj_t* current_brightness_label_;
|
|
uint_fast8_t current_brightness_;
|
|
};
|
|
|
|
class InputMethod : public MenuScreen {
|
|
public:
|
|
InputMethod();
|
|
};
|
|
|
|
class Storage : public MenuScreen {
|
|
public:
|
|
Storage();
|
|
};
|
|
|
|
class FirmwareUpdate : public MenuScreen {
|
|
public:
|
|
FirmwareUpdate();
|
|
};
|
|
|
|
class About : public MenuScreen {
|
|
public:
|
|
About();
|
|
};
|
|
|
|
} // namespace screens
|
|
} // namespace ui
|
|
|