]> repos.lx-s.de Git - winmute.git/commitdiff
Integrate Bluetooth muting into MuteController
authorAlexander Steinhöfer <kontakt@lx-s.de>
Wed, 3 Aug 2022 07:40:23 +0000 (09:40 +0200)
committerAlexander Steinhöfer <kontakt@lx-s.de>
Wed, 3 Aug 2022 07:40:23 +0000 (09:40 +0200)
WinMute/MuteControl.cpp
WinMute/MuteControl.h
WinMute/WinMute.cpp

index 24a801052672487d9332d93a58705f1ef5a57072..8627eaf96aaf5d9df76f5d208728eef976ede047 100644 (file)
@@ -39,6 +39,7 @@ enum MuteType {
    MuteTypeScreensaverActive,
    MuteTypeRemoteSession,
    MuteTypeDisplayStandby,
+   MuteTypeBluetoothDisconnect,
 
    // Without restore
    MuteTypeLogout,
@@ -173,42 +174,52 @@ void MuteControl::SetMuteOnDisplayStandby(bool enable)
    muteConfig_[MuteTypeDisplayStandby].shouldMute = enable;
 }
 
+void MuteControl::SetMuteOnBluetoothDisconnect(bool enable)
+{
+   muteConfig_[MuteTypeBluetoothDisconnect].shouldMute = enable;
+}
+
 bool MuteControl::GetRestoreVolume()
 {
    return restoreVolume_;
 }
 
-bool MuteControl::GetMuteOnWorkstationLock()
+bool MuteControl::GetMuteOnWorkstationLock() const
 {
    return muteConfig_[MuteTypeWorkstationLock].shouldMute;
 }
 
-bool MuteControl::GetMuteOnScreensaverActivation()
+bool MuteControl::GetMuteOnScreensaverActivation() const
 {
    return muteConfig_[MuteTypeScreensaverActive].shouldMute;
 }
 
-bool MuteControl::GetMuteOnRemoteSession()
+bool MuteControl::GetMuteOnRemoteSession() const
 {
    return muteConfig_[MuteTypeRemoteSession].shouldMute;
 }
 
-bool MuteControl::GetMuteOnDisplayStandby()
+bool MuteControl::GetMuteOnDisplayStandby() const
 {
    return muteConfig_[MuteTypeDisplayStandby].shouldMute;
 }
 
-bool MuteControl::GetMuteOnLogout()
+bool MuteControl::GetMuteOnBluetoothDisconnect() const
+{
+   return muteConfig_[MuteTypeBluetoothDisconnect].shouldMute;
+}
+
+bool MuteControl::GetMuteOnLogout() const
 {
    return muteConfig_[MuteTypeLogout].shouldMute;
 }
 
-bool MuteControl::GetMuteOnSuspend()
+bool MuteControl::GetMuteOnSuspend() const
 {
    return muteConfig_[MuteTypeSuspend].shouldMute;
 }
 
-bool MuteControl::GetMuteOnShutdown()
+bool MuteControl::GetMuteOnShutdown() const
 {
    return muteConfig_[MuteTypeShutdown].shouldMute;
 }
@@ -266,6 +277,14 @@ void MuteControl::NotifyDisplayStandby(bool active)
    }
 }
 
