#pragma once #include "frogpilot/ui/qt/offroad/frogpilot_settings.h" class FrogPilotSoundsPanel : public FrogPilotListWidget { Q_OBJECT public: explicit FrogPilotSoundsPanel(FrogPilotSettingsWindow *parent, bool forceOpen = false); signals: void openSubPanel(); protected: void showEvent(QShowEvent *event) override; private: void initializeSoundPlayer(); void testSound(const QString &key); void updateState(const UIState &s); void updateToggles(); bool forceOpenDescriptions; bool started; std::map toggles; QSet alertVolumeControlKeys {"DisengageVolume", "EngageVolume", "PromptDistractedVolume", "PromptVolume", "RefuseVolume", "WarningImmediateVolume", "WarningSoftVolume"}; QSet customAlertsKeys {"GoatScream", "GreenLightAlert", "LeadDepartingAlert", "LoudBlindspotAlert", "SpeedLimitChangedAlert"}; QSet parentKeys; FrogPilotSettingsWindow *parent; Params params; Params params_memory{"", true}; QProcess *soundPlayerProcess; };