modernize: Use std::make_unique
[quassel.git] / src / qtui / qtmultimedianotificationbackend.cpp
index 746c21c..3a32cb1 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include "qtmultimedianotificationbackend.h"
+
 #include <QFileDialog>
-#include <QIcon>
 #include <QUrl>
-
-#include "qtmultimedianotificationbackend.h"
+#include <memory>
 
 #include "clientsettings.h"
+#include "icon.h"
 #include "mainwin.h"
 #include "qtui.h"
 
 QtMultimediaNotificationBackend::QtMultimediaNotificationBackend(QObject *parent)
-    : AbstractNotificationBackend(parent),
-    _media(0)
+    : AbstractNotificationBackend(parent)
 {
     NotificationSettings notificationSettings;
     notificationSettings.notify("QtMultimedia/Enabled", this, SLOT(enabledChanged(const QVariant &)));
@@ -42,13 +42,6 @@ QtMultimediaNotificationBackend::QtMultimediaNotificationBackend(QObject *parent
 }
 
 
-QtMultimediaNotificationBackend::~QtMultimediaNotificationBackend()
-{
-    if (_media)
-        delete _media;
-}
-
-
 void QtMultimediaNotificationBackend::notify(const Notification &notification)
 {
     if (_enabled && (notification.type == Highlight || notification.type == PrivMsg)) {
@@ -88,15 +81,12 @@ SettingsPage *QtMultimediaNotificationBackend::createConfigWidget() const
 
 void QtMultimediaNotificationBackend::createMediaObject(const QString &file)
 {
-    if (_media)
-        delete _media;
-
     if (file.isEmpty()) {
-        _media = 0;
+        _media.reset();
         return;
     }
 
-    _media = new QMediaPlayer;
+    _media = std::make_unique<QMediaPlayer>();
     _media->setMedia(QUrl::fromLocalFile(file));
 }
 
@@ -104,42 +94,32 @@ void QtMultimediaNotificationBackend::createMediaObject(const QString &file)
 /***************************************************************************/
 
 QtMultimediaNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent)
-    : SettingsPage("Internal", "QtMultimediaNotification", parent),
-    audioPreview(0)
+    : SettingsPage("Internal", "QtMultimediaNotification", parent)
 {
     ui.setupUi(this);
-    ui.enabled->setIcon(QIcon::fromTheme("media-playback-start"));
-    ui.play->setIcon(QIcon::fromTheme("media-playback-start"));
-    ui.open->setIcon(QIcon::fromTheme("document-open"));
+    ui.enabled->setIcon(icon::get("media-playback-start"));
+    ui.play->setIcon(icon::get("media-playback-start"));
+    ui.open->setIcon(icon::get("document-open"));
 
-    QMediaPlayer *player = new QMediaPlayer;
-    _audioAvailable = player->availability() == QMultimedia::Available;
-    delete player;
+    _audioAvailable = (QMediaPlayer().availability() == QMultimedia::Available);
 
     connect(ui.enabled, SIGNAL(toggled(bool)), SLOT(widgetChanged()));
     connect(ui.filename, SIGNAL(textChanged(const QString &)), SLOT(widgetChanged()));
 }
 
 
-QtMultimediaNotificationBackend::ConfigWidget::~ConfigWidget()
-{
-    if (audioPreview)
-        delete audioPreview;
-}
-
-
 void QtMultimediaNotificationBackend::ConfigWidget::widgetChanged()
 {
     if (! _audioAvailable) {
         ui.play->setEnabled(ui.enabled->isChecked());
         ui.open->setEnabled(false);
         ui.filename->setEnabled(false);
-        ui.filename->setText(QString());
+        ui.filename->setText({});
     }
     else {
         ui.play->setEnabled(ui.enabled->isChecked() && !ui.filename->text().isEmpty());
 
-        bool changed = (enabled != ui.enabled->isChecked() || filename != ui.filename->text());
+        bool changed = (_enabled != ui.enabled->isChecked() || _filename != ui.filename->text());
 
         if (changed != hasChanged())
             setChangedState(changed);
@@ -156,7 +136,7 @@ bool QtMultimediaNotificationBackend::ConfigWidget::hasDefaults() const
 void QtMultimediaNotificationBackend::ConfigWidget::defaults()
 {
     ui.enabled->setChecked(false);
-    ui.filename->setText(QString());
+    ui.filename->setText({});
     widgetChanged();
 }
 
@@ -164,11 +144,11 @@ void QtMultimediaNotificationBackend::ConfigWidget::defaults()
 void QtMultimediaNotificationBackend::ConfigWidget::load()
 {
     NotificationSettings s;
-    enabled = s.value("QtMultimedia/Enabled", false).toBool();
-    filename = s.value("QtMultimedia/AudioFile", QString()).toString();
+    _enabled = s.value("QtMultimedia/Enabled", false).toBool();
+    _filename = s.value("QtMultimedia/AudioFile", QString()).toString();
 
-    ui.enabled->setChecked(enabled);
-    ui.filename->setText(filename);
+    ui.enabled->setChecked(_enabled);
+    ui.filename->setText(_filename);
 
     setChangedState(false);
 }
@@ -198,12 +178,9 @@ void QtMultimediaNotificationBackend::ConfigWidget::on_play_clicked()
 {
     if (_audioAvailable) {
         if (!ui.filename->text().isEmpty()) {
-            if (audioPreview)
-                delete audioPreview;
-
-            audioPreview = new QMediaPlayer;
-            audioPreview->setMedia(QUrl::fromLocalFile(ui.filename->text()));
-            audioPreview->play();
+            _audioPreview = std::make_unique<QMediaPlayer>();
+            _audioPreview->setMedia(QUrl::fromLocalFile(ui.filename->text()));
+            _audioPreview->play();
         }
     }
     else