1545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch/*
2545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
3545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch *
4545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * This library is free software; you can redistribute it and/or
5545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * modify it under the terms of the GNU Library General Public
6545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * License as published by the Free Software Foundation; either
7545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * version 2 of the License, or (at your option) any later version.
8545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch *
9545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * This library is distributed in the hope that it will be useful,
10545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of
11545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Library General Public License for more details.
13545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch *
14545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * You should have received a copy of the GNU Library General Public License
15545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * along with this library; see the file COPYING.LIB.  If not, write to
16545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch * Boston, MA 02110-1301, USA.
18545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch *
19545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch */
20545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
21545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#ifndef WebNotificationPresenter_h
22545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#define WebNotificationPresenter_h
23545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
24545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include "qwebkitplatformplugin.h"
25545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <QtGui>
26545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
27545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass WebNotificationWidget : public QWidget
28545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
29545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    Q_OBJECT
30545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic:
31545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    WebNotificationWidget();
32545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual ~WebNotificationWidget();
33545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
34545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    void showNotification(const QWebNotificationData*);
35545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    bool event(QEvent*);
36545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochQ_SIGNALS:
38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    void notificationClosed();
3968513a70bcd92384395513322f1b801e7bf9c729Steve Block    void notificationClicked();
40545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch};
41545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
42545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass WebNotificationPresenter : public QWebNotificationPresenter
43545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
44545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    Q_OBJECT
45545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic:
46545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    WebNotificationPresenter()
47545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        : QWebNotificationPresenter()
48545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    {
49545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        m_widget = new WebNotificationWidget();
50545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        connect(m_widget, SIGNAL(notificationClosed()), this, SIGNAL(notificationClosed()));
5168513a70bcd92384395513322f1b801e7bf9c729Steve Block        connect(m_widget, SIGNAL(notificationClicked()), this, SIGNAL(notificationClicked()));
52545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    }
53545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual ~WebNotificationPresenter() { m_widget->close(); delete m_widget; }
54545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
55545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    void showNotification(const QWebNotificationData* data) { m_widget->showNotification(data); }
56545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
57545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochprivate:
58545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    WebNotificationWidget* m_widget;
59545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch};
60545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
61545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#endif // WebNotificationsUi_h
62