From: Manuel Nickschas Date: Mon, 13 Jun 2016 20:24:40 +0000 (+0200) Subject: C++11ify QtMultimedia notification backend X-Git-Tag: travis-deploy-test~482 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=60d19a8ddad9f989f4fa03ba66c47e3d7bb66df1;hp=680565f39c50f27cc339cb3e96bbd0abc6f47144 C++11ify QtMultimedia notification backend Use smart pointers, override. --- diff --git a/src/qtui/qtmultimedianotificationbackend.cpp b/src/qtui/qtmultimedianotificationbackend.cpp index 746c21cb..72e76c53 100644 --- a/src/qtui/qtmultimedianotificationbackend.cpp +++ b/src/qtui/qtmultimedianotificationbackend.cpp @@ -29,8 +29,7 @@ #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 +41,6 @@ QtMultimediaNotificationBackend::QtMultimediaNotificationBackend(QObject *parent } -QtMultimediaNotificationBackend::~QtMultimediaNotificationBackend() -{ - if (_media) - delete _media; -} - - void QtMultimediaNotificationBackend::notify(const Notification ¬ification) { if (_enabled && (notification.type == Highlight || notification.type == PrivMsg)) { @@ -88,15 +80,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.reset(new QMediaPlayer); _media->setMedia(QUrl::fromLocalFile(file)); } @@ -104,42 +93,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")); - 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 +135,7 @@ bool QtMultimediaNotificationBackend::ConfigWidget::hasDefaults() const void QtMultimediaNotificationBackend::ConfigWidget::defaults() { ui.enabled->setChecked(false); - ui.filename->setText(QString()); + ui.filename->setText({}); widgetChanged(); } @@ -164,11 +143,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 +177,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.reset(new QMediaPlayer); + _audioPreview->setMedia(QUrl::fromLocalFile(ui.filename->text())); + _audioPreview->play(); } } else diff --git a/src/qtui/qtmultimedianotificationbackend.h b/src/qtui/qtmultimedianotificationbackend.h index aa028bd4..6117b31d 100644 --- a/src/qtui/qtmultimedianotificationbackend.h +++ b/src/qtui/qtmultimedianotificationbackend.h @@ -21,6 +21,8 @@ #ifndef PHONONNOTIFICATIONBACKEND_H_ #define PHONONNOTIFICATIONBACKEND_H_ +#include + #include #include "abstractnotificationbackend.h" @@ -34,11 +36,10 @@ class QtMultimediaNotificationBackend : public AbstractNotificationBackend public: QtMultimediaNotificationBackend(QObject *parent = 0); - ~QtMultimediaNotificationBackend(); - void notify(const Notification &); - void close(uint notificationId); - virtual SettingsPage *createConfigWidget() const; + void notify(const Notification &) override; + void close(uint notificationId) override; + virtual SettingsPage *createConfigWidget() const override; private slots: void enabledChanged(const QVariant &); @@ -49,7 +50,7 @@ private: class ConfigWidget; bool _enabled; - QMediaPlayer *_media; + std::unique_ptr _media; }; @@ -59,12 +60,11 @@ class QtMultimediaNotificationBackend::ConfigWidget : public SettingsPage public: ConfigWidget(QWidget *parent = 0); - ~ConfigWidget(); - void save(); - void load(); - bool hasDefaults() const; - void defaults(); + void save() override; + void load() override; + bool hasDefaults() const override; + void defaults() override; private slots: void widgetChanged(); @@ -74,10 +74,10 @@ private slots: private: Ui::QtMultimediaNotificationConfigWidget ui; - bool enabled; + bool _enabled; bool _audioAvailable; - QString filename; - QMediaPlayer *audioPreview; + QString _filename; + std::unique_ptr _audioPreview; };