1 // Copyright 2005-2019 The Mumble Developers. All rights reserved.
2 // Use of this source code is governed by a BSD-style license
3 // that can be found in the LICENSE file at the root of the
4 // Mumble source tree or at <https://www.mumble.info/LICENSE>.
5 
6 #ifndef MUMBLE_MUMBLE_AUDIOWIZARD_H_
7 #define MUMBLE_MUMBLE_AUDIOWIZARD_H_
8 
9 #include <QtCore/QtGlobal>
10 #if QT_VERSION >= 0x050000
11 # include <QtWidgets/QWizard>
12 # include <QtWidgets/QWizardPage>
13 #else
14 # include <QtGui/QWizard>
15 # include <QtGui/QWizardPage>
16 #endif
17 
18 #include "AudioStats.h"
19 #include "AudioOutput.h"
20 #include "GlobalShortcut.h"
21 #include "Settings.h"
22 
23 class CompletablePage : public QWizardPage {
24 		Q_OBJECT
25 	protected:
26 		bool bComplete;
27 	public:
28 		CompletablePage(QWizard *p = NULL);
29 		void setComplete(bool);
30 		bool isComplete() const Q_DECL_OVERRIDE;
31 };
32 
33 #include "ui_AudioWizard.h"
34 
35 class AudioWizard: public QWizard, public Ui::AudioWizard {
36 	private:
37 		Q_OBJECT
38 		Q_DISABLE_COPY(AudioWizard)
39 	protected:
40 		bool bTransmitChanged;
41 
42 		QGraphicsScene *qgsScene;
43 		QGraphicsItem *qgiSource;
44 		AudioOutputSample *aosSource;
45 		float fAngle;
46 		float fX, fY;
47 
48 		Settings sOldSettings;
49 
50 		QTimer *ticker;
51 
52 		bool bInit;
53 		bool bDelay;
54 		bool bLastActive;
55 
56 		QPixmap qpTalkingOn, qpTalkingOff;
57 
58 		int iMaxPeak;
59 		int iTicks;
60 
61 		void restartAudio();
62 		void playChord();
63 
64 		bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE;
65 	public slots:
66 		void on_qcbInput_activated(int);
67 		void on_qcbInputDevice_activated(int);
68 		void on_qcbOutput_activated(int);
69 		void on_qcbOutputDevice_activated(int);
70 		void on_qsOutputDelay_valueChanged(int);
71 		void on_qsMaxAmp_valueChanged(int);
72 		void on_Ticker_timeout();
73 		void on_qsVAD_valueChanged(int);
74 		void on_qrAmplitude_clicked(bool);
75 		void on_qrSNR_clicked(bool);
76 		void on_qrPTT_clicked(bool);
77 		void on_qcbEcho_clicked(bool);
78 		void on_qcbHeadphone_clicked(bool);
79 		void on_qcbPositional_clicked(bool);
80 		void on_qcbAttenuateOthers_clicked(bool);
81 		void on_qcbHighContrast_clicked(bool);
82 		void on_skwPTT_keySet(bool, bool);
83 		void on_qrbQualityUltra_clicked();
84 		void on_qrbQualityBalanced_clicked();
85 		void on_qrbQualityLow_clicked();
86 		void on_qrbQualityCustom_clicked();
87 		void showPage(int);
88 		void updateTriggerWidgets(bool);
89 	public:
90 		AudioWizard(QWidget *parent);
91 		void reject() Q_DECL_OVERRIDE;
92 		void accept() Q_DECL_OVERRIDE;
93 		bool validateCurrentPage() Q_DECL_OVERRIDE;
94 		virtual int nextId() const Q_DECL_OVERRIDE;
95 };
96 
97 #endif
98