AudibleT 0.0.1
A real-time A/B/X audio testing tool for subjective assessment of various audio parameters, compatible for general purpose computer as well as embedded systems.
Loading...
Searching...
No Matches
TrainingWindow.h
Go to the documentation of this file.
1//=======================================================================
29//=======================================================================
30
31#ifndef TRAININGWINDOW_H
32#define TRAININGWINDOW_H
33
34#include <QComboBox>
35#include <QEvent>
36#include <QFocusEvent>
37#include <QPushButton>
38#include <QSlider>
39#include <QStackedWidget>
40#include <QThread>
41#include <QWidget>
42#include <QTimer>
43
44#include "BaseFilter.h"
45#include "CustomComboBox.h"
46#include "DatabaseManager.h"
47#include "EQGraph.h"
48#include "FileListWidget.h"
49#include "FilterType.h"
50#include "JackWorker.h"
51#include "SessionType.h"
52
62class TrainingWindow : public QWidget
63{
64 Q_OBJECT
65public:
66 explicit TrainingWindow(QWidget *parent = nullptr);
68
69 QWidget* createWidget();
70 QWidget* createLandingWidget();
71 QWidget* createTrainingWidget();
72
73 void showTrainingWidget();
74 void showLandingWidget();
75
76 void setDatabaseManager(DatabaseManager* manager);
77 void populateAudioFiles();
78
79signals:
81 void didChangeSliderValue(int gain, int cutOffFrequency);
82 void didChangeAudioFile(QString filePath);
83 void didChangeAudioFilter(FilterType filter);
84
85private:
86 // UI
87 QPushButton* startStopButton;
88 QTimer *cpuLoadTimer;
89 QLabel* cpuLoadLabel;
90 QSlider* volumeSlider;
91 QSlider* gainSlider;
92 QSlider* cutOfFrequencySlider;
93 EQGraph* eqGraph;
94
95 QStackedWidget widgetContainer;
96 QWidget* trainingWidget;
97 QWidget* landingWidget;
98
99 FileListWidget* fileListWidget;
100 QWidget* fileListContentWidget;
101
102 CustomComboBox *sourceSelectionDropdown;
103 CustomComboBox *filterSelectionDropdown;
104
105 // Threading
106 QThread* workerThread;
107 JackWorker* jackWorker;
108
109 // Database
110 DatabaseManager* dbManager;
111
112
113 // Others
114 AudioFile<float> currentAudioFile;
115 FilterType activeFilterType = FilterType::HighShelf;
116 std::shared_ptr<BaseFilter> activeFilter;
117 bool isAudioFileValid = false;
118
119private slots:
120 void sliderValueDidChange(int gain, int cutOffFrequency);
121 void didSelectAudioFile(QString filePath);
122 void didSelectAudioFilter(FilterType filter);
123 void showErrorDialog(const QString &message);
124};
125
126#endif // TRAININGWINDOW_H
127
Definition: AudioFile.h:82
A custom QComboBox with modified popup behavior.
Definition: CustomComboBox.h:40
The DatabaseManager class manages the database operations for the audio testing application.
Definition: DatabaseManager.h:50
A class to plot frequency graph.
Definition: EQGraph.h:51
A widget for displaying a list of audio files.
Definition: FileListWidget.h:52
The JackWorker class is responsible for managing the Jack audio server and audio client engine.
Definition: JackWorker.h:55
Provides a widget for conducting training sessions.
Definition: TrainingWindow.h:63
void showTrainingWidget()
Shows the training widget.
Definition: TrainingWindow.cpp:566
void setDatabaseManager(DatabaseManager *manager)
Sets the database manager.
Definition: TrainingWindow.cpp:577
QWidget * createTrainingWidget()
Creates the training widget.
Definition: TrainingWindow.cpp:150
void showLandingWidget()
Shows the landing widget.
Definition: TrainingWindow.cpp:572
QWidget * createWidget()
Creates the widget for the training window.
Definition: TrainingWindow.cpp:58
void didChangeTrainingSessionState(SessionType sessionType)
Signal emitted when the training session state changes.
Definition: moc_TrainingWindow.cpp:288
void populateAudioFiles()
Populates the list of audio files.
Definition: TrainingWindow.cpp:582
void didChangeAudioFile(QString filePath)
Signal emitted when the audio file changes.
Definition: moc_TrainingWindow.cpp:302
void didChangeAudioFilter(FilterType filter)
Signal emitted when the audio filter changes.
Definition: moc_TrainingWindow.cpp:309
~TrainingWindow()
Destructor.
Definition: TrainingWindow.cpp:51
void didChangeSliderValue(int gain, int cutOffFrequency)
Signal emitted when the slider value changes.
Definition: moc_TrainingWindow.cpp:295
QWidget * createLandingWidget()
Creates the landing widget for the training window.
Definition: TrainingWindow.cpp:81
SessionType
Represents the state of a testing session.
Definition: SessionType.h:41
FilterType
An enumeration of filter types.
Definition: FilterType.h:43