summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
diff options
context:
space:
mode:
authorKirill Burtsev <kirill.burtsev@qt.io>2019-03-20 18:04:50 +0100
committerKirill Burtsev <kirill.burtsev@qt.io>2019-04-05 08:20:49 +0000
commitd2fa5fd0f5b1972bd372510cc14509e85b972b23 (patch)
tree0f36120b208394729aff28de483369591f38ad4b /src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
parent320c7316b75be22112cb4802187c3873c9934eab (diff)
Notification API cleanup
Task-number: QTBUG-74543 Change-Id: Ice5a0dbfc3485c8b7e6fa900ef427a9aed871d42 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api/qwebenginenotificationpresenter.cpp')
-rw-r--r--src/webenginewidgets/api/qwebenginenotificationpresenter.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp b/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
index da97c4662..667605c37 100644
--- a/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
+++ b/src/webenginewidgets/api/qwebenginenotificationpresenter.cpp
@@ -39,6 +39,7 @@
#include "qwebenginenotificationpresenter_p.h"
+#include <QApplication>
#include <QSystemTrayIcon>
QT_BEGIN_NAMESPACE
@@ -55,50 +56,53 @@ DefaultNotificationPresenter::~DefaultNotificationPresenter()
{
}
-void DefaultNotificationPresenter::show(const QWebEngineNotification &notification)
+void DefaultNotificationPresenter::show(std::unique_ptr<QWebEngineNotification> notification)
{
- if (m_activeNotification.isValid()) {
- m_activeNotification.close();
- m_activeNotification.disconnect(this);
+ Q_ASSERT(notification);
+ if (m_activeNotification) {
+ m_activeNotification->close();
+ m_activeNotification->disconnect(this);
}
- m_activeNotification = notification;
+ m_activeNotification = std::move(notification);
#ifndef QT_NO_SYSTEMTRAYICON
- if (m_activeNotification.isValid() && m_systemTrayIcon) {
+ if (m_activeNotification && m_systemTrayIcon) {
+ m_systemTrayIcon->setIcon(qApp->windowIcon());
m_systemTrayIcon->show();
- QIcon icon = notification.icon();
- if (!icon.isNull())
- m_systemTrayIcon->showMessage(notification.title(), notification.message(), icon);
+ QImage notificationIconImage = m_activeNotification->icon();
+ m_notificationIcon = QIcon(QPixmap::fromImage(std::move(notificationIconImage), Qt::NoFormatConversion));
+ if (!m_notificationIcon.isNull())
+ m_systemTrayIcon->showMessage(m_activeNotification->title(), m_activeNotification->message(), m_notificationIcon);
else
- m_systemTrayIcon->showMessage(notification.title(), notification.message());
- notification.show();
- connect(&m_activeNotification, &QWebEngineNotification::closed, this, &DefaultNotificationPresenter::closeNotification);
+ m_systemTrayIcon->showMessage(m_activeNotification->title(), m_activeNotification->message());
+ m_activeNotification->show();
+ connect(m_activeNotification.get(), &QWebEngineNotification::closed, this, &DefaultNotificationPresenter::closeNotification);
}
#endif
}
void DefaultNotificationPresenter::messageClicked()
{
- if (m_activeNotification.isValid())
- m_activeNotification.click();
+ if (m_activeNotification)
+ m_activeNotification->click();
}
void DefaultNotificationPresenter::closeNotification()
{
#ifndef QT_NO_SYSTEMTRAYICON
const QWebEngineNotification *canceled = static_cast<const QWebEngineNotification *>(QObject::sender());
- if (m_systemTrayIcon && canceled->matches(m_activeNotification))
+ if (m_systemTrayIcon && canceled->matches(m_activeNotification.get()))
m_systemTrayIcon->hide();
#endif
}
-void defaultNotificationPresenter(const QWebEngineNotification &notification)
+void defaultNotificationPresenter(std::unique_ptr<QWebEngineNotification> notification)
{
static DefaultNotificationPresenter *presenter = nullptr;
if (!presenter)
presenter = new DefaultNotificationPresenter();
- presenter->show(notification);
+ presenter->show(std::move(notification));
}