Files
radiantwave/src/app_state.h
T
NeilClack da0b6ffd5e Kiosk: apply schedule engine in playback and add System Settings toggle
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.
2026-09-29 10:34:45 -05:00

46 lines
1.8 KiB
C

#pragma once
#include <SDL3/SDL.h>
#include "page_manager.h"
#include "keybind_manager.h"
#include "config/config_manager.h"
#include "db/database_manager.h"
#include "network/network_manager.h"
#include "network/license_status.h"
#include "network/system_name_sync.h"
#include "schedule/schedule_manager.h"
#include "audio/audio_manager.h"
#include "audio/audio_downloader.h"
struct AppState {
SDL_Window* window = nullptr;
SDL_Renderer* renderer = nullptr;
PageManager pages;
KeybindManager keybinds;
radiantwave::config::ConfigManager config;
radiantwave::db::DatabaseManager db;
radiantwave::network::NetworkManager network;
radiantwave::license::LicenseStatusTracker licenseTracker;
radiantwave::systemname::SystemNameSync systemNameSync;
radiantwave::schedule::ScheduleManager scheduleManager;
radiantwave::audio::AudioManager audio;
radiantwave::audio::AudioDownloader audioDownloader;
bool quitRequested = false;
// While >0, the app is fading audio out before quitting; decremented in
// SDL_AppIterate until it reaches zero and teardown runs.
float quitFadeRemaining = 0.0f;
int currentMenuItem = 0;
// First-Run walkthrough state (see provisioning.h). provisioningMode is
// true only while a walkthrough step page is on the stack; it is cleared
// when Home is reached. walkthroughInternetUp caches the step-1 result so
// advancing past the WiFi page never re-runs a blocking probe.
bool provisioningMode = false;
bool walkthroughInternetUp = false;
// Placeholder flag raised when the device is brand-new (no internet, no
// email, no license). Will later launch the first-run welcome walkthrough
// (TOS, quick user guide, ...).
bool firstRunWalkthrough = false;
};