mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2025-12-19 15:47:40 +03:00
Restore the wifi screen
This commit is contained in:
parent
08227a07fa
commit
5d935e6719
@ -8,8 +8,9 @@
|
|||||||
// Define the static settings list
|
// Define the static settings list
|
||||||
|
|
||||||
const SettingInfo SettingsActivity::settingsList[settingsCount] = {
|
const SettingInfo SettingsActivity::settingsList[settingsCount] = {
|
||||||
{"White Sleep Screen", &CrossPointSettings::whiteSleepScreen},
|
{"White Sleep Screen", SettingType::TOGGLE, &CrossPointSettings::whiteSleepScreen},
|
||||||
{"Extra Paragraph Spacing", &CrossPointSettings::extraParagraphSpacing}};
|
{"Extra Paragraph Spacing", SettingType::TOGGLE, &CrossPointSettings::extraParagraphSpacing},
|
||||||
|
{"WiFi", SettingType::ACTION, nullptr}};
|
||||||
|
|
||||||
void SettingsActivity::taskTrampoline(void* param) {
|
void SettingsActivity::taskTrampoline(void* param) {
|
||||||
auto* self = static_cast<SettingsActivity*>(param);
|
auto* self = static_cast<SettingsActivity*>(param);
|
||||||
@ -47,7 +48,7 @@ void SettingsActivity::onExit() {
|
|||||||
void SettingsActivity::loop() {
|
void SettingsActivity::loop() {
|
||||||
// Handle actions with early return
|
// Handle actions with early return
|
||||||
if (inputManager.wasPressed(InputManager::BTN_CONFIRM)) {
|
if (inputManager.wasPressed(InputManager::BTN_CONFIRM)) {
|
||||||
toggleCurrentSetting();
|
activateCurrentSetting();
|
||||||
updateRequired = true;
|
updateRequired = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -72,6 +73,26 @@ void SettingsActivity::loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsActivity::activateCurrentSetting() {
|
||||||
|
// Validate index
|
||||||
|
if (selectedSettingIndex < 0 || selectedSettingIndex >= settingsCount) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto& setting = settingsList[selectedSettingIndex];
|
||||||
|
|
||||||
|
if (setting.type == SettingType::TOGGLE) {
|
||||||
|
toggleCurrentSetting();
|
||||||
|
// Trigger a redraw of the entire screen
|
||||||
|
updateRequired = true;
|
||||||
|
} else if (setting.type == SettingType::ACTION) {
|
||||||
|
// Handle action settings
|
||||||
|
if (std::string(setting.name) == "WiFi") {
|
||||||
|
onGoWifi();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SettingsActivity::toggleCurrentSetting() {
|
void SettingsActivity::toggleCurrentSetting() {
|
||||||
// Validate index
|
// Validate index
|
||||||
if (selectedSettingIndex < 0 || selectedSettingIndex >= settingsCount) {
|
if (selectedSettingIndex < 0 || selectedSettingIndex >= settingsCount) {
|
||||||
@ -80,6 +101,11 @@ void SettingsActivity::toggleCurrentSetting() {
|
|||||||
|
|
||||||
const auto& setting = settingsList[selectedSettingIndex];
|
const auto& setting = settingsList[selectedSettingIndex];
|
||||||
|
|
||||||
|
// Only toggle if it's a toggle type and has a value pointer
|
||||||
|
if (setting.type != SettingType::TOGGLE || setting.valuePtr == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Toggle the boolean value using the member pointer
|
// Toggle the boolean value using the member pointer
|
||||||
bool currentValue = SETTINGS.*(setting.valuePtr);
|
bool currentValue = SETTINGS.*(setting.valuePtr);
|
||||||
SETTINGS.*(setting.valuePtr) = !currentValue;
|
SETTINGS.*(setting.valuePtr) = !currentValue;
|
||||||
@ -123,10 +149,12 @@ void SettingsActivity::render() const {
|
|||||||
// Draw setting name
|
// Draw setting name
|
||||||
renderer.drawText(UI_FONT_ID, 20, settingY, settingsList[i].name);
|
renderer.drawText(UI_FONT_ID, 20, settingY, settingsList[i].name);
|
||||||
|
|
||||||
// Draw value (all settings are toggles now)
|
// Draw value based on setting type
|
||||||
if (settingsList[i].valuePtr != nullptr) {
|
if (settingsList[i].type == SettingType::TOGGLE && settingsList[i].valuePtr != nullptr) {
|
||||||
bool value = SETTINGS.*(settingsList[i].valuePtr);
|
bool value = SETTINGS.*(settingsList[i].valuePtr);
|
||||||
renderer.drawText(UI_FONT_ID, pageWidth - 80, settingY, value ? "ON" : "OFF");
|
renderer.drawText(UI_FONT_ID, pageWidth - 80, settingY, value ? "ON" : "OFF");
|
||||||
|
} else if (settingsList[i].type == SettingType::ACTION) {
|
||||||
|
renderer.drawText(UI_FONT_ID, pageWidth - 80, settingY, ">");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,10 +12,13 @@
|
|||||||
|
|
||||||
class CrossPointSettings;
|
class CrossPointSettings;
|
||||||
|
|
||||||
|
enum class SettingType { TOGGLE, ACTION };
|
||||||
|
|
||||||
// Structure to hold setting information
|
// Structure to hold setting information
|
||||||
struct SettingInfo {
|
struct SettingInfo {
|
||||||
const char* name; // Display name of the setting
|
const char* name; // Display name of the setting
|
||||||
uint8_t CrossPointSettings::* valuePtr; // Pointer to member in CrossPointSettings
|
SettingType type; // Type of setting
|
||||||
|
uint8_t CrossPointSettings::* valuePtr; // Pointer to member in CrossPointSettings (for TOGGLE)
|
||||||
};
|
};
|
||||||
|
|
||||||
class SettingsActivity final : public Activity {
|
class SettingsActivity final : public Activity {
|
||||||
@ -24,19 +27,22 @@ class SettingsActivity final : public Activity {
|
|||||||
bool updateRequired = false;
|
bool updateRequired = false;
|
||||||
int selectedSettingIndex = 0; // Currently selected setting
|
int selectedSettingIndex = 0; // Currently selected setting
|
||||||
const std::function<void()> onGoHome;
|
const std::function<void()> onGoHome;
|
||||||
|
const std::function<void()> onGoWifi;
|
||||||
|
|
||||||
// Static settings list
|
// Static settings list
|
||||||
static constexpr int settingsCount = 2; // Number of settings
|
static constexpr int settingsCount = 3; // Number of settings
|
||||||
static const SettingInfo settingsList[settingsCount];
|
static const SettingInfo settingsList[settingsCount];
|
||||||
|
|
||||||
static void taskTrampoline(void* param);
|
static void taskTrampoline(void* param);
|
||||||
[[noreturn]] void displayTaskLoop();
|
[[noreturn]] void displayTaskLoop();
|
||||||
void render() const;
|
void render() const;
|
||||||
void toggleCurrentSetting();
|
void toggleCurrentSetting();
|
||||||
|
void activateCurrentSetting();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SettingsActivity(GfxRenderer& renderer, InputManager& inputManager, const std::function<void()>& onGoHome)
|
explicit SettingsActivity(GfxRenderer& renderer, InputManager& inputManager, const std::function<void()>& onGoHome,
|
||||||
: Activity(renderer, inputManager), onGoHome(onGoHome) {}
|
const std::function<void()>& onGoWifi)
|
||||||
|
: Activity(renderer, inputManager), onGoHome(onGoHome), onGoWifi(onGoWifi) {}
|
||||||
void onEnter() override;
|
void onEnter() override;
|
||||||
void onExit() override;
|
void onExit() override;
|
||||||
void loop() override;
|
void loop() override;
|
||||||
|
|||||||
10
src/main.cpp
10
src/main.cpp
@ -20,6 +20,7 @@
|
|||||||
#include "activities/boot_sleep/BootActivity.h"
|
#include "activities/boot_sleep/BootActivity.h"
|
||||||
#include "activities/boot_sleep/SleepActivity.h"
|
#include "activities/boot_sleep/SleepActivity.h"
|
||||||
#include "activities/home/HomeActivity.h"
|
#include "activities/home/HomeActivity.h"
|
||||||
|
#include "activities/network/WifiScreen.h"
|
||||||
#include "activities/reader/ReaderActivity.h"
|
#include "activities/reader/ReaderActivity.h"
|
||||||
#include "activities/settings/SettingsActivity.h"
|
#include "activities/settings/SettingsActivity.h"
|
||||||
#include "activities/util/FullScreenMessageActivity.h"
|
#include "activities/util/FullScreenMessageActivity.h"
|
||||||
@ -141,9 +142,16 @@ void onGoToReader(const std::string& initialEpubPath) {
|
|||||||
}
|
}
|
||||||
void onGoToReaderHome() { onGoToReader(std::string()); }
|
void onGoToReaderHome() { onGoToReader(std::string()); }
|
||||||
|
|
||||||
|
void onGoToSettings();
|
||||||
|
|
||||||
|
void onGoToWifi() {
|
||||||
|
exitActivity();
|
||||||
|
enterNewActivity(new WifiScreen(renderer, inputManager, onGoToSettings));
|
||||||
|
}
|
||||||
|
|
||||||
void onGoToSettings() {
|
void onGoToSettings() {
|
||||||
exitActivity();
|
exitActivity();
|
||||||
enterNewActivity(new SettingsActivity(renderer, inputManager, onGoHome));
|
enterNewActivity(new SettingsActivity(renderer, inputManager, onGoHome, onGoToWifi));
|
||||||
}
|
}
|
||||||
|
|
||||||
void onGoHome() {
|
void onGoHome() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user