wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
AudioBox.h
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
7
8#pragma once
9
10#include <QAudioOutput>
11#include <QFileInfo>
12#include <QMediaPlayer>
13
15
24{
25 Q_OBJECT
26
27public:
31 static constexpr const char *kDefaultAudioPath = ":/Components/Output/Audio/wiredpanda.wav";
32
34 explicit AudioBox(QGraphicsItem *parent = nullptr);
35
37 AudioBox(const AudioBox &other) : AudioBox(other.parentItem()) {}
38
39 // --- State Queries ---
40
42 QString audio() const override;
43
44 // --- Playback Control ---
45
47 void setAudio(const QString &audioPath) override;
48
49 // --- External file dependencies ---
50
52 QStringList externalFiles() const override;
53
54 // --- Serialization ---
55
57 void load(QDataStream &stream, SerializationContext &context) override;
59 void save(QDataStream &stream, SerializationOptions options) const override;
60
61protected:
62 // --- AudioOutputElement hooks ---
63
64 void startAudio() override;
65 void stopAudio() override;
66 void applyVolume() override;
67 void applyMute() override;
68
69private:
70 QAudioOutput *m_audioOutput = nullptr;
71 QFileInfo m_audio;
72 QMediaPlayer *m_player = nullptr;
73};
Shared base class for audio output elements (AudioBox and Buzzer).
AudioBox(QGraphicsItem *parent=nullptr)
Constructs an AudioBox element.
Definition AudioBox.cpp:51
void load(QDataStream &stream, SerializationContext &context) override
Definition AudioBox.cpp:167
void stopAudio() override
Stops hardware playback (called from stop() when m_hasOutputDevice is true).
Definition AudioBox.cpp:120
void applyMute() override
Applies the current m_muted state to the hardware backend.
Definition AudioBox.cpp:130
static constexpr const char * kDefaultAudioPath
Definition AudioBox.h:31
void save(QDataStream &stream, SerializationOptions options) const override
Definition AudioBox.cpp:145
void applyVolume() override
Applies the current m_volume to the hardware backend.
Definition AudioBox.cpp:125
AudioBox(const AudioBox &other)
Copy-constructs by delegating to the parent item constructor.
Definition AudioBox.h:37
void startAudio() override
Starts hardware playback (called from play() when m_hasOutputDevice is true).
Definition AudioBox.cpp:112
void setAudio(const QString &audioPath) override
Sets the audio source to audioPath and reloads the player.
Definition AudioBox.cpp:62
QStringList externalFiles() const override
Definition AudioBox.cpp:135
QString audio() const override
Returns the file path of the currently loaded audio file.
Definition AudioBox.cpp:107
AudioOutputElement(ElementType type, QGraphicsItem *parent=nullptr, float initialVolume=kDefaultVolume)
Bundles all per-deserialization state so that load() overrides receive it through one explicit parame...
Options passed to GraphicElement::save() (and friends); the save-side counterpart of SerializationCon...