+void MuteControl::NotifyBluetoothConnected(bool connected)
+{
+   WMLog::GetInstance().Write(
+      L"Mute Event: Bluetooth audio device %s",
+      connected ? L"connected" : L"disconnected");
+   NotifyRestoreCondition(MuteTypeBluetoothDisconnect, !connected);
+}
+
 void MuteControl::NotifyLogout()
 {
    WMLog::GetInstance().Write(L"Mute Event: Logout start");
index 75f492e76cec960a567a5608ef6590172d9f0e00..8ccc91ba8b108fa9c21cade2e3465b5828351063 100644 (file)
@@ -54,6 +54,7 @@ public:
    void SetMuteOnScreensaverActivation(bool enable);
    void SetMuteOnRemoteSession(bool enable);
    void SetMuteOnDisplayStandby(bool enable);
+   void SetMuteOnBluetoothDisconnect(bool enable);
    
    void SetMuteOnLogout(bool enable);
    void SetMuteOnSuspend(bool enable);
@@ -61,19 +62,21 @@ public:
 
    bool GetRestoreVolume();
 
-   bool GetMuteOnWorkstationLock();
-   bool GetMuteOnScreensaverActivation();
-   bool GetMuteOnRemoteSession();
-   bool GetMuteOnDisplayStandby();
+   bool GetMuteOnWorkstationLock()  const;
+   bool GetMuteOnScreensaverActivation()  const;
+   bool GetMuteOnRemoteSession()  const;
+   bool GetMuteOnDisplayStandby()  const;
+   bool GetMuteOnBluetoothDisconnect() const;
 
-   bool GetMuteOnLogout();
-   bool GetMuteOnSuspend();
-   bool GetMuteOnShutdown();
+   bool GetMuteOnLogout() const;
+   bool GetMuteOnSuspend() const;
+   bool GetMuteOnShutdown() const;
 
    void NotifyScreensaver(bool active);
    void NotifyWorkstationLock(bool active);
    void NotifyRemoteSession(bool active);
-   void NotifyDisplayStandby(bool enable);
+   void NotifyDisplayStandby(bool active);
+   void NotifyBluetoothConnected(bool connected);
 
    void NotifyLogout();
    void NotifySuspend(bool active);
index 068bd1d9e1d831bad933316748e26e19592aa7d9..e6e4c301efc5ce854d864b469f6cfa657e1c345b 100644 (file)
@@ -322,6 +322,7 @@ bool WinMute::LoadSettings()
 
    muteConfig_.muteOnBluetooth = settings_.QueryValue(SettingsKey::MUTE_ON_BLUETOOTH);
    if (!muteConfig_.muteOnBluetooth) {
+      muteCtrl_.SetMuteOnBluetoothDisconnect(false);
       btDetector_.Unload();
    } else {
       if (!btDetector_.Init(hWnd_)) {
@@ -331,6 +332,7 @@ bool WinMute::LoadSettings()
             L"Bluetooth muting will be disabled on this computer");
          settings_.SetValue(SettingsKey::MUTE_ON_BLUETOOTH, FALSE);
       } else {
+         muteCtrl_.SetMuteOnBluetoothDisconnect(true);
          bool muteOnWithDeviceList = settings_.QueryValue(SettingsKey::MUTE_ON_BLUETOOTH_DEVICELIST);
          btDetector_.SetDeviceList(settings_.GetBluetoothDevicesA(), muteOnWithDeviceList);
       }
@@ -576,19 +578,9 @@ LRESULT CALLBACK WinMute::WindowProc(
       if (muteConfig_.muteOnBluetooth) {
          const auto btStatus = btDetector_.GetBluetoothStatus(msg, wParam, lParam);
          if (btStatus == BluetoothDetector::BluetoothStatus::Connected) {
-            if (settings_.QueryValue(SettingsKey::NOTIFICATIONS_ENABLED)) {
-               trayIcon_.ShowPopup(
-                  L"Bluetooth muting",
-                  L"Bluetooth device connected: Restoring audio");
-            }
-            muteCtrl_.SetMute(false);
+            muteCtrl_.NotifyBluetoothConnected(true);
          } else if (btStatus == BluetoothDetector::BluetoothStatus::Disconnected) {
-            if (settings_.QueryValue(SettingsKey::NOTIFICATIONS_ENABLED)) {
-               trayIcon_.ShowPopup(
-                  L"Bluetooth muting",
-                  L"Bluetooth device disconnected: Muting");
-            }
-            muteCtrl_.SetMute(true);
+            muteCtrl_.NotifyBluetoothConnected(false);
          }
       }
       return TRUE;