Move WebKit into Source
[WebKit-https.git] / Source / WebKit / qt / examples / platformplugin / WebPlugin.h
1 /*
2  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public License
15  * along with this library; see the file COPYING.LIB.  If not, write to
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  *
19  */
20 #ifndef WEBPLUGIN_H
21 #define WEBPLUGIN_H
22
23 #include "qwebkitplatformplugin.h"
24 #include "WebNotificationPresenter.h"
25
26 #include <QDialog>
27
28 class QListWidgetItem;
29 class QListWidget;
30
31 class Popup : public QDialog {
32     Q_OBJECT
33 public:
34     Popup(const QWebSelectData& data) : m_data(data) { setModal(true); }
35
36 signals:
37     void itemClicked(int idx);
38
39 protected slots:
40     void onItemSelected(QListWidgetItem* item);
41
42 protected:
43     void populateList();
44
45     const QWebSelectData& m_data;
46     QListWidget* m_list;
47 };
48
49
50 class SingleSelectionPopup : public Popup {
51     Q_OBJECT
52 public:
53     SingleSelectionPopup(const QWebSelectData& data);
54 };
55
56
57 class MultipleSelectionPopup : public Popup {
58     Q_OBJECT
59 public:
60     MultipleSelectionPopup(const QWebSelectData& data);
61 };
62
63
64 class WebPopup : public QWebSelectMethod {
65     Q_OBJECT
66 public:
67     WebPopup();
68     ~WebPopup();
69
70     virtual void show(const QWebSelectData& data);
71     virtual void hide();
72
73 private slots:
74     void popupClosed();
75     void itemClicked(int idx);
76
77 private:
78     Popup* m_popup;
79
80     Popup* createPopup(const QWebSelectData& data);
81     Popup* createSingleSelectionPopup(const QWebSelectData& data);
82     Popup* createMultipleSelectionPopup(const QWebSelectData& data);
83 };
84
85 class TouchModifier : public QWebTouchModifier
86 {
87     Q_OBJECT
88 public:
89     unsigned hitTestPaddingForTouch(const PaddingDirection direction) const {
90         // Use 10 as padding in each direction but Up.
91         if (direction == QWebTouchModifier::Up)
92             return 15;
93         return 10;
94     }
95 };
96
97 class WebPlugin : public QObject, public QWebKitPlatformPlugin
98 {
99     Q_OBJECT
100     Q_INTERFACES(QWebKitPlatformPlugin)
101 public:
102     virtual bool supportsExtension(Extension extension) const;
103     virtual QObject* createExtension(Extension extension) const;
104 };
105
106 #endif // WEBPLUGIN_H