From a99922affdc7953f092dcfcf34ea741567a5bddc Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 28 Jul 2014 16:35:16 +0200 Subject: Add api to get the favicon URL Adds one of the missing pieces of the QWebFrame and QWebView APIs. Unlike the QtWebKit version this only fetches the favicon URL, and not the icon. This is because we do not want to implement an icon database, and that the icon would be loaded asynchronous anyway, bringing no guarantee to be a valid icon/image yet. Change-Id: I227311ae3676044da850e687b82bee752b5079c8 Reviewed-by: Jocelyn Turcotte --- src/webenginewidgets/api/qwebenginepage.cpp | 9 ++++++++- src/webenginewidgets/api/qwebenginepage.h | 4 ++++ src/webenginewidgets/api/qwebengineview.cpp | 6 ++++++ src/webenginewidgets/api/qwebengineview.h | 3 +++ src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc | 17 +++++++++++++++++ src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc | 15 +++++++++++++++ 6 files changed, 53 insertions(+), 1 deletion(-) (limited to 'src/webenginewidgets') diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 8e87c1cf7..212fd696e 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -196,7 +196,8 @@ void QWebEnginePagePrivate::urlChanged(const QUrl &url) void QWebEnginePagePrivate::iconChanged(const QUrl &url) { - Q_UNUSED(url) + Q_Q(QWebEnginePage); + Q_EMIT q->iconUrlChanged(url); } void QWebEnginePagePrivate::loadProgressChanged(int progress) @@ -802,6 +803,12 @@ QUrl QWebEnginePage::requestedUrl() const return d->adapter->requestedUrl(); } +QUrl QWebEnginePage::iconUrl() const +{ + Q_D(const QWebEnginePage); + return d->adapter->iconUrl(); +} + qreal QWebEnginePage::zoomFactor() const { Q_D(const QWebEnginePage); diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index 6d8d2ddd8..bd1e5c7a9 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -77,6 +77,7 @@ class QWEBENGINEWIDGETS_EXPORT QWebEnginePage : public QObject { Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) Q_PROPERTY(QString title READ title) Q_PROPERTY(QUrl url READ url WRITE setUrl) + Q_PROPERTY(QUrl iconUrl READ iconUrl) public: enum WebAction { @@ -171,6 +172,7 @@ public: void setUrl(const QUrl &url); QUrl url() const; QUrl requestedUrl() const; + QUrl iconUrl() const; qreal zoomFactor() const; void setZoomFactor(qreal factor); @@ -197,6 +199,8 @@ Q_SIGNALS: // Ex-QWebFrame signals void titleChanged(const QString &title); void urlChanged(const QUrl &url); + // Was iconChanged() in QWebFrame + void iconUrlChanged(const QUrl &url); protected: virtual QWebEnginePage *createWindow(WebWindowType type); diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index b11af3e7a..03bb474bb 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -82,6 +82,7 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page) if (view && page) { QObject::connect(page, &QWebEnginePage::titleChanged, view, &QWebEngineView::titleChanged); QObject::connect(page, &QWebEnginePage::urlChanged, view, &QWebEngineView::urlChanged); + QObject::connect(page, &QWebEnginePage::iconUrlChanged, view, &QWebEngineView::iconUrlChanged); QObject::connect(page, &QWebEnginePage::loadStarted, view, &QWebEngineView::loadStarted); QObject::connect(page, &QWebEnginePage::loadProgress, view, &QWebEngineView::loadProgress); QObject::connect(page, &QWebEnginePage::loadFinished, view, &QWebEngineView::loadFinished); @@ -168,6 +169,11 @@ QUrl QWebEngineView::url() const return page()->url(); } +QUrl QWebEngineView::iconUrl() const +{ + return page()->iconUrl(); +} + bool QWebEngineView::hasSelection() const { return page()->hasSelection(); diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h index 02f599d45..c3ebfba07 100644 --- a/src/webenginewidgets/api/qwebengineview.h +++ b/src/webenginewidgets/api/qwebengineview.h @@ -39,6 +39,7 @@ class QWEBENGINEWIDGETS_EXPORT QWebEngineView : public QWidget { Q_OBJECT Q_PROPERTY(QString title READ title) Q_PROPERTY(QUrl url READ url WRITE setUrl) + Q_PROPERTY(QUrl iconUrl READ iconUrl) Q_PROPERTY(QString selectedText READ selectedText) Q_PROPERTY(bool hasSelection READ hasSelection) Q_PROPERTY(qreal zoomFactor READ zoomFactor WRITE setZoomFactor) @@ -59,6 +60,7 @@ public: QString title() const; void setUrl(const QUrl &url); QUrl url() const; + QUrl iconUrl() const; bool hasSelection() const; QString selectedText() const; @@ -88,6 +90,7 @@ Q_SIGNALS: void titleChanged(const QString& title); void selectionChanged(); void urlChanged(const QUrl&); + void iconUrlChanged(const QUrl&); protected: virtual QWebEngineView *createWindow(QWebEnginePage::WebWindowType type); diff --git a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc index 20564d724..41dd0a31b 100644 --- a/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebenginepage_lgpl.qdoc @@ -424,6 +424,13 @@ \sa urlChanged() */ +/*! + \property QWebEnginePage::iconUrl + \brief the url of the icon associated with the frame currently viewed. + + \sa iconUrlChanged() +*/ + /*! \property QWebEnginePage::requestedUrl @@ -544,3 +551,13 @@ \sa url() */ + +/*! + \fn void QWebEnginePage::iconUrlChanged(const QUrl &url) + + This signal is emitted when the icon ("favicon") associated with the main frame is + found or changed. The new URL is specified by \a url. + + + \sa iconUrl() +*/ diff --git a/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc index bdfd4b20a..5c42d252b 100644 --- a/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc +++ b/src/webenginewidgets/doc/src/qwebengineview_lgpl.qdoc @@ -192,6 +192,13 @@ \sa load(), urlChanged() */ +/*! + \property QWebEngineView::iconUrl + \brief the url of the icon associated with the web page currently viewed + + \sa iconUrlChanged() +*/ + /*! \property QWebEngineView::hasSelection \brief whether this page contains selected content or not. @@ -314,6 +321,14 @@ \sa url(), load() */ +/*! + \fn void QWebEngineView::iconUrlChanged(const QUrl &url) + + This signal is emitted whenever the icon \a url of the view changes. + + \sa iconUrl() +*/ + /*! \fn void QWebEngineView::loadStarted() -- cgit v1.2.3