15af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke/*
25af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
35af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *
45af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * This library is free software; you can redistribute it and/or
55af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * modify it under the terms of the GNU Library General Public
65af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * License as published by the Free Software Foundation; either
75af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * version 2 of the License, or (at your option) any later version.
85af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *
95af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * This library is distributed in the hope that it will be useful,
105af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * but WITHOUT ANY WARRANTY; without even the implied warranty of
115af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
125af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Library General Public License for more details.
135af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *
145af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * You should have received a copy of the GNU Library General Public License
155af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * along with this library; see the file COPYING.LIB.  If not, write to
165af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
175af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Boston, MA 02110-1301, USA.
185af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *
195af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke */
205af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
215af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#ifndef QWEBKITPLATFORMPLUGIN_H
225af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#define QWEBKITPLATFORMPLUGIN_H
235af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
245af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke/*
255af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *  Warning: The contents of this file is not  part of the public QtWebKit API
265af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke *  and may be changed from version to version or even be completely removed.
275af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke*/
285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
292bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <QColor>
305af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#include <QObject>
3168513a70bcd92384395513322f1b801e7bf9c729Steve Block#include <QUrl>
322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if defined(WTF_USE_QT_MULTIMEDIA) && WTF_USE_QT_MULTIMEDIA
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <QMediaPlayer>
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
355af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
365af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeclass QWebSelectData
375af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{
385af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkepublic:
3906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual ~QWebSelectData() {}
405af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
415af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    enum ItemType { Option, Group, Separator };
425af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
435af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual ItemType itemType(int) const = 0;
445af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual QString itemText(int index) const = 0;
455af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual QString itemToolTip(int index) const = 0;
465af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual bool itemIsEnabled(int index) const = 0;
475af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual bool itemIsSelected(int index) const = 0;
485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual int itemCount() const = 0;
495af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual bool multiple() const = 0;
502bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual QColor backgroundColor() const = 0;
512bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual QColor foregroundColor() const = 0;
522bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual QColor itemBackgroundColor(int index) const = 0;
532bde8e466a4451c7319e3a072d118917957d6554Steve Block    virtual QColor itemForegroundColor(int index) const = 0;
545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke};
555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeclass QWebSelectMethod : public QObject
575af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{
585af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    Q_OBJECT
595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkepublic:
6006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual ~QWebSelectMethod() {}
615af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
625af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual void show(const QWebSelectData&) = 0;
635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual void hide() = 0;
645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
655af96e2c7b73ebc627c6894727826a7576d31758Leon ClarkeQ_SIGNALS:
665af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    void selectItem(int index, bool allowMultiplySelections, bool shift);
675af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    void didHide();
685af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke};
695af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
70545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass QWebNotificationData
71545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
72545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic:
7306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual ~QWebNotificationData() {}
7406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
75545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual const QString title() const = 0;
76545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual const QString message() const = 0;
77545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual const QByteArray iconData() const = 0;
7868513a70bcd92384395513322f1b801e7bf9c729Steve Block    virtual const QUrl openerPageUrl() const = 0;
79545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch};
80545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
81545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochclass QWebNotificationPresenter : public QObject
82545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
83545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    Q_OBJECT
84545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochpublic:
85545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    QWebNotificationPresenter() {}
86545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual ~QWebNotificationPresenter() {}
87545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual void showNotification(const QWebNotificationData*) = 0;
89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben MurdochQ_SIGNALS:
91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    void notificationClosed();
9268513a70bcd92384395513322f1b801e7bf9c729Steve Block    void notificationClicked();
93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch};
94545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
95cad810f21b803229eb11403f9209855525a25d57Steve Blockclass QWebHapticFeedbackPlayer: public QObject
96dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{
97cad810f21b803229eb11403f9209855525a25d57Steve Block    Q_OBJECT
98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochpublic:
99cad810f21b803229eb11403f9209855525a25d57Steve Block    QWebHapticFeedbackPlayer() {}
100cad810f21b803229eb11403f9209855525a25d57Steve Block    virtual ~QWebHapticFeedbackPlayer() {}
101cad810f21b803229eb11403f9209855525a25d57Steve Block
102dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    enum HapticStrength {
103dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        None, Weak, Medium, Strong
104dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    };
105dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
106dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    enum HapticEvent {
107dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        Press, Release
108dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    };
109dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
110dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual void playHapticFeedback(const HapticEvent, const QString& hapticType, const HapticStrength) = 0;
111dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch};
112dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
11328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuclass QWebTouchModifier : public QObject
11428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu{
11528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    Q_OBJECT
11628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhupublic:
11728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    virtual ~QWebTouchModifier() {}
11828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu
11928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    enum PaddingDirection {
12028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        Up, Right, Down, Left
12128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    };
12228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu
12328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu    virtual unsigned hitTestPaddingForTouch(const PaddingDirection) const = 0;
12428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu};
12528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu
1262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if defined(WTF_USE_QT_MULTIMEDIA) && WTF_USE_QT_MULTIMEDIA
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass QWebFullScreenVideoHandler : public QObject {
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Q_OBJECT
12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic:
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    QWebFullScreenVideoHandler() {}
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual ~QWebFullScreenVideoHandler() {}
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual bool requiresFullScreenForVideoPlayback() const = 0;
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQ_SIGNALS:
13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    void fullScreenClosed();
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic Q_SLOTS:
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void enterFullScreen(QMediaPlayer*) = 0;
13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    virtual void exitFullScreen() = 0;
14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1435af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkeclass QWebKitPlatformPlugin
1445af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{
1455af96e2c7b73ebc627c6894727826a7576d31758Leon Clarkepublic:
146545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    virtual ~QWebKitPlatformPlugin() {}
1475af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
1485af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    enum Extension {
149545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        MultipleSelections,
150dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        Notifications,
15128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu        Haptics,
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        TouchInteraction,
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        FullScreenVideoPlayer
1545af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    };
1555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
1565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke    virtual bool supportsExtension(Extension extension) const = 0;
157bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    virtual QObject* createExtension(Extension extension) const = 0;
1585af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke};
1595af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
160cad810f21b803229eb11403f9209855525a25d57Steve BlockQT_BEGIN_NAMESPACE
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochQ_DECLARE_INTERFACE(QWebKitPlatformPlugin, "com.nokia.Qt.WebKit.PlatformPlugin/1.7");
162cad810f21b803229eb11403f9209855525a25d57Steve BlockQT_END_NAMESPACE
1635af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
1645af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke#endif // QWEBKITPLATFORMPLUGIN_H
165