uisupport: Provide helpers for dealing with widget changes
[quassel.git] / src / qtui / dockmanagernotificationbackend.cpp
index c9fdc0d..2a6ea9b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2013 by the Quassel Project                             *
+ *   Copyright (C) 2013-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include "clientsettings.h"
 #include "coreconnection.h"
 #include "clientbacklogmanager.h"
+#include "util.h"
 
 DockManagerNotificationBackend::DockManagerNotificationBackend(QObject *parent)
-    : AbstractNotificationBackend(parent), _bus(QDBusConnection::sessionBus()), _dock(0), _item(0), _count(0)
+    : AbstractNotificationBackend(parent), _bus(QDBusConnection::sessionBus())
 {
     NotificationSettings notificationSettings;
     _enabled = notificationSettings.value("DockManager/Enabled", false).toBool();
@@ -46,16 +47,16 @@ DockManagerNotificationBackend::DockManagerNotificationBackend(QObject *parent)
         if (_dock->isValid()) {
             _bus.connect("org.freedesktop.DockManager", "/org/freedesktop/DockManager", "org.freedesktop.DockManager", "ItemAdded", this, SLOT(itemAdded(QDBusObjectPath)));
         } else {
-            qDebug() << "No DockManager available";
-            _enabled = false;
+            _available = _enabled = false;
             return;
         }
     }
+    _available = true;
 
     itemAdded(QDBusObjectPath());
 
-    connect(Client::coreConnection(), SIGNAL(progressValueChanged(int)), this, SLOT(updateProgress(int)));
-    connect(Client::coreConnection(), SIGNAL(synchronized()), this, SLOT(synchronized()));
+    connect(Client::coreConnection(), &CoreConnection::progressValueChanged, this, selectOverload<int>(&DockManagerNotificationBackend::updateProgress));
+    connect(Client::coreConnection(), &CoreConnection::synchronized, this, &DockManagerNotificationBackend::synchronized);
 }
 
 
@@ -110,7 +111,7 @@ void DockManagerNotificationBackend::updateProgress(int done, int total)
 
     int perc = 0;
     if (done == total) {
-        disconnect(Client::backlogManager(), 0, this, 0);
+        disconnect(Client::backlogManager(), nullptr, this, nullptr);
         perc = -1;
     } else
         perc = (done * 100) / total;
@@ -123,7 +124,7 @@ void DockManagerNotificationBackend::updateProgress(int done, int total)
 
 void DockManagerNotificationBackend::synchronized()
 {
-    connect(Client::backlogManager(), SIGNAL(updateProgress(int, int)), this, SLOT(updateProgress(int, int)));
+    connect(Client::backlogManager(), &ClientBacklogManager::updateProgress, this, selectOverload<int, int>(&DockManagerNotificationBackend::updateProgress));
 }
 
 
@@ -171,20 +172,20 @@ void DockManagerNotificationBackend::enabledChanged(const QVariant &v)
 
 SettingsPage *DockManagerNotificationBackend::createConfigWidget() const
 {
-    return new ConfigWidget();
+    return new ConfigWidget(_available);
 }
 
 
 /***************************************************************************/
 
-DockManagerNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent)
+DockManagerNotificationBackend::ConfigWidget::ConfigWidget(bool enabled, QWidget *parent)
     : SettingsPage("Internal", "DockManagerNotification", parent)
 {
-    QHBoxLayout *layout = new QHBoxLayout(this);
+    auto *layout = new QHBoxLayout(this);
     layout->addWidget(enabledBox = new QCheckBox(tr("Mark dockmanager entry"), this));
-    enabledBox->setEnabled(true);
+    enabledBox->setVisible(enabled);
 
-    connect(enabledBox, SIGNAL(toggled(bool)), SLOT(widgetChanged()));
+    connect(enabledBox, &QAbstractButton::toggled, this, &ConfigWidget::widgetChanged);
 }