ScrollerPage now resolves the active Block from ScheduleManager (reusing the existing stream-switch path), honoring dynamicAudio true/false and falling back to local selection for gaps, no schedule, or toggle off. Adds a 'Schedule' On/Off entry (default On) in System Settings persisted in config.yaml, and config plumbing (proclamation.schedule_enabled). All on-device schedule times remain 12h AM/PM.
38 lines
1.3 KiB
C++
38 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
namespace radiantwave::config {
|
|
|
|
struct AudioConfig {
|
|
bool enabled = true; // audio master enabled toggle
|
|
int volume = 80; // 0 - 100
|
|
std::string output_device = ""; // empty = system default
|
|
std::string current_track = "OriginalAudio.wav"; // active audio track filename
|
|
bool dynamic_audio = true; // audio follows the displayed proclamation's solfeggio frequency
|
|
};
|
|
|
|
struct ProclamationConfig {
|
|
float scroll_speed = 1.0f; // scroll speed multiplier
|
|
int font_size = 32; // font size in pt
|
|
std::string current_id = ""; // currently active proclamation ID
|
|
bool schedule_active = false; // follow the portal's listening schedule
|
|
bool schedule_enabled = true; // local Schedule on/off toggle (default on)
|
|
};
|
|
|
|
struct AppConfig {
|
|
std::string license_key = "";
|
|
std::string email_address = "";
|
|
std::string provisioning_status = "FIRST_RUN";
|
|
std::string timezone = "UTC"; // IANA timezone code (e.g. America/New_York, UTC)
|
|
AudioConfig audio;
|
|
ProclamationConfig proclamation;
|
|
|
|
// Single source of truth for default values
|
|
static AppConfig defaults() {
|
|
return AppConfig{};
|
|
}
|
|
};
|
|
|
|
} // namespace radiantwave::config
|