2bb04db0109614be9b9289e70bc32265e858392c
[WebKit-https.git] / WebKit / qt / Api / qwebview.h
1 /*
2     Copyright (C) 2007 Trolltech ASA
3     Copyright (C) 2007 Staikos Computing Services Inc.
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20 #ifndef QWEBVIEW_H
21 #define QWEBVIEW_H
22
23 #include "qwebkitglobal.h"
24 #include "qwebpage.h"
25 #include <QtGui/qwidget.h>
26
27 class QWebPage;
28 class QWebViewPrivate;
29 class QNetworkRequest;
30 class QWebNetworkRequest;
31
32 class QWEBKIT_EXPORT QWebView : public QWidget
33 {
34     Q_OBJECT
35     Q_PROPERTY(QString title READ title)
36     Q_PROPERTY(QUrl url READ url)
37     Q_PROPERTY(QPixmap icon READ icon)
38     Q_PROPERTY(QString selectedText READ selectedText)
39     Q_PROPERTY(bool modified READ isModified)
40     Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags)
41 public:
42     explicit QWebView(QWidget *parent = 0);
43     virtual ~QWebView();
44
45     QWebPage *page() const;
46     void setPage(QWebPage *page);
47
48     void load(const QUrl &url);
49 #if QT_VERSION < 0x040400
50     void load(const QWebNetworkRequest &request);
51 #else
52     void load(const QNetworkRequest &request);
53 #endif
54     void setHtml(const QString &html, const QUrl &baseUrl = QUrl());
55     void setHtml(const QByteArray &html, const QUrl &baseUrl = QUrl());
56     void setContent(const QByteArray &data, const QString &mimeType = QString(), const QUrl &baseUrl = QUrl());
57
58     QWebPageHistory *history() const;
59     QWebSettings *settings() const;
60
61     QString title() const;
62     QUrl url() const;
63     QPixmap icon() const;
64
65     QString selectedText() const;
66
67     QAction *action(QWebPage::WebAction action) const;
68     void triggerAction(QWebPage::WebAction action, bool checked = false);
69
70     bool isModified() const;
71
72     Qt::TextInteractionFlags textInteractionFlags() const;
73     void setTextInteractionFlags(Qt::TextInteractionFlags flags);
74
75     /* #### QTextBrowser compatibility?
76     bool openLinks() const;
77     void setOpenLinks(bool open);
78
79     bool openExternalLinks() const;
80     void setOpenExternalLinks(bool open);
81     */
82
83     QSize sizeHint() const;
84 public Q_SLOTS:
85     void stop();
86     void backward();
87     void forward();
88     void reload();
89
90 Q_SIGNALS:
91     void loadStarted();
92     void loadProgressChanged(int progress);
93     void loadFinished();
94     void titleChanged(const QString& title);
95     void statusBarTextChanged(const QString& text);
96     void linkClicked(const QUrl &url);
97     void selectionChanged();
98     void iconLoaded();
99
100 protected:
101     void resizeEvent(QResizeEvent *e);
102     void paintEvent(QPaintEvent *ev);
103
104     virtual void mouseMoveEvent(QMouseEvent*);
105     virtual void mousePressEvent(QMouseEvent*);
106     virtual void mouseDoubleClickEvent(QMouseEvent*);
107     virtual void mouseReleaseEvent(QMouseEvent*);
108     virtual void contextMenuEvent(QContextMenuEvent*);
109     virtual void wheelEvent(QWheelEvent*);
110     virtual void keyPressEvent(QKeyEvent*);
111     virtual void keyReleaseEvent(QKeyEvent*);
112     virtual void dragEnterEvent(QDragEnterEvent *);
113     virtual void dragLeaveEvent(QDragLeaveEvent *);
114     virtual void dragMoveEvent(QDragMoveEvent *);
115     virtual void dropEvent(QDropEvent *);
116     virtual void focusInEvent(QFocusEvent*);
117     virtual void focusOutEvent(QFocusEvent*);
118
119     virtual bool focusNextPrevChild(bool next);
120
121 private:
122     QWebViewPrivate *d;
123 };
124
125 #endif // QWEBVIEW_H