54c83417956015e694a8d274a2d1b7079e7cbcdc
[WebKit.git] / Source / WebKit2 / UIProcess / qt / QtViewInterface.h
1 /*
2  * Copyright (C) 2011 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 program 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 program; 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
21 #ifndef QtViewInterface_h
22 #define QtViewInterface_h
23
24 #include <QMenu>
25 #include <QtCore/QSharedPointer>
26 #include <QtCore/QSize>
27 #include <QtCore/QUrl>
28 #include <WebKit2/WKBase.h>
29
30 class QQuickWebPage;
31 class QQuickWebView;
32 class QtWebError;
33 class QWebDownloadItem;
34
35 QT_BEGIN_NAMESPACE
36 class QCursor;
37 class QGraphicsWidget;
38 class QImage;
39 class QJSEngine;
40 class QMimeData;
41 class QPoint;
42 class QRect;
43 class QWidget;
44 QT_END_NAMESPACE
45
46 namespace WebCore {
47 class ViewportArguments;
48 }
49
50 namespace WebKit {
51
52 class QtSGUpdateQueue;
53
54 class QtViewInterface {
55 public:
56     enum FileChooserType {
57         SingleFileSelection,
58         MultipleFilesSelection
59     };
60
61     QtViewInterface(QQuickWebView* viewportView, QQuickWebPage* pageView);
62
63     QtSGUpdateQueue* sceneGraphUpdateQueue() const;
64
65     virtual void setViewNeedsDisplay(const QRect&);
66
67     virtual QSize drawingAreaSize();
68     virtual void contentSizeChanged(const QSize&);
69     virtual void scrollPositionRequested(const QPoint& pos);
70
71     virtual bool isActive();
72     virtual bool hasFocus();
73     virtual bool isVisible();
74
75     virtual void startDrag(Qt::DropActions supportedDropActions, const QImage& dragImage, QMimeData*, QPoint* clientPosition, QPoint* globalPosition, Qt::DropAction*);
76     virtual void didChangeViewportProperties(const WebCore::ViewportArguments&);
77
78     virtual void didChangeUrl(const QUrl&);
79     virtual void didChangeTitle(const QString&);
80     virtual void didChangeToolTip(const QString&);
81     virtual void didChangeStatusText(const QString&);
82     virtual void didChangeCursor(const QCursor&);
83     virtual void loadDidBegin();
84     virtual void loadDidCommit();
85     virtual void loadDidSucceed();
86     virtual void loadDidFail(const QtWebError&);
87     virtual void didChangeLoadProgress(int);
88
89     virtual void showContextMenu(QSharedPointer<QMenu>);
90     virtual void hideContextMenu();
91
92     virtual void runJavaScriptAlert(const QString&);
93     virtual bool runJavaScriptConfirm(const QString&);
94     virtual QString runJavaScriptPrompt(const QString&, const QString& defaultValue, bool& ok);
95
96     virtual void processDidCrash();
97     virtual void didRelaunchProcess();
98
99     virtual QJSEngine* engine();
100
101     virtual void chooseFiles(WKOpenPanelResultListenerRef, const QStringList& selectedFileNames, FileChooserType);
102
103     virtual void didMouseMoveOverElement(const QUrl&, const QString&);
104
105     virtual void downloadRequested(QWebDownloadItem*);
106
107 private:
108     QQuickWebView* const m_viewportView;
109     QQuickWebPage* const m_pageView;
110
111     QSharedPointer<QMenu> activeMenu;
112     QUrl lastHoveredURL;
113     QString lastHoveredTitle;
114 };
115
116 }
117
118 #endif // QtViewInterface_h