-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.h
More file actions
96 lines (80 loc) · 2.76 KB
/
mainwindow.h
File metadata and controls
96 lines (80 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QString>
#include <QElapsedTimer>
#include <QEvent>
#include <QPointer>
#include <QSystemTrayIcon>
#include <QCloseEvent>
#include <QTimer>
#include <QAudioFormat>
#include "hotkeymanager.h"
#include "configstore.h"
#include "dictationcontroller.h"
#include "audiocapture.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class QShowEvent;
class QHideEvent;
class WindowOverlay;
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
static QPointer<MainWindow> instance;
public slots:
void setHotkeyText(const QString &text);
void setFinalizationHotkeyText(const QString &text);
void handleGlobalHotkeyPressed();
protected:
bool eventFilter(QObject *obj, QEvent *event) override;
void closeEvent(QCloseEvent *event) override;
void showEvent(QShowEvent *event) override;
void hideEvent(QHideEvent *event) override;
void changeEvent(QEvent *event) override;
private slots:
void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason);
void exportSettings();
void importSettings();
private:
Ui::MainWindow *ui = nullptr;
QString prevHotkey{};
bool hotkeyCaptured = false;
QString prevFinalizationHotkey{};
bool finalizationHotkeyCaptured = false;
HotkeyManager *hotkeyManager = nullptr;
bool loadingConfig = false;
QSystemTrayIcon *trayIcon = nullptr;
WindowOverlay *overlayWindow = nullptr;
DictationController *dictationController = nullptr;
void createTrayIcon();
void loadConfig();
void saveConfig();
void applyDefaultSettings();
void applyConfig(const AppConfig &config);
[[nodiscard]] AppConfig buildConfigFromUi() const;
[[nodiscard]] QString suggestedSettingsPath() const;
void populateServiceProviders();
void populateInputDevices();
void syncServiceTabs(const QString &providerId);
[[nodiscard]] QString currentProviderId() const;
void updateLanguageHintsStrictEnabled(const QString &value);
void updateAzureLanguageHintsStrictEnabled(const QString &value);
void updateOverlayStyle(const VisualStyleSettings &settings);
void updateRecBlinkEnabled(bool showRec);
void setOverlayPreviewEnabled(bool enabled);
void restartInputLevelCapture();
void startInputLevelCapture();
void stopInputLevelCapture();
void handleInputLevelData(const QByteArray &data);
void decayInputLevel();
[[nodiscard]] qreal computeAudioLevel(const QByteArray &data, const QAudioFormat &format) const;
AudioCapture *levelCapture = nullptr;
QTimer *levelDecayTimer = nullptr;
QElapsedTimer levelClock{};
qreal levelValue = 0.0;
};
#endif // MAINWINDOW_H