X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fqtmultimedianotificationbackend.cpp;h=5754a3e7b0483cffc6763a6a8ed5c20ae5665eb0;hp=746c21cb0ca3f4e01c5af56f49ac936058ab8a3c;hb=518cd2bc478ab3675a60ec46d3ef183cace0cae7;hpb=680565f39c50f27cc339cb3e96bbd0abc6f47144 diff --git a/src/qtui/qtmultimedianotificationbackend.cpp b/src/qtui/qtmultimedianotificationbackend.cpp index 746c21cb..5754a3e7 100644 --- a/src/qtui/qtmultimedianotificationbackend.cpp +++ b/src/qtui/qtmultimedianotificationbackend.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,38 +18,31 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include "qtmultimedianotificationbackend.h" + +#include + #include -#include #include -#include "qtmultimedianotificationbackend.h" - #include "clientsettings.h" +#include "icon.h" #include "mainwin.h" #include "qtui.h" -QtMultimediaNotificationBackend::QtMultimediaNotificationBackend(QObject *parent) - : AbstractNotificationBackend(parent), - _media(0) +QtMultimediaNotificationBackend::QtMultimediaNotificationBackend(QObject* parent) + : AbstractNotificationBackend(parent) { NotificationSettings notificationSettings; - notificationSettings.notify("QtMultimedia/Enabled", this, SLOT(enabledChanged(const QVariant &))); - notificationSettings.notify("QtMultimedia/AudioFile", this, SLOT(audioFileChanged(const QVariant &))); + notificationSettings.notify("QtMultimedia/Enabled", this, &QtMultimediaNotificationBackend::enabledChanged); + notificationSettings.notify("QtMultimedia/AudioFile", this, &QtMultimediaNotificationBackend::audioFileChanged); createMediaObject(notificationSettings.value("QtMultimedia/AudioFile", QString()).toString()); _enabled = notificationSettings.value("QtMultimedia/Enabled", true).toBool(); } - -QtMultimediaNotificationBackend::~QtMultimediaNotificationBackend() -{ - if (_media) - delete _media; -} - - -void QtMultimediaNotificationBackend::notify(const Notification ¬ification) +void QtMultimediaNotificationBackend::notify(const Notification& notification) { if (_enabled && (notification.type == Highlight || notification.type == PrivMsg)) { if (_media && _media->availability() == QMultimedia::Available) { @@ -61,119 +54,95 @@ void QtMultimediaNotificationBackend::notify(const Notification ¬ification) } } - void QtMultimediaNotificationBackend::close(uint notificationId) { Q_UNUSED(notificationId); } - -void QtMultimediaNotificationBackend::enabledChanged(const QVariant &v) +void QtMultimediaNotificationBackend::enabledChanged(const QVariant& v) { _enabled = v.toBool(); } - -void QtMultimediaNotificationBackend::audioFileChanged(const QVariant &v) +void QtMultimediaNotificationBackend::audioFileChanged(const QVariant& v) { createMediaObject(v.toString()); } - -SettingsPage *QtMultimediaNotificationBackend::createConfigWidget() const +SettingsPage* QtMultimediaNotificationBackend::createConfigWidget() const { return new ConfigWidget(); } - -void QtMultimediaNotificationBackend::createMediaObject(const QString &file) +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(); _media->setMedia(QUrl::fromLocalFile(file)); } - /***************************************************************************/ -QtMultimediaNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) - : SettingsPage("Internal", "QtMultimediaNotification", parent), - audioPreview(0) +QtMultimediaNotificationBackend::ConfigWidget::ConfigWidget(QWidget* parent) + : 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())); + connect(ui.enabled, &QAbstractButton::toggled, this, &ConfigWidget::widgetChanged); + connect(ui.filename, &QLineEdit::textChanged, this, &ConfigWidget::widgetChanged); } - -QtMultimediaNotificationBackend::ConfigWidget::~ConfigWidget() -{ - if (audioPreview) - delete audioPreview; -} - - void QtMultimediaNotificationBackend::ConfigWidget::widgetChanged() { - if (! _audioAvailable) { + 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); } } - bool QtMultimediaNotificationBackend::ConfigWidget::hasDefaults() const { return true; } - void QtMultimediaNotificationBackend::ConfigWidget::defaults() { ui.enabled->setChecked(false); - ui.filename->setText(QString()); + ui.filename->setText({}); widgetChanged(); } - 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); } - void QtMultimediaNotificationBackend::ConfigWidget::save() { NotificationSettings s; @@ -182,7 +151,6 @@ void QtMultimediaNotificationBackend::ConfigWidget::save() load(); } - void QtMultimediaNotificationBackend::ConfigWidget::on_open_clicked() { QString file = QFileDialog::getOpenFileName(this, tr("Select Audio File")); @@ -193,17 +161,13 @@ void QtMultimediaNotificationBackend::ConfigWidget::on_open_clicked() } } - 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(); + _audioPreview->setMedia(QUrl::fromLocalFile(ui.filename->text())); + _audioPreview->play(); } } else