#pragma once // Qt includes #include #include // system includes #include // forward declares class QAudioDeviceInfo; class QLabel; namespace Ui { class MainWindow; } class BaseDevice; class BaseToneGenerator; class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow() override; private slots: void start(); void stop(); void refreshRateChanged(); void zoomChanged(); void startStopGenerator(); private: int samplerate() const; const std::unique_ptr m_ui; const QList m_inputDevices, m_outputDevices; std::unique_ptr m_input; QActionGroup m_inputDeviceGroup{this}, m_outputDeviceGroup{this}, m_samplerateGroup{this}, m_refreshrateGroup{this}, m_zoomlevelsGroup{this}; QLabel &m_statusLabel; std::unique_ptr m_generator; };