Browse Source

Add options to disable Windows integrations. (#351 #342)

Ian Walton 1 year ago
parent
commit
dc2a5ad5c7
2 changed files with 53 additions and 32 deletions
  1. 10 0
      resources/settings/settings_description.json
  2. 43 32
      src/taskbar/TaskbarComponentWin.cpp

+ 10 - 0
resources/settings/settings_description.json

@@ -137,6 +137,16 @@
         "value": "userWebClient",
         "default": "",
         "hidden": true
+      },
+      {
+        "value": "enableWindowsMediaIntegration",
+        "default": true,
+        "platforms": [ "windows" ]
+      },
+      {
+        "value": "enableWindowsTaskbarIntegration",
+        "default": true,
+        "platforms": [ "windows" ]
       }
     ]
   },

+ 43 - 32
src/taskbar/TaskbarComponentWin.cpp

@@ -35,27 +35,32 @@ void TaskbarComponentWin::setWindow(QQuickWindow* window)
   qDebug() << "Taskbar initialization started";
   TaskbarComponent::setWindow(window);
 
-  m_button = new QWinTaskbarButton(m_window);
-  m_button->setWindow(m_window);
+  bool EnableTaskbar = SettingsComponent::Get().getSetting("enableWindowsTaskbarIntegration", true).toBool();
+  bool EnableMediaControls = SettingsComponent::Get().getSetting("enableWindowsMediaIntegration", true).toBool();
 
-  m_toolbar = new QWinThumbnailToolBar(m_window);
-  m_toolbar->setWindow(m_window);
+  if (EnableTaskbar) {
+    m_button = new QWinTaskbarButton(m_window);
+    m_button->setWindow(m_window);
 
-  m_prev = new QWinThumbnailToolButton(m_toolbar);
-  connect(m_prev, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onPrevClicked);
+    m_toolbar = new QWinThumbnailToolBar(m_window);
+    m_toolbar->setWindow(m_window);
 
-  m_pause = new QWinThumbnailToolButton(m_toolbar);
-  connect(m_pause, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onPauseClicked);
+    m_prev = new QWinThumbnailToolButton(m_toolbar);
+    connect(m_prev, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onPrevClicked);
 
-  m_next = new QWinThumbnailToolButton(m_toolbar);
-  connect(m_next, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onNextClicked);
+    m_pause = new QWinThumbnailToolButton(m_toolbar);
+    connect(m_pause, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onPauseClicked);
 
-  m_prev->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaSkipBackward));
-  m_next->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaSkipForward));
+    m_next = new QWinThumbnailToolButton(m_toolbar);
+    connect(m_next, &QWinThumbnailToolButton::clicked, this, &TaskbarComponentWin::onNextClicked);
 
-  m_toolbar->addButton(m_prev);
-  m_toolbar->addButton(m_pause);
-  m_toolbar->addButton(m_next);
+    m_prev->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaSkipBackward));
+    m_next->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaSkipForward));
+
+    m_toolbar->addButton(m_prev);
+    m_toolbar->addButton(m_pause);
+    m_toolbar->addButton(m_next);
+  }
 
   connect(&PlayerComponent::Get(), &PlayerComponent::positionUpdate, this, &TaskbarComponentWin::setProgress);
   connect(&PlayerComponent::Get(), &PlayerComponent::playing, this, &TaskbarComponentWin::playing);
@@ -66,7 +71,9 @@ void TaskbarComponentWin::setWindow(QQuickWindow* window)
   setControlsVisible(false);
   setPaused(false);
 
-  initializeMediaTransport((HWND)window->winId());
+  if (EnableMediaControls) {
+    initializeMediaTransport((HWND)window->winId());
+  }
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -126,29 +133,33 @@ void TaskbarComponentWin::setControlsVisible(bool value)
 /////////////////////////////////////////////////////////////////////////////////////////
 void TaskbarComponentWin::setProgress(quint64 value)
 {
-  qint64 duration = PlayerComponent::Get().getDuration();
-  int progress = 0;
-  if (duration != 0) {
-    progress = (int) (value / duration / 10);
+  if (m_button) {
+    qint64 duration = PlayerComponent::Get().getDuration();
+    int progress = 0;
+    if (duration != 0) {
+      progress = (int) (value / duration / 10);
+    }
+    m_button->progress()->setValue(progress);
   }
-  m_button->progress()->setValue(progress);
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////
 void TaskbarComponentWin::setPaused(bool value)
 {
-  if (value)
-  {
-    // m_pause->setToolTip("Resume");
-    m_pause->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaPlay));
-  }
-  else
-  {
-    // m_pause->setToolTip("Pause");
-    m_pause->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaPause));
-  }
+  if (m_button) {
+    if (value)
+    {
+      // m_pause->setToolTip("Resume");
+      m_pause->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaPlay));
+    }
+    else
+    {
+      // m_pause->setToolTip("Pause");
+      m_pause->setIcon(QApplication::style()->standardIcon(QStyle::SP_MediaPause));
+    }
 
-  m_button->progress()->setPaused(value);
+    m_button->progress()->setPaused(value);
+  }
 
   if (m_initialized)
   {