diff options
-rw-r--r-- | examples/quick/quicknanobrowser/quickwindow.qml | 60 | ||||
-rw-r--r-- | lib/quick/qquickwebengineview.cpp | 14 | ||||
-rw-r--r-- | lib/quick/qquickwebengineview_p.h | 3 | ||||
-rw-r--r-- | lib/quick/qquickwebengineview_p_p.h | 2 | ||||
-rw-r--r-- | lib/web_contents_adapter_client.h | 1 | ||||
-rw-r--r-- | lib/web_contents_delegate_qt.cpp | 5 | ||||
-rw-r--r-- | lib/web_contents_delegate_qt.h | 1 | ||||
-rw-r--r-- | lib/widgets/Api/qwebenginepage.cpp | 6 | ||||
-rw-r--r-- | lib/widgets/Api/qwebenginepage_p.h | 1 | ||||
-rw-r--r-- | lib/widgets/Api/qwebengineview.cpp | 1 |
10 files changed, 68 insertions, 26 deletions
diff --git a/examples/quick/quicknanobrowser/quickwindow.qml b/examples/quick/quicknanobrowser/quickwindow.qml index 7ec4fc021..a3b8c405d 100644 --- a/examples/quick/quicknanobrowser/quickwindow.qml +++ b/examples/quick/quicknanobrowser/quickwindow.qml @@ -62,36 +62,43 @@ ApplicationWindow { toolBar: ToolBar { id: navigationBar - RowLayout { + ColumnLayout { anchors.fill: parent + RowLayout { + ToolButton { + id: backButton + iconSource: "icons/go-previous.png" + onClicked: webEngineView.goBack() + enabled: webEngineView.canGoBack + } + ToolButton { + id: forwardButton + iconSource: "icons/go-next.png" + onClicked: webEngineView.goForward() + enabled: webEngineView.canGoForward + } + ToolButton { + id: reloadButton + iconSource: webEngineView.loading ? "icons/process-stop.png" : "icons/view-refresh.png" + onClicked: webEngineView.reload() + } + Image { + id: faviconImage + width: 16; height: 16 + } + TextField { + id: addressBar + focus: true + Layout.fillWidth: true - ToolButton { - id: backButton - iconSource: "icons/go-previous.png" - onClicked: webEngineView.goBack() - enabled: webEngineView.canGoBack + onAccepted: webEngineView.url = utils.fromUserInput(text) + } } - ToolButton { - id: forwardButton - iconSource: "icons/go-next.png" - onClicked: webEngineView.goForward() - enabled: webEngineView.canGoForward - } - ToolButton { - id: reloadButton - iconSource: webEngineView.loading ? "icons/process-stop.png" : "icons/view-refresh.png" - onClicked: webEngineView.reload() - } - Image { - id: faviconImage - width: 16; height: 16 - } - TextField { - id: addressBar - focus: true + ProgressBar { Layout.fillWidth: true - - onAccepted: webEngineView.url = utils.fromUserInput(text) + id: progressBar + minimumValue: 0 + maximumValue: 100 } } } @@ -104,5 +111,6 @@ ApplicationWindow { onUrlChanged: addressBar.text = url onIconChanged: faviconImage.source = url + onLoadProgressChanged: progressBar.value = loadProgress } } diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp index aa942c017..55d871093 100644 --- a/lib/quick/qquickwebengineview.cpp +++ b/lib/quick/qquickwebengineview.cpp @@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() : adapter(new WebContentsAdapter) + , loadProgress(0) { adapter->initialize(this); } @@ -87,6 +88,13 @@ void QQuickWebEngineViewPrivate::loadingStateChanged() Q_EMIT q->loadingStateChanged(); } +void QQuickWebEngineViewPrivate::loadProgressChanged(int progress) +{ + Q_Q(QQuickWebEngineView); + loadProgress = progress; + Q_EMIT q->loadProgressChanged(); +} + QRectF QQuickWebEngineViewPrivate::viewportRect() const { Q_Q(const QQuickWebEngineView); @@ -170,6 +178,12 @@ bool QQuickWebEngineView::isLoading() const return d->adapter->isLoading(); } +int QQuickWebEngineView::loadProgress() const +{ + Q_D(const QQuickWebEngineView); + return d->loadProgress; +} + QString QQuickWebEngineView::title() const { Q_D(const QQuickWebEngineView); diff --git a/lib/quick/qquickwebengineview_p.h b/lib/quick/qquickwebengineview_p.h index 1c3e27732..87e7403d6 100644 --- a/lib/quick/qquickwebengineview_p.h +++ b/lib/quick/qquickwebengineview_p.h @@ -53,6 +53,7 @@ class QQuickWebEngineView : public QQuickItem { Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged) Q_PROPERTY(QUrl icon READ icon NOTIFY iconChanged) Q_PROPERTY(bool loading READ isLoading NOTIFY loadingStateChanged) + Q_PROPERTY(int loadProgress READ loadProgress NOTIFY loadProgressChanged) Q_PROPERTY(QString title READ title NOTIFY titleChanged) Q_PROPERTY(bool canGoBack READ canGoBack NOTIFY loadingStateChanged) Q_PROPERTY(bool canGoForward READ canGoForward NOTIFY loadingStateChanged) @@ -65,6 +66,7 @@ public: void setUrl(const QUrl&); QUrl icon() const; bool isLoading() const; + int loadProgress() const; QString title() const; bool canGoBack() const; bool canGoForward() const; @@ -80,6 +82,7 @@ Q_SIGNALS: void urlChanged(); void iconChanged(); void loadingStateChanged(); + void loadProgressChanged(); protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry); diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h index 38621b44d..947886c44 100644 --- a/lib/quick/qquickwebengineview_p_p.h +++ b/lib/quick/qquickwebengineview_p_p.h @@ -63,6 +63,7 @@ public: virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE; virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE; virtual void loadingStateChanged() Q_DECL_OVERRIDE; + virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE; virtual QRectF viewportRect() const Q_DECL_OVERRIDE; virtual void loadFinished(bool success) Q_DECL_OVERRIDE; virtual void focusContainer() Q_DECL_OVERRIDE; @@ -70,6 +71,7 @@ public: QExplicitlySharedDataPointer<WebContentsAdapter> adapter; QUrl icon; + int loadProgress; }; QT_END_NAMESPACE diff --git a/lib/web_contents_adapter_client.h b/lib/web_contents_adapter_client.h index ea6e5a666..39968a8a5 100644 --- a/lib/web_contents_adapter_client.h +++ b/lib/web_contents_adapter_client.h @@ -82,6 +82,7 @@ public: virtual void urlChanged(const QUrl&) = 0; virtual void iconChanged(const QUrl&) = 0; virtual void loadingStateChanged() = 0; + virtual void loadProgressChanged(int progress) = 0; virtual QRectF viewportRect() const = 0; virtual void loadFinished(bool success) = 0; virtual void focusContainer() = 0; diff --git a/lib/web_contents_delegate_qt.cpp b/lib/web_contents_delegate_qt.cpp index 12a00481c..877d1cafc 100644 --- a/lib/web_contents_delegate_qt.cpp +++ b/lib/web_contents_delegate_qt.cpp @@ -86,6 +86,11 @@ void WebContentsDelegateQt::LoadingStateChanged(content::WebContents* source) m_viewClient->loadingStateChanged(); } +void WebContentsDelegateQt::LoadProgressChanged(content::WebContents* source, double progress) +{ + m_viewClient->loadProgressChanged(qRound(progress * 100)); +} + void WebContentsDelegateQt::DidFailLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, int error_code, const string16 &error_description, content::RenderViewHost *render_view_host) { if (is_main_frame) diff --git a/lib/web_contents_delegate_qt.h b/lib/web_contents_delegate_qt.h index 629fd5c6c..b9720eac2 100644 --- a/lib/web_contents_delegate_qt.h +++ b/lib/web_contents_delegate_qt.h @@ -62,6 +62,7 @@ public: virtual void NavigationStateChanged(const content::WebContents* source, unsigned changed_flags); virtual void AddNewContents(content::WebContents* source, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked); virtual void LoadingStateChanged(content::WebContents* source); + virtual void LoadProgressChanged(content::WebContents* source, double progress); virtual void DidFailLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, int error_code, const string16 &error_description, content::RenderViewHost *render_view_host); virtual void DidFinishLoad(int64 frame_id, const GURL &validated_url, bool is_main_frame, content::RenderViewHost *render_view_host); virtual void DidUpdateFaviconURL(int32 page_id, const std::vector<content::FaviconURL>& candidates); diff --git a/lib/widgets/Api/qwebenginepage.cpp b/lib/widgets/Api/qwebenginepage.cpp index ab3b1e675..8fafb3c47 100644 --- a/lib/widgets/Api/qwebenginepage.cpp +++ b/lib/widgets/Api/qwebenginepage.cpp @@ -86,6 +86,12 @@ void QWebEnginePagePrivate::loadingStateChanged() updateNavigationActions(); } +void QWebEnginePagePrivate::loadProgressChanged(int progress) +{ + Q_Q(QWebEnginePage); + Q_EMIT q->loadProgress(progress); +} + QRectF QWebEnginePagePrivate::viewportRect() const { return view ? view->geometry() : QRectF(); diff --git a/lib/widgets/Api/qwebenginepage_p.h b/lib/widgets/Api/qwebenginepage_p.h index ad1de0047..e8f511d2d 100644 --- a/lib/widgets/Api/qwebenginepage_p.h +++ b/lib/widgets/Api/qwebenginepage_p.h @@ -69,6 +69,7 @@ public: virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE; virtual void iconChanged(const QUrl&) Q_DECL_OVERRIDE; virtual void loadingStateChanged() Q_DECL_OVERRIDE; + virtual void loadProgressChanged(int progress) Q_DECL_OVERRIDE; virtual QRectF viewportRect() const Q_DECL_OVERRIDE; virtual void loadFinished(bool success) Q_DECL_OVERRIDE; virtual void focusContainer() Q_DECL_OVERRIDE; diff --git a/lib/widgets/Api/qwebengineview.cpp b/lib/widgets/Api/qwebengineview.cpp index a1b4fbc27..d07e710ab 100644 --- a/lib/widgets/Api/qwebengineview.cpp +++ b/lib/widgets/Api/qwebengineview.cpp @@ -75,6 +75,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page) QObject::connect(page, &QWebEnginePage::titleChanged, view, &QWebEngineView::titleChanged); QObject::connect(page, &QWebEnginePage::urlChanged, view, &QWebEngineView::urlChanged); QObject::connect(page, &QWebEnginePage::loadStarted, view, &QWebEngineView::loadStarted); + QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress); QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished); } } |