diff options
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp new file mode 100644 index 0000000000..5a66cc6c19 --- /dev/null +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp @@ -0,0 +1,187 @@ +/* + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "config.h" +#include "qwebinspector.h" + +#include "Element.h" +#include "InspectorController.h" +#include "qwebelement.h" +#include "qwebinspector_p.h" +#include "qwebpage_p.h" + +#include <QResizeEvent> + +// TODO: handle the "Always enable" commands with QWebSettings + +/*! + \class QWebInspector + \since 4.6 + \brief The QWebInspector class allows the placement and control of a + QWebPage's inspector. + The inspector allows you to see a page current hierarchy and loading + statistics. + + The QWebPage to be inspected is determined with the setPage() method. + + A typical use of QWebInspector follows: + + \snippet webkitsnippets/qtwebkit_qwebinspector_snippet.cpp 0 + + Most of the resources needed by the inspector are owned by the associated + QWebPage and are allocated the first time that: + \list + \o an element is inspected + \o the QWebInspector is shown. + \endlist + + This class acts mostly as a container and a controller for the inspector. + You can defer the creation and association of the QWebInspector until + the first emission of QWebPage::webInspectorTriggered() to save additional + resources. + + \note A QWebInspector will display a blank widget if either: + \list + \o page() is null + \o QWebSettings::DeveloperExtrasEnabled is false + \endlist + + \sa QWebPage::webInspectorTriggered() +*/ + +/*! + Constructs an empty QWebInspector with parent \a parent. +*/ +QWebInspector::QWebInspector(QWidget* parent) + : QWidget(parent) + , d(new QWebInspectorPrivate(this)) +{ +} + +/*! + Destroys the inspector. +*/ +QWebInspector::~QWebInspector() +{ + // Remove association principally to prevent deleting a child frontend + setPage(0); +} + +/*! + Sets the QWebPage to be inspected. + + There can only be one QWebInspector associated with a QWebPage + and vices versa. + + Calling with \a page as null will break the current association, if any. + + If \a page is already associated to another QWebInspector, the association + will be replaced and the previous QWebInspector will have no page + associated. + + \sa page() +*/ +void QWebInspector::setPage(QWebPage* page) +{ + if (d->page) { + // Break currentPage-->this + d->page->d->setInspector(0); + } + if (page && page->d->inspector && page->d->inspector != this) { + // Break newPage<->newPageCurrentInspector + page->d->inspector->setPage(0); + } + + d->page = page; + + if (page) { + // Setup the reciprocal association + page->d->setInspector(this); + } +} + +/*! + Returns the inspected QWebPage. + If no web page is currently associated, a null pointer is returned. +*/ +QWebPage* QWebInspector::page() const +{ + return d->page; +} + +/*! \reimp */ +QSize QWebInspector::sizeHint() const +{ + return QSize(450, 300); +} + +/*! \reimp */ +bool QWebInspector::event(QEvent* ev) +{ + return QWidget::event(ev); +} + +/*! \reimp */ +void QWebInspector::resizeEvent(QResizeEvent* event) +{ + d->adjustFrontendSize(event->size()); +} + +/*! \reimp */ +void QWebInspector::showEvent(QShowEvent* event) +{ + // Allows QWebInspector::show() to init the inspector. + if (d->page) + d->page->d->inspectorController()->show(); +} + +/*! \reimp */ +void QWebInspector::hideEvent(QHideEvent* event) +{ + if (d->page) + d->page->d->inspectorController()->setWindowVisible(false); +} + +/*! \internal */ +void QWebInspectorPrivate::setFrontend(QWidget* newFrontend) +{ + if (frontend) + frontend->setParent(0); + + frontend = newFrontend; + + if (frontend) { + frontend->setParent(q); + frontend->show(); + adjustFrontendSize(q->size()); + } +} + +void QWebInspectorPrivate::adjustFrontendSize(const QSize& size) +{ + if (frontend) + frontend->resize(size); +} + +/*! + \fn void QWebInspector::windowTitleChanged(const QString& newTitle); + + This is emitted to signal that this widget's title changed to \a newTitle. +*/ + |