From 40ee98d6f3837b311c4573d1daf1b9d98143ebb1 Mon Sep 17 00:00:00 2001 From: Alexander Babikov Date: Fri, 11 Apr 2025 05:26:01 +0500 Subject: [PATCH] qt: The sound icon's menu is now a submenu of the Tools menu Replaces (and includes) the standalone Sound gain option --- src/qt/languages/86box.pot | 3 +++ src/qt/languages/ca-ES.po | 3 +++ src/qt/languages/cs-CZ.po | 3 +++ src/qt/languages/de-DE.po | 3 +++ src/qt/languages/es-ES.po | 3 +++ src/qt/languages/fi-FI.po | 3 +++ src/qt/languages/fr-FR.po | 3 +++ src/qt/languages/hr-HR.po | 3 +++ src/qt/languages/hu-HU.po | 3 +++ src/qt/languages/it-IT.po | 3 +++ src/qt/languages/ja-JP.po | 3 +++ src/qt/languages/ko-KR.po | 3 +++ src/qt/languages/nl-NL.po | 3 +++ src/qt/languages/pl-PL.po | 3 +++ src/qt/languages/pt-BR.po | 3 +++ src/qt/languages/pt-PT.po | 3 +++ src/qt/languages/ru-RU.po | 3 +++ src/qt/languages/sk-SK.po | 3 +++ src/qt/languages/sl-SI.po | 3 +++ src/qt/languages/tr-TR.po | 3 +++ src/qt/languages/uk-UA.po | 3 +++ src/qt/languages/vi-VN.po | 3 +++ src/qt/languages/zh-CN.po | 3 +++ src/qt/languages/zh-TW.po | 3 +++ src/qt/qt_machinestatus.cpp | 36 +++++++++--------------------------- src/qt/qt_machinestatus.hpp | 5 ++--- src/qt/qt_mainwindow.cpp | 14 ++++++++++++-- src/qt/qt_mainwindow.hpp | 1 + src/qt/qt_mainwindow.ui | 15 ++++++++++++++- 29 files changed, 110 insertions(+), 33 deletions(-) diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot index 07dfb7cc5..066e98167 100644 --- a/src/qt/languages/86box.pot +++ b/src/qt/languages/86box.pot @@ -189,6 +189,9 @@ msgstr "" msgid "Take s&creenshot" msgstr "" +msgid "S&ound" +msgstr "" + msgid "&Preferences..." msgstr "" diff --git a/src/qt/languages/ca-ES.po b/src/qt/languages/ca-ES.po index dc0a9df2a..93ad884bd 100644 --- a/src/qt/languages/ca-ES.po +++ b/src/qt/languages/ca-ES.po @@ -189,6 +189,9 @@ msgstr "&Actualitzar icones a la barra d'estat" msgid "Take s&creenshot" msgstr "Prendre c&aptura" +msgid "S&ound" +msgstr "S&o" + msgid "&Preferences..." msgstr "&Preferències ..." diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index 7e76d3760..9205839aa 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -189,6 +189,9 @@ msgstr "&Aktualizovat ikony stavového řádku" msgid "Take s&creenshot" msgstr "Pořídit &screenshot" +msgid "S&ound" +msgstr "&Zvuk" + msgid "&Preferences..." msgstr "&Předvolby..." diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index f545729a8..a90c29ac0 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -189,6 +189,9 @@ msgstr "&Statusleistenicons aktualisieren" msgid "Take s&creenshot" msgstr "S&creenshot aufnehmen" +msgid "S&ound" +msgstr "S&ound" + msgid "&Preferences..." msgstr "&Einstellungen..." diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index 0733f46ec..3b90772c0 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -189,6 +189,9 @@ msgstr "&Actualizar iconos en barra de estado" msgid "Take s&creenshot" msgstr "Tomar c&aptura" +msgid "S&ound" +msgstr "S&onido" + msgid "&Preferences..." msgstr "&Preferencias..." diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index a7ac64eff..6460ce286 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -189,6 +189,9 @@ msgstr "&Päivitä tilapalkin kuvakkeita" msgid "Take s&creenshot" msgstr "Ota &kuvakaappaus" +msgid "S&ound" +msgstr "&Ääni" + msgid "&Preferences..." msgstr "&Sovellusasetukset..." diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index 434e8c31b..d83bd81a3 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -189,6 +189,9 @@ msgstr "Mettre à jour la barre de stat&us" msgid "Take s&creenshot" msgstr "Copie &Ecran" +msgid "S&ound" +msgstr "S&on" + msgid "&Preferences..." msgstr "&Préférences..." diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index b202b39b5..1bc6d4d25 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -189,6 +189,9 @@ msgstr "&Ažuriraj ikone statusnog redka" msgid "Take s&creenshot" msgstr "Napravi &snimku zaslona" +msgid "S&ound" +msgstr "&Zvuk" + msgid "&Preferences..." msgstr "&Postavke..." diff --git a/src/qt/languages/hu-HU.po b/src/qt/languages/hu-HU.po index e9aa6a4ff..23229893a 100644 --- a/src/qt/languages/hu-HU.po +++ b/src/qt/languages/hu-HU.po @@ -189,6 +189,9 @@ msgstr "Állapotsori ikonok &frissítése" msgid "Take s&creenshot" msgstr "&Képernyőkép készítése" +msgid "S&ound" +msgstr "&Hang" + msgid "&Preferences..." msgstr "&Beállítások..." diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po index 2f31a9dba..690af0a68 100644 --- a/src/qt/languages/it-IT.po +++ b/src/qt/languages/it-IT.po @@ -189,6 +189,9 @@ msgstr "&Aggiorna icone della barra di stato" msgid "Take s&creenshot" msgstr "Cattura schermata" +msgid "S&ound" +msgstr "A&udio" + msgid "&Preferences..." msgstr "&Preferenze..." diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 318d0dca5..502ccda20 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -189,6 +189,9 @@ msgstr "ステータスバーのアイコンを更新(&U)" msgid "Take s&creenshot" msgstr "スクリーンショットを撮る(&C)" +msgid "S&ound" +msgstr "サウンド(&O)" + msgid "&Preferences..." msgstr "環境設定(&P)..." diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po index 027c5a778..b149b62bb 100644 --- a/src/qt/languages/ko-KR.po +++ b/src/qt/languages/ko-KR.po @@ -189,6 +189,9 @@ msgstr "상태 바 아이콘 갱신하기(&U)" msgid "Take s&creenshot" msgstr "스크린샷 찍기(&C)" +msgid "S&ound" +msgstr "사운드(&O)" + msgid "&Preferences..." msgstr "환경설정(&P)..." diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po index 65e589b2b..0fe316550 100644 --- a/src/qt/languages/nl-NL.po +++ b/src/qt/languages/nl-NL.po @@ -189,6 +189,9 @@ msgstr "&Statusbalkpictogrammen bijwerken" msgid "Take s&creenshot" msgstr "Maak een schermafbeelding" +msgid "S&ound" +msgstr "&Geluid" + msgid "&Preferences..." msgstr "&Voorkeuren..." diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po index 4e93f9dd1..81b9f9b04 100644 --- a/src/qt/languages/pl-PL.po +++ b/src/qt/languages/pl-PL.po @@ -189,6 +189,9 @@ msgstr "&Aktualizuj ikony na pasku statusu" msgid "Take s&creenshot" msgstr "Zrób &zrzut ekranu" +msgid "S&ound" +msgstr "Dź&więk" + msgid "&Preferences..." msgstr "&Preferencje..." diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po index 3e0ec7ff1..0b1ab46e4 100644 --- a/src/qt/languages/pt-BR.po +++ b/src/qt/languages/pt-BR.po @@ -189,6 +189,9 @@ msgstr "&Atualizar ícones da barra de status" msgid "Take s&creenshot" msgstr "Capturar &tela" +msgid "S&ound" +msgstr "&Som" + msgid "&Preferences..." msgstr "&Preferências..." diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po index 9fb1ce342..c83ac3655 100644 --- a/src/qt/languages/pt-PT.po +++ b/src/qt/languages/pt-PT.po @@ -189,6 +189,9 @@ msgstr "&Atualizar ícones da barra de estado" msgid "Take s&creenshot" msgstr "Gravar imagem de ecrã" +msgid "S&ound" +msgstr "&Som" + msgid "&Preferences..." msgstr "&Preferências..." diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po index 725f7adf6..b466c6624 100644 --- a/src/qt/languages/ru-RU.po +++ b/src/qt/languages/ru-RU.po @@ -189,6 +189,9 @@ msgstr "&Обновление значков строки состояния" msgid "Take s&creenshot" msgstr "Сделать с&криншот" +msgid "S&ound" +msgstr "&Звук" + msgid "&Preferences..." msgstr "&Параметры..." diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po index 937b067fe..d70d14e56 100644 --- a/src/qt/languages/sk-SK.po +++ b/src/qt/languages/sk-SK.po @@ -189,6 +189,9 @@ msgstr "&Aktualizovať ikony na stavovom riadku" msgid "Take s&creenshot" msgstr "Urobiť snímku &obrazovky" +msgid "S&ound" +msgstr "&Zvuk" + msgid "&Preferences..." msgstr "&Predvoľby..." diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po index b28954b19..419d7dcc5 100644 --- a/src/qt/languages/sl-SI.po +++ b/src/qt/languages/sl-SI.po @@ -189,6 +189,9 @@ msgstr "&Posodabljaj ikone statusne vrstice" msgid "Take s&creenshot" msgstr "&Zajemi posnetek zaslona" +msgid "S&ound" +msgstr "Z&vok" + msgid "&Preferences..." msgstr "&Možnosti..." diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po index 54bdac06e..d134be6d0 100644 --- a/src/qt/languages/tr-TR.po +++ b/src/qt/languages/tr-TR.po @@ -195,6 +195,9 @@ msgstr "&Tercihler..." msgid "Enable &Discord integration" msgstr "&Discord entegrasyonunu etkinleştir" +msgid "S&ound" +msgstr "&Ses" + msgid "Sound &gain..." msgstr "&Ses düzeyi artışı..." diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po index b78bb0661..d475fa201 100644 --- a/src/qt/languages/uk-UA.po +++ b/src/qt/languages/uk-UA.po @@ -189,6 +189,9 @@ msgstr "&Обновлення значків рядка стану" msgid "Take s&creenshot" msgstr "Зробити &знімок" +msgid "S&ound" +msgstr "&Звук" + msgid "&Preferences..." msgstr "&Параметри..." diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index e4b15a971..b4c72ec26 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -189,6 +189,9 @@ msgstr "Cậ&p nhật biểu tượng thanh trạng thái" msgid "Take s&creenshot" msgstr "Chụp &màn hình" +msgid "S&ound" +msgstr "&Thanh âm" + msgid "&Preferences..." msgstr "&Tùy biến..." diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index b02f41bbb..8e5dd1a4b 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -189,6 +189,9 @@ msgstr "更新状态栏图标(&U)" msgid "Take s&creenshot" msgstr "截图(&C)" +msgid "S&ound" +msgstr "声音(&O)" + msgid "&Preferences..." msgstr "首选项(&P)..." diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po index 2662770b8..584c18dc9 100644 --- a/src/qt/languages/zh-TW.po +++ b/src/qt/languages/zh-TW.po @@ -189,6 +189,9 @@ msgstr "更新狀態列圖示(&U)" msgid "Take s&creenshot" msgstr "擷圖(&C)" +msgid "S&ound" +msgstr "聲音(&O)" + msgid "&Preferences..." msgstr "偏好設定(&P)..." diff --git a/src/qt/qt_machinestatus.cpp b/src/qt/qt_machinestatus.cpp index aba7fc1d4..d86dae7b9 100644 --- a/src/qt/qt_machinestatus.cpp +++ b/src/qt/qt_machinestatus.cpp @@ -270,7 +270,6 @@ MachineStatus::MachineStatus(QObject *parent) , refreshTimer(new QTimer(this)) { d = std::make_unique(this); - muteUnmuteAction = nullptr; soundMenu = nullptr; connect(refreshTimer, &QTimer::timeout, this, &MachineStatus::refreshIcons); refreshTimer->start(75); @@ -279,9 +278,9 @@ MachineStatus::MachineStatus(QObject *parent) MachineStatus::~MachineStatus() = default; void -MachineStatus::setSoundGainAction(QAction* action) +MachineStatus::setSoundMenu(QMenu* menu) { - soundGainAction = action; + soundMenu = menu; } bool @@ -519,28 +518,6 @@ MachineStatus::refresh(QStatusBar *sbar) } sbar->removeWidget(d->sound.get()); - if (!muteUnmuteAction) { - muteUnmuteAction = new QAction; - connect(muteUnmuteAction, &QAction::triggered, this, [this]() { - sound_muted ^= 1; - config_save(); - if (d->sound) - d->sound->setPixmap(sound_muted ? d->pixmaps.sound.disabled : d->pixmaps.sound.normal); - - muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); - }); - } - - if (!soundMenu) { - soundMenu = new QMenu((QWidget*)parent()); - - soundMenu->addAction(muteUnmuteAction); - soundMenu->addSeparator(); - soundMenu->addAction(soundGainAction); - - muteUnmuteAction->setParent(soundMenu); - } - if (cassette_enable) { d->cassette.label = std::make_unique(); d->cassette.setEmpty(QString(cassette_fname).isEmpty()); @@ -710,8 +687,6 @@ MachineStatus::refresh(QStatusBar *sbar) d->sound = std::make_unique(); d->sound->setPixmap(sound_muted ? d->pixmaps.sound.disabled : d->pixmaps.sound.normal); - if (muteUnmuteAction) - muteUnmuteAction->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); connect(d->sound.get(), &ClickableLabel::clicked, this, [this](QPoint pos) { this->soundMenu->popup(pos - QPoint(0, this->soundMenu->sizeHint().height())); @@ -727,6 +702,13 @@ MachineStatus::refresh(QStatusBar *sbar) refreshEmptyIcons(); } +void +MachineStatus::updateSoundIcon() +{ + if (d->sound) + d->sound->setPixmap(sound_muted ? d->pixmaps.sound.disabled : d->pixmaps.sound.normal); +} + void MachineStatus::message(const QString &msg) { diff --git a/src/qt/qt_machinestatus.hpp b/src/qt/qt_machinestatus.hpp index 90b420763..ad6425b5a 100644 --- a/src/qt/qt_machinestatus.hpp +++ b/src/qt/qt_machinestatus.hpp @@ -73,20 +73,19 @@ public: QString getMessage(); void clearActivity(); - void setSoundGainAction(QAction* action); + void setSoundMenu(QMenu* menu); public slots: void refresh(QStatusBar *sbar); void message(const QString &msg); void updateTip(int tag); void refreshEmptyIcons(); void refreshIcons(); + void updateSoundIcon(); private: struct States; std::unique_ptr d; QTimer *refreshTimer; - QAction *soundGainAction; - QAction *muteUnmuteAction; QMenu *soundMenu; }; diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index e9ebdaad8..886f84dcd 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -180,7 +180,8 @@ MainWindow::MainWindow(QWidget *parent) extern MainWindow *main_window; main_window = this; ui->setupUi(this); - status->setSoundGainAction(ui->actionSound_gain); + status->setSoundMenu(ui->menuSound); + ui->actionMute_Unmute->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); ui->menuEGA_S_VGA_settings->menuAction()->setMenuRole(QAction::NoRole); ui->stackedWidget->setMouseTracking(true); statusBar()->setVisible(!hide_status_bar); @@ -1334,7 +1335,7 @@ void MainWindow::refreshMediaMenu() { mm->refresh(ui->menuMedia); - status->setSoundGainAction(ui->actionSound_gain); + status->setSoundMenu(ui->menuSound); status->refresh(ui->statusbar); ui->actionMCA_devices->setVisible(machine_has_bus(machine, MACHINE_BUS_MCA)); ui->actionACPI_Shutdown->setEnabled(!!acpi_enabled); @@ -1937,6 +1938,15 @@ MainWindow::on_actionTake_screenshot_triggered() device_force_redraw(); } +void +MainWindow::on_actionMute_Unmute_triggered() +{ + sound_muted ^= 1; + config_save(); + status->updateSoundIcon(); + ui->actionMute_Unmute->setText(sound_muted ? tr("&Unmute") : tr("&Mute")); +} + void MainWindow::on_actionSound_gain_triggered() { diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index 5c8bd388b..4b3f9ecae 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -116,6 +116,7 @@ private slots: void on_actionHide_tool_bar_triggered(); void on_actionUpdate_status_bar_icons_triggered(); void on_actionTake_screenshot_triggered(); + void on_actionMute_Unmute_triggered(); void on_actionSound_gain_triggered(); void on_actionPreferences_triggered(); void on_actionEnable_Discord_integration_triggered(bool checked); diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui index ef3cf16c6..83a80342b 100644 --- a/src/qt/qt_mainwindow.ui +++ b/src/qt/qt_mainwindow.ui @@ -87,13 +87,21 @@ &Tools + + + S&ound + + + + + - + @@ -725,6 +733,11 @@ false + + + &Mute + + Sound &gain...