From 55feaa3d3da615e9327ac0316a11bcd222239830 Mon Sep 17 00:00:00 2001
From: nicola02nb <61830443+nicola02nb@users.noreply.github.com>
Date: Tue, 17 Sep 2024 16:09:23 +0200
Subject: [PATCH] Added automatic update and release of translations,
reorganize code for icons theme and names, small bug fixes
---
.gitignore | 3 +
HeadsetControl-GUI.pro | 11 +-
src/Resources/icons.qrc | 20 +-
...charging.png => battery-charging-dark.png} | Bin
...ing-inv.png => battery-charging-light.png} | Bin
...l-full.png => battery-level-full-dark.png} | Bin
...l-inv.png => battery-level-full-light.png} | Bin
.../{battery-low.png => battery-low-dark.png} | Bin
...tery-low-inv.png => battery-low-light.png} | Bin
...ery-medium.png => battery-medium-dark.png} | Bin
...edium-inv.png => battery-medium-light.png} | Bin
.../{headphones.png => headphones-dark.png} | Bin
...eadphones-inv.png => headphones-light.png} | Bin
..._GUI_en_US.ts => HeadsetControl_GUI_en.ts} | 176 +++++++++---------
src/Resources/tr/HeadsetControl_GUI_en_US.qm | Bin 5293 -> 0 bytes
..._GUI_it_IT.ts => HeadsetControl_GUI_it.ts} | 176 +++++++++---------
src/Resources/tr/HeadsetControl_GUI_it_IT.qm | Bin 9261 -> 0 bytes
src/Resources/translations.qrc | 6 -
src/UI/mainwindow.cpp | 107 ++++++-----
src/UI/mainwindow.h | 3 +-
src/UI/mainwindow.ui | 87 ++++++++-
src/Utils/headsetcontrolapi.cpp | 93 ++++-----
src/Utils/headsetcontrolapi.h | 2 +
src/main.cpp | 2 +-
24 files changed, 391 insertions(+), 295 deletions(-)
rename src/Resources/icons/{battery-charging.png => battery-charging-dark.png} (100%)
rename src/Resources/icons/{battery-charging-inv.png => battery-charging-light.png} (100%)
rename src/Resources/icons/{battery-level-full.png => battery-level-full-dark.png} (100%)
rename src/Resources/icons/{battery-level-full-inv.png => battery-level-full-light.png} (100%)
rename src/Resources/icons/{battery-low.png => battery-low-dark.png} (100%)
rename src/Resources/icons/{battery-low-inv.png => battery-low-light.png} (100%)
rename src/Resources/icons/{battery-medium.png => battery-medium-dark.png} (100%)
rename src/Resources/icons/{battery-medium-inv.png => battery-medium-light.png} (100%)
rename src/Resources/icons/{headphones.png => headphones-dark.png} (100%)
rename src/Resources/icons/{headphones-inv.png => headphones-light.png} (100%)
rename src/Resources/tr/{HeadsetControl_GUI_en_US.ts => HeadsetControl_GUI_en.ts} (69%)
delete mode 100644 src/Resources/tr/HeadsetControl_GUI_en_US.qm
rename src/Resources/tr/{HeadsetControl_GUI_it_IT.ts => HeadsetControl_GUI_it.ts} (71%)
delete mode 100644 src/Resources/tr/HeadsetControl_GUI_it_IT.qm
delete mode 100644 src/Resources/translations.qrc
diff --git a/.gitignore b/.gitignore
index bf96c2c..bb665dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,9 @@
*.out
*.app
+#Translations
+*.qm
+
# Folders
build/*
diff --git a/HeadsetControl-GUI.pro b/HeadsetControl-GUI.pro
index 5f781aa..5b3f98a 100644
--- a/HeadsetControl-GUI.pro
+++ b/HeadsetControl-GUI.pro
@@ -36,18 +36,21 @@ FORMS += \
src/UI/settingswindow.ui
TRANSLATIONS += \
- src/Resources/tr/HeadsetControl_GUI_en_US.ts \
- src/Resources/tr/HeadsetControl_GUI_it_IT.ts
+ src/Resources/tr/HeadsetControl_GUI_en.ts \
+ src/Resources/tr/HeadsetControl_GUI_it.ts
RESOURCES += \
- src/Resources/icons.qrc \
- src/Resources/translations.qrc
+ src/Resources/icons.qrc
RC_FILE = src/Resources/appicon.rc
DISTFILES += \
.gitignore
+CONFIG += lrelease
+QM_FILES_RESOURCE_PREFIX=/translations/tr
+CONFIG += embed_translations
+
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
diff --git a/src/Resources/icons.qrc b/src/Resources/icons.qrc
index 1151afb..8094897 100644
--- a/src/Resources/icons.qrc
+++ b/src/Resources/icons.qrc
@@ -1,14 +1,14 @@
- icons/battery-charging.png
- icons/battery-level-full.png
- icons/battery-low.png
- icons/battery-medium.png
- icons/headphones.png
- icons/battery-charging-inv.png
- icons/battery-level-full-inv.png
- icons/battery-low-inv.png
- icons/battery-medium-inv.png
- icons/headphones-inv.png
+ icons/battery-charging-dark.png
+ icons/battery-level-full-dark.png
+ icons/battery-low-dark.png
+ icons/battery-medium-dark.png
+ icons/headphones-dark.png
+ icons/battery-charging-light.png
+ icons/battery-level-full-light.png
+ icons/battery-low-light.png
+ icons/battery-medium-light.png
+ icons/headphones-light.png
diff --git a/src/Resources/icons/battery-charging.png b/src/Resources/icons/battery-charging-dark.png
similarity index 100%
rename from src/Resources/icons/battery-charging.png
rename to src/Resources/icons/battery-charging-dark.png
diff --git a/src/Resources/icons/battery-charging-inv.png b/src/Resources/icons/battery-charging-light.png
similarity index 100%
rename from src/Resources/icons/battery-charging-inv.png
rename to src/Resources/icons/battery-charging-light.png
diff --git a/src/Resources/icons/battery-level-full.png b/src/Resources/icons/battery-level-full-dark.png
similarity index 100%
rename from src/Resources/icons/battery-level-full.png
rename to src/Resources/icons/battery-level-full-dark.png
diff --git a/src/Resources/icons/battery-level-full-inv.png b/src/Resources/icons/battery-level-full-light.png
similarity index 100%
rename from src/Resources/icons/battery-level-full-inv.png
rename to src/Resources/icons/battery-level-full-light.png
diff --git a/src/Resources/icons/battery-low.png b/src/Resources/icons/battery-low-dark.png
similarity index 100%
rename from src/Resources/icons/battery-low.png
rename to src/Resources/icons/battery-low-dark.png
diff --git a/src/Resources/icons/battery-low-inv.png b/src/Resources/icons/battery-low-light.png
similarity index 100%
rename from src/Resources/icons/battery-low-inv.png
rename to src/Resources/icons/battery-low-light.png
diff --git a/src/Resources/icons/battery-medium.png b/src/Resources/icons/battery-medium-dark.png
similarity index 100%
rename from src/Resources/icons/battery-medium.png
rename to src/Resources/icons/battery-medium-dark.png
diff --git a/src/Resources/icons/battery-medium-inv.png b/src/Resources/icons/battery-medium-light.png
similarity index 100%
rename from src/Resources/icons/battery-medium-inv.png
rename to src/Resources/icons/battery-medium-light.png
diff --git a/src/Resources/icons/headphones.png b/src/Resources/icons/headphones-dark.png
similarity index 100%
rename from src/Resources/icons/headphones.png
rename to src/Resources/icons/headphones-dark.png
diff --git a/src/Resources/icons/headphones-inv.png b/src/Resources/icons/headphones-light.png
similarity index 100%
rename from src/Resources/icons/headphones-inv.png
rename to src/Resources/icons/headphones-light.png
diff --git a/src/Resources/tr/HeadsetControl_GUI_en_US.ts b/src/Resources/tr/HeadsetControl_GUI_en.ts
similarity index 69%
rename from src/Resources/tr/HeadsetControl_GUI_en_US.ts
rename to src/Resources/tr/HeadsetControl_GUI_en.ts
index 327e35f..8a0d69a 100644
--- a/src/Resources/tr/HeadsetControl_GUI_en_US.ts
+++ b/src/Resources/tr/HeadsetControl_GUI_en.ts
@@ -9,396 +9,396 @@
-
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/src/Resources/tr/HeadsetControl_GUI_en_US.qm b/src/Resources/tr/HeadsetControl_GUI_en_US.qm
deleted file mode 100644
index 022d21851908222b88bb65d03a5c64f0d4bb1907..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 5293
zcma)Adu&@*9X?L3-;TW$T4<@ZlcCC4x5P=HNLa-vab5-I(K<=DYJy$+9>kCWQEz`Pte05Fu?p#^y7GMBXK2
z_GPTUBgzx|2x%`9;*zXe&U}S0iQ3E^-pdjBw>=VM^8ZFvt;g>^M4q6z2;j`fbSUdExcI*|E%x$z`w!&
zR^K`2D|nx3tF(u)zoYG?dXSLVnYOn#{tb4%()Qo~q#>u!zSMq-knoZc2t5MaekFC1
zL65vrxxa$_S>?=G@KGLCEZ0t?duxk9`Y}YWUznDfBy&0
zLhkeaua2IC-Y@%~`WE~X+mE#$>v#QcTMt3s#{9E242X&h4(K8&hOa^{=W{+vpR5lg7^O8d%)cr{F1l;JKhN?cYXo-9}R6gfxU7p
z^!?MH0`BQ>PvWoeS9kc6mwt%#aJcx!pRrDd_y6cOu{xb3K6Mumo-%K3reiV3-
zIRENi$iH1j&>U~SjGvGzE`U#L3+l4fl$}CvkylcAwW=jE?%(YxHA73>lEPEt
zOx0{AvfLCFHf3cX-3inyzBYXPl=mYb!*?xpE&Z{^lqE1_p>c852CGR};uHzYi+Yb=#7
z^O`qK8Q13}<*0LqsTPI4sEazC(JRc7#9c54mco{xqB*^yqY=o1CbEi@6u4-Ps~Q@%
zo2wG5bKKFqA>kaawbaQc^rFS9Wo}AjuDb$kt@Lh~&~5vwNGi6{V;)?asL>CHdCfFj
z7sX(i8syT*p-)aaM*=?zNk;sSw;IgwTnffA>N@=OS%p=3r#kP7PCCU+ib?#Uzy@%pLU^%Ag77;_%2@*4oWzuHt
zmKWvtHE2mth37a*vYcsX87E;EZ^EW6^j&G6Nz66ITo~49H{OTs3*5mST2#$ubANAN
zrZ(IQQ;HY>F#~&6(j4QTHdM#Hu9~{-J((HP#kf;&D`#(`HczNvSg5yjaam!U%&dHK
z`LuH7G4&!h)V=|;kjz~9zDhmUtg5nMD&|yskUQ=;P8YqSGrlt~>X?hVxAxv`+l@$VQQS5Y?3c?}XU+De9qN(6oxu}Gaz
zVh~PhSOxZs*rbfTK{S$H{jb4>l{pn@gc^@Iy^Idm5E948-lz|2YSoc-Y{4tE;f5CQ
ziaW!&=6bUY>|zzZ*qAuHfr(v?=>}?EsFrZ5Eog8}z4KHeadsetControl-GUI
-
+
+
+ Manca headsetcontrol!<br/>Scarica <a href="https://github.com/Sapd/HeadsetControl/releases/latest">headsetcontrol</a> nella cartella del programma.
+
+
+
+
+ Apri Cartella del Programma
+
+
+
HeadsetControl non è riuscito a trovare delle cuffie funizionanti o compatibili. :(
-
+
@@ -23,387 +33,377 @@ Distributore:
Modello:
-
+
Nessuna informazione sul dipositivo
-
+
Batteria:
-
+
Nessun dispositivo compatibile è stato trovato!
-
+
Altro
-
+
Luci:
-
+
RGB OFF
-
+
RGB ON
-
+
Tono Laterale:
-
+
Silenzioso (Spento)
-
-
+
+
Forte
-
+
Istruzioni Vocali:
-
+
Voce Accesa
-
+
Voce Spenta
-
+
Suono di Notifica:
-
+
Prova 0
-
+
Prova 1
-
+
Tempo di Inattività:
-
+
0 Minuti (Spento)
-
+
90 Minuti
-
+
Chatmix:
-
+
Nessun valore
-
+
Equalizzatore
-
+
Preset Equalizzatore:
-
+
Equalizzatore:
-
+
Applica Equalizzatore
-
+
Limitatore Volume:
-
+
Limitatore Spento
-
+
Limitatore Acceso
-
+
Microfono
-
+
Ruota per mutare:
-
+
Spento
-
+
Acceso
-
+
Luminosità microfono mutato:
-
+
Basso (Spento)
-
+
Alto
-
+
Volume microfono:
-
+
Basso
-
+
Bluetooth
-
+
Bluetooth quando accese:
-
+
Bluetooth Spento
-
+
Bluetooth Acceso
-
+
Bluetoot volume chiamata:
-
+
BT e PC
-
+
PC -12dB
-
+
Solo BT
-
+
File
-
+
Aiuto
-
+
Controlla Aggiornamenti
-
+
About
-
-
+
+
Crediti
-
+
Carica Dispositivo
-
+
Impostazioni
-
+
Nascondi/Mostra
-
+
Accendi le Luci
-
+
Spegni le Luci
-
+
Esci
-
-
- Manca headsetcontrol.exe
-
-
-
-
- Manca headsetcontrol<br/>Scarica <a href='https://github.com/Sapd/HeadsetControl/releases/latest'>headsetcontrol</a> nella cartella aperta.
-
-
-
+
Cuffie Spente
-
+
HeadsetControl
Cuffie Spente
-
+
% - In Carica
-
+
HeadsetControl
Batteria in Carica
-
+
% - Batteria in scarica
-
+
HeadsetControl
Batteria:
-
+
Attenzione Batteria!
-
+
La batteria delle tue cuffie è scarica
-
+
No informazioni sulla batteria
-
+
Gioco
-
+
Chat
-
+
Controlla Aggirnamenti
-
-
+
+
aggiornato v
-
+
Nuova versione
-
+
-
+
Puoi trovare il codice sorgente di HeadsetControl-GUI su <a href='https://github.com/LeoKlaus/HeadsetControl-GUI'>GitHub</a>.<br/>Fatto da:<br/> - <a href='https://github.com/LeoKlaus'>LeoKlaus</a><br/> - <a href='https://github.com/nicola02nb'>nicola02nb</a><br/>Versione:
-
+
Un grande riconoscimento va a:<br/> - <a href='https://github.com/Sapd'>Sapd</a> per <a href='https://github.com/Sapd/HeadsetControl'>HeadsetCoontrol
diff --git a/src/Resources/tr/HeadsetControl_GUI_it_IT.qm b/src/Resources/tr/HeadsetControl_GUI_it_IT.qm
deleted file mode 100644
index 6f0725582fd3628ae905650b3bb574d51a2528b5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 9261
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
U8&1vcOLM?g+wfXEYiwxvA5g=onE(I)
diff --git a/src/Resources/translations.qrc b/src/Resources/translations.qrc
deleted file mode 100644
index c246505..0000000
--- a/src/Resources/translations.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- tr/HeadsetControl_GUI_en_US.qm
- tr/HeadsetControl_GUI_it_IT.qm
-
-
diff --git a/src/UI/mainwindow.cpp b/src/UI/mainwindow.cpp
index c2d3f9d..49838e9 100644
--- a/src/UI/mainwindow.cpp
+++ b/src/UI/mainwindow.cpp
@@ -30,22 +30,7 @@ MainWindow::MainWindow(QWidget *parent)
updateIconsTheme();
updateStyle();
resetGUI();
-
- if (!fileExists(HEADSETCONTROL_FILE_PATH)) {
- openFileExplorer(PROGRAM_APP_PATH);
- DialogInfo *dialog = new DialogInfo(this);
- dialog->setTitle(tr("Missing headsetcontrol"));
- dialog->setLabel(tr("Missing headsetcontrol
"
- "Download headsetcontrol in the opened folder."));
- dialog->exec();
- } else {
- loadDevices();
- if (!deviceList.isEmpty() && n_connected > 0) {
- loadDevice();
- }
- }
+ updateGUI();
connect(&API, &HeadsetControlAPI::actionSuccesful, this, &::MainWindow::saveDevicesSettings);
@@ -87,6 +72,11 @@ void MainWindow::bindEvents()
connect(ui->actionAbout, &QAction::triggered, this, &MainWindow::showAbout);
connect(ui->actionCredits, &QAction::triggered, this, &MainWindow::showCredits);
+ //Error frames
+ connect(ui->openfolderPushButton, &QPushButton::clicked, this, [=]() {
+ openFileExplorer(PROGRAM_APP_PATH);
+ });
+
// Other Section
connect(ui->onlightButton, &QPushButton::clicked, &API, [=]() {
API.setLights(selectedDevice, true);
@@ -159,10 +149,20 @@ void MainWindow::bindEvents()
}
//Tray Icon Section
-void MainWindow::setupTrayIcon()
+void MainWindow::changeTrayIconTo(QString iconPath)
{
- trayIconPath = ":/icons/headphones-inv.png";
+ trayIconPath = iconPath;
+ if (isAppDarkMode()) {
+ trayIconPath.replace("-dark", "-light");
+ } else {
+ trayIconPath.replace("-light", "-dark");
+ }
trayIcon->setIcon(QIcon(trayIconPath));
+}
+
+void MainWindow::setupTrayIcon()
+{
+ changeTrayIconTo(":/icons/headphones-light.png");
trayIcon->setToolTip("HeadsetControl");
trayMenu = new QMenu(this);
@@ -203,17 +203,16 @@ bool MainWindow::isAppDarkMode()
void MainWindow::updateIconsTheme()
{
- QString inv = "";
+ QString t = "";
if (isAppDarkMode()) {
- inv = "-inv";
- trayIconPath.replace(".png", "-inv.png");
+ //qApp->setWindowIcon(QIcon(":/icons/headphones-light.png"));
+ t = "-light";
} else {
- trayIconPath.replace("-inv.png", ".png");
+ //qApp->setWindowIcon(QIcon(":/icons/headphones-dark.png"));
+ t = "-dark";
}
- setWindowIcon(QIcon(":/icons/headphones" + inv + ".png"));
- qApp->setWindowIcon(QIcon(":/icons/headphones" + inv + ".png"));
- trayIcon->setIcon(QIcon(trayIconPath));
+ changeTrayIconTo(trayIconPath);
}
void MainWindow::updateStyle()
@@ -260,7 +259,8 @@ void MainWindow::moveToBottomRight()
QRect screenGeometry = screen->availableGeometry();
int x = screenGeometry.width() - width();
- int y = screenGeometry.height() - height() - ui->notSupportedFrame->height();
+ int y = screenGeometry.height() - height() - ui->notSupportedFrame->height()
+ - ui->missingheadsetcontrolFrame->height();
move(x, y);
}
@@ -270,6 +270,7 @@ void MainWindow::resetGUI()
ledOn->setEnabled(false);
ledOff->setEnabled(false);
+ ui->missingheadsetcontrolFrame->setHidden(false);
ui->notSupportedFrame->setHidden(false);
ui->deviceinfoFrame->setHidden(true);
@@ -292,6 +293,7 @@ void MainWindow::resetGUI()
ui->equalizerpresetFrame->setHidden(true);
ui->equalizerFrame->setHidden(true);
ui->applyEqualizer->setEnabled(false);
+ clearEqualizerSliders(ui->equalizerLayout);
ui->rotatetomuteFrame->setHidden(true);
ui->muteledbrightnessFrame->setHidden(true);
@@ -322,6 +324,7 @@ void MainWindow::loadDevice(int deviceIndex)
selectedDevice = deviceList.value(deviceIndex);
QSet &capabilities = selectedDevice->capabilities;
+ ui->missingheadsetcontrolFrame->setHidden(true);
ui->notSupportedFrame->setHidden(true);
qDebug() << selectedDevice->capabilities;
@@ -486,16 +489,29 @@ QList MainWindow::getSavedDevices()
void MainWindow::updateDevice()
{
- if (selectedDevice != nullptr) {
- QList newDl = API.getConnectedDevices();
- selectedDevice->updateDevice(newDl);
- }
+ QList newDl = API.getConnectedDevices();
+ selectedDevice->updateDevice(newDl);
}
//Update GUI Section
void MainWindow::updateGUI()
{
- updateDevice();
+ if (!fileExists(HEADSETCONTROL_FILE_PATH)) {
+ resetGUI();
+ ui->notSupportedFrame->setHidden(true);
+ selectedDevice = nullptr;
+ } else {
+ if (selectedDevice == nullptr) {
+ loadDevices();
+ if (!deviceList.isEmpty() && n_connected > 0) {
+ loadDevice();
+ } else {
+ ui->missingheadsetcontrolFrame->setHidden(true);
+ }
+ } else {
+ updateDevice();
+ }
+ }
setBatteryStatus();
setChatmixStatus();
}
@@ -503,6 +519,11 @@ void MainWindow::updateGUI()
// Info Section Events
void MainWindow::setBatteryStatus()
{
+ if (selectedDevice == nullptr) {
+ changeTrayIconTo(":/icons/headphones-light.png");
+ return;
+ }
+
QString status = selectedDevice->battery.status;
int batteryLevel = selectedDevice->battery.level;
QString level = QString::number(batteryLevel);
@@ -517,43 +538,43 @@ void MainWindow::setBatteryStatus()
if (status == "BATTERY_UNAVAILABLE") {
ui->batteryPercentage->setText(tr("Headset Off"));
trayIcon->setToolTip(tr("HeadsetControl \r\nHeadset Off"));
- trayIconPath = ":/icons/headphones-inv.png";
+ changeTrayIconTo(":/icons/headphones-light.png");
} else if (status == "BATTERY_CHARGING") {
ui->batteryPercentage->setText(level + tr("% - Charging"));
trayIcon->setToolTip(tr("HeadsetControl \r\nBattery Charging"));
- trayIconPath = ":/icons/battery-charging-inv.png";
+ changeTrayIconTo(":/icons/battery-charging-light.png");
} else if (status == "BATTERY_AVAILABLE") {
ui->batteryPercentage->setText(level + tr("% - Descharging"));
trayIcon->setToolTip(tr("HeadsetControl \r\nBattery: ") + level + "%");
if (level.toInt() > 75) {
- trayIconPath = ":/icons/battery-level-full-inv.png";
+ changeTrayIconTo(":/icons/battery-level-full-light.png");
notified = false;
} else if (level.toInt() > settings.batteryLowThreshold) {
- trayIconPath = ":/icons/battery-medium-inv.png";
+ changeTrayIconTo(":/icons/battery-medium-light.png");
notified = false;
} else {
- trayIconPath = ":/icons/battery-low-inv.png";
+ changeTrayIconTo(":/icons/battery-low-light.png");
if (!notified) {
trayIcon->showMessage(tr("Battery Alert!"),
tr("The battery of your headset is running low"),
- QIcon(":/icons/battery-low-inv.png"));
+ QIcon(":/icons/battery-low-light.png"));
notified = true;
}
}
} else {
ui->batteryPercentage->setText(tr("No battery info"));
trayIcon->setToolTip("HeadsetControl");
- trayIconPath = ":/icons/headphones-inv.png";
- }
-
- if (!isAppDarkMode()) {
- trayIconPath.replace("-inv", "");
+ changeTrayIconTo(":/icons/headphones-light.png");
}
- trayIcon->setIcon(QIcon(trayIconPath));
}
void MainWindow::setChatmixStatus()
{
+ if (selectedDevice == nullptr) {
+ ui->chatmixvalueLabel->setText(tr("None"));
+ return;
+ }
+
int chatmix = selectedDevice->chatmix;
QString chatmixValue = QString::number(chatmix);
QString chatmixStatus;
diff --git a/src/UI/mainwindow.h b/src/UI/mainwindow.h
index 45765cf..9561836 100644
--- a/src/UI/mainwindow.h
+++ b/src/UI/mainwindow.h
@@ -55,7 +55,7 @@ class MainWindow : public QMainWindow
int n_connected = 0, n_saved = 0;
HeadsetControlAPI API;
- Device *selectedDevice;
+ Device *selectedDevice = nullptr;
QList deviceList;
QList slidersEq;
@@ -63,6 +63,7 @@ class MainWindow : public QMainWindow
void bindEvents();
//Tray Icon Section
+ void changeTrayIconTo(QString iconPath);
void setupTrayIcon();
//Theme mode Section
diff --git a/src/UI/mainwindow.ui b/src/UI/mainwindow.ui
index b5786c9..373baf9 100644
--- a/src/UI/mainwindow.ui
+++ b/src/UI/mainwindow.ui
@@ -7,7 +7,7 @@
0
0
488
- 690
+ 792
@@ -24,10 +24,6 @@
HeadsetControl-GUI
-
-
- :/icons/headphones-inv.png:/icons/headphones-inv.png
-
@@ -54,6 +50,83 @@
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
-
+
+
+ Qt::LeftToRight
+
+
+ Missing headsetcontrol!<br/>Download <a href="https://github.com/Sapd/HeadsetControl/releases/latest">headsetcontrol</a> in the program folder.
+
+
+ Qt::AutoText
+
+
+ Qt::AlignCenter
+
+
+ false
+
+
+ Qt::TextBrowserInteraction
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Open Program Folder
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+
+
+
-
@@ -1781,8 +1854,6 @@ Model:
muteledbrightnessSlider
micvolumeSlider
-
-
-
+
diff --git a/src/Utils/headsetcontrolapi.cpp b/src/Utils/headsetcontrolapi.cpp
index 368d9ec..f3447e0 100644
--- a/src/Utils/headsetcontrolapi.cpp
+++ b/src/Utils/headsetcontrolapi.cpp
@@ -10,52 +10,6 @@ HeadsetControlAPI::HeadsetControlAPI(QString headsetcontrolFilePath)
sendCommand(QStringList());
}
-// HC rleated functions
-QString HeadsetControlAPI::sendCommand(const QStringList &args_list)
-{
- QProcess *proc = new QProcess();
- QStringList args = QStringList() << QString("--output") << QString("JSON");
- //args << QString("--test-device"); //Uncomment this to enable all "modules"
- args << args_list;
-
- proc->start(headsetcontrolFilePath, args);
- proc->waitForFinished();
- QString output = proc->readAllStandardOutput();
- qDebug() << "Command: \t" << headsetcontrolFilePath;
- qDebug() << "\tArgs: \theadsetcontrol " << args;
- // qDebug() << output;
-
- return output;
-}
-
-Action HeadsetControlAPI::sendAction(const QStringList &args_list)
-{
- QString output = sendCommand(args_list);
- QJsonDocument jsonDoc = QJsonDocument::fromJson(output.toUtf8());
- QJsonObject jsonInfo = jsonDoc.object();
- QJsonArray actions = jsonInfo["actions"].toArray();
- Action action;
- if (!actions.isEmpty()) {
- QJsonObject jaction = actions[0].toObject();
-
- action.device = jaction["device"].toString();
- action.capability = jaction["capability"].toString();
- action.status = jaction["status"].toString();
- action.error_message = jaction["error_message"].toString();
-
- action.success = action.status == "success";
-
- qDebug() << "Device:\t" << action.device;
- qDebug() << "Capability:" << action.capability;
- qDebug() << "Status:\t" << action.status;
- if (!action.success) {
- qDebug() << "Error:\t" << action.error_message;
- }
- }
-
- return action;
-}
-
QString HeadsetControlAPI::getName()
{
return name;
@@ -104,6 +58,53 @@ QList HeadsetControlAPI::getConnectedDevices()
return devices;
}
+// HC rleated functions
+QString HeadsetControlAPI::sendCommand(const QStringList &args_list)
+{
+ QProcess *proc = new QProcess();
+ QStringList args = QStringList() << QString("--output") << QString("JSON");
+ //args << QString("--test-device"); //Uncomment this to enable all "modules"
+ args << args_list;
+
+ proc->start(headsetcontrolFilePath, args);
+ proc->waitForFinished();
+ QString output = proc->readAllStandardOutput();
+ qDebug() << "Command: \t" << headsetcontrolFilePath;
+ qDebug() << "\tArgs: \theadsetcontrol " << args;
+ // qDebug() << output;
+ qDebug() << "Error: \t" << proc->error();
+
+ return output;
+}
+
+Action HeadsetControlAPI::sendAction(const QStringList &args_list)
+{
+ QString output = sendCommand(args_list);
+ QJsonDocument jsonDoc = QJsonDocument::fromJson(output.toUtf8());
+ QJsonObject jsonInfo = jsonDoc.object();
+ QJsonArray actions = jsonInfo["actions"].toArray();
+ Action action;
+ if (!actions.isEmpty()) {
+ QJsonObject jaction = actions[0].toObject();
+
+ action.device = jaction["device"].toString();
+ action.capability = jaction["capability"].toString();
+ action.status = jaction["status"].toString();
+ action.error_message = jaction["error_message"].toString();
+
+ action.success = action.status == "success";
+
+ qDebug() << "Device:\t" << action.device;
+ qDebug() << "Capability:" << action.capability;
+ qDebug() << "Status:\t" << action.status;
+ if (!action.success) {
+ qDebug() << "Error:\t" << action.error_message;
+ }
+ }
+
+ return action;
+}
+
void HeadsetControlAPI::setSidetone(Device *device, int level)
{
QStringList args = QStringList() << QString("--sidetone") << QString::number(level);
diff --git a/src/Utils/headsetcontrolapi.h b/src/Utils/headsetcontrolapi.h
index 1636bd1..e7a9b55 100644
--- a/src/Utils/headsetcontrolapi.h
+++ b/src/Utils/headsetcontrolapi.h
@@ -3,6 +3,7 @@
#include "device.h"
+#include
#include
#include
@@ -32,6 +33,7 @@ class HeadsetControlAPI : public QObject
private:
QString headsetcontrolFilePath;
+ QFile headsetcontrol;
QString name;
QVersionNumber version;
diff --git a/src/main.cpp b/src/main.cpp
index afe6131..bc2fa93 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -4,7 +4,7 @@
#include
const QString APP_NAME = "HeadsetControl-GUI";
-const QString GUI_VERSION = "0.16.3";
+const QString GUI_VERSION = "0.16.4";
int main(int argc, char *argv[])
{