diff options
Diffstat (limited to 'WebKit/qt/WebCoreSupport/ChromeClientQt.cpp')
-rw-r--r-- | WebKit/qt/WebCoreSupport/ChromeClientQt.cpp | 396 |
1 files changed, 0 insertions, 396 deletions
diff --git a/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp deleted file mode 100644 index 8a4de6b..0000000 --- a/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Copyright (C) 2006 Zack Rusin <zack@kde.org> - * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include "config.h" -#include "ChromeClientQt.h" - -#include "FileChooser.h" -#include "Frame.h" -#include "FrameLoadRequest.h" -#include "FrameLoader.h" -#include "FrameLoaderClientQt.h" -#include "FrameView.h" -#include "HitTestResult.h" -#include "NotImplemented.h" -#include "WindowFeatures.h" - -#include "qwebpage.h" -#include "qwebpage_p.h" -#include "qwebframe_p.h" - -#include <qtooltip.h> - -namespace WebCore -{ - - -ChromeClientQt::ChromeClientQt(QWebPage* webPage) - : m_webPage(webPage) -{ - toolBarsVisible = statusBarVisible = menuBarVisible = true; -} - -ChromeClientQt::~ChromeClientQt() -{ - -} - -void ChromeClientQt::setWindowRect(const FloatRect& rect) -{ - if (!m_webPage) - return; - emit m_webPage->geometryChangeRequested(QRect(qRound(rect.x()), qRound(rect.y()), - qRound(rect.width()), qRound(rect.height()))); -} - - -FloatRect ChromeClientQt::windowRect() -{ - if (!m_webPage) - return FloatRect(); - - QWidget* view = m_webPage->view(); - if (!view) - return FloatRect(); - return IntRect(view->topLevelWidget()->geometry()); -} - - -FloatRect ChromeClientQt::pageRect() -{ - if (!m_webPage) - return FloatRect(); - return FloatRect(QRectF(QPointF(0,0), m_webPage->viewportSize())); -} - - -float ChromeClientQt::scaleFactor() -{ - notImplemented(); - return 1; -} - - -void ChromeClientQt::focus() -{ - if (!m_webPage) - return; - QWidget* view = m_webPage->view(); - if (!view) - return; - - view->setFocus(); -} - - -void ChromeClientQt::unfocus() -{ - if (!m_webPage) - return; - QWidget* view = m_webPage->view(); - if (!view) - return; - view->clearFocus(); -} - -bool ChromeClientQt::canTakeFocus(FocusDirection) -{ - // This is called when cycling through links/focusable objects and we - // reach the last focusable object. Then we want to claim that we can - // take the focus to avoid wrapping. - return true; -} - -void ChromeClientQt::takeFocus(FocusDirection) -{ - // don't do anything. This is only called when cycling to links/focusable objects, - // which in turn is called from focusNextPrevChild. We let focusNextPrevChild - // call QWidget::focusNextPrevChild accordingly, so there is no need to do anything - // here. -} - - -Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures& features) -{ - QWebPage *newPage = m_webPage->createWindow(features.dialog ? QWebPage::WebModalDialog : QWebPage::WebBrowserWindow); - if (!newPage) - return 0; - newPage->mainFrame()->load(request.resourceRequest().url()); - return newPage->d->page; -} - -void ChromeClientQt::show() -{ - if (!m_webPage) - return; - QWidget* view = m_webPage->view(); - if (!view) - return; - view->topLevelWidget()->show(); -} - - -bool ChromeClientQt::canRunModal() -{ - notImplemented(); - return false; -} - - -void ChromeClientQt::runModal() -{ - notImplemented(); -} - - -void ChromeClientQt::setToolbarsVisible(bool visible) -{ - toolBarsVisible = visible; - emit m_webPage->toolBarVisibilityChangeRequested(visible); -} - - -bool ChromeClientQt::toolbarsVisible() -{ - return toolBarsVisible; -} - - -void ChromeClientQt::setStatusbarVisible(bool visible) -{ - emit m_webPage->statusBarVisibilityChangeRequested(visible); - statusBarVisible = visible; -} - - -bool ChromeClientQt::statusbarVisible() -{ - return statusBarVisible; - return false; -} - - -void ChromeClientQt::setScrollbarsVisible(bool) -{ - notImplemented(); -} - - -bool ChromeClientQt::scrollbarsVisible() -{ - notImplemented(); - return true; -} - - -void ChromeClientQt::setMenubarVisible(bool visible) -{ - menuBarVisible = visible; - emit m_webPage->menuBarVisibilityChangeRequested(visible); -} - -bool ChromeClientQt::menubarVisible() -{ - return menuBarVisible; -} - -void ChromeClientQt::setResizable(bool) -{ - notImplemented(); -} - -void ChromeClientQt::addMessageToConsole(const String& message, unsigned int lineNumber, - const String& sourceID) -{ - QString x = message; - QString y = sourceID; - m_webPage->javaScriptConsoleMessage(x, lineNumber, y); -} - -void ChromeClientQt::chromeDestroyed() -{ - delete this; -} - -bool ChromeClientQt::canRunBeforeUnloadConfirmPanel() -{ - return true; -} - -bool ChromeClientQt::runBeforeUnloadConfirmPanel(const String& message, Frame* frame) -{ - return runJavaScriptConfirm(frame, message); -} - -void ChromeClientQt::closeWindowSoon() -{ - m_webPage->mainFrame()->d->frame->loader()->stopAllLoaders(); - emit m_webPage->windowCloseRequested(); -} - -void ChromeClientQt::runJavaScriptAlert(Frame* f, const String& msg) -{ - QString x = msg; - FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client()); - m_webPage->javaScriptAlert(fl->webFrame(), x); -} - -bool ChromeClientQt::runJavaScriptConfirm(Frame* f, const String& msg) -{ - QString x = msg; - FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client()); - return m_webPage->javaScriptConfirm(fl->webFrame(), x); -} - -bool ChromeClientQt::runJavaScriptPrompt(Frame* f, const String& message, const String& defaultValue, String& result) -{ - QString x = result; - FrameLoaderClientQt *fl = static_cast<FrameLoaderClientQt*>(f->loader()->client()); - bool rc = m_webPage->javaScriptPrompt(fl->webFrame(), (QString)message, (QString)defaultValue, &x); - result = x; - return rc; -} - -void ChromeClientQt::setStatusbarText(const String& msg) -{ - QString x = msg; - emit m_webPage->statusBarMessage(x); -} - -bool ChromeClientQt::shouldInterruptJavaScript() -{ - notImplemented(); - return false; -} - -bool ChromeClientQt::tabsToLinks() const -{ - return m_webPage->settings()->testAttribute(QWebSettings::LinksIncludedInFocusChain); -} - -IntRect ChromeClientQt::windowResizerRect() const -{ - return IntRect(); -} - -void ChromeClientQt::repaint(const IntRect& windowRect, bool contentChanged, bool immediate, bool repaintContentOnly) -{ - // No double buffer, so only update the QWidget if content changed. - if (contentChanged) { - QWidget* view = m_webPage->view(); - if (view) { - QRect rect(windowRect); - rect = rect.intersected(QRect(QPoint(0, 0), m_webPage->viewportSize())); - if (!windowRect.isEmpty()) - view->update(windowRect); - } - emit m_webPage->repaintRequested(windowRect); - } - - // FIXME: There is no "immediate" support for window painting. This should be done always whenever the flag - // is set. -} - -void ChromeClientQt::scroll(const IntSize& delta, const IntRect& scrollViewRect, const IntRect&) -{ - QWidget* view = m_webPage->view(); - if (view) - view->scroll(delta.width(), delta.height(), scrollViewRect); - emit m_webPage->scrollRequested(delta.width(), delta.height(), scrollViewRect); -} - -IntRect ChromeClientQt::windowToScreen(const IntRect& rect) const -{ - notImplemented(); - return rect; -} - -IntPoint ChromeClientQt::screenToWindow(const IntPoint& point) const -{ - notImplemented(); - return point; -} - -PlatformWidget ChromeClientQt::platformWindow() const -{ - return m_webPage->view(); -} - -void ChromeClientQt::mouseDidMoveOverElement(const HitTestResult& result, unsigned modifierFlags) -{ - if (result.absoluteLinkURL() != lastHoverURL - || result.title() != lastHoverTitle - || result.textContent() != lastHoverContent) { - lastHoverURL = result.absoluteLinkURL(); - lastHoverTitle = result.title(); - lastHoverContent = result.textContent(); - emit m_webPage->linkHovered(lastHoverURL.prettyURL(), - lastHoverTitle, lastHoverContent); - } -} - -void ChromeClientQt::setToolTip(const String &tip) -{ -#ifndef QT_NO_TOOLTIP - QWidget* view = m_webPage->view(); - if (!view) - return; - - if (tip.isEmpty()) { - view->setToolTip(QString()); - QToolTip::hideText(); - } else { - QString dtip = QLatin1String("<p>") + tip + QLatin1String("</p>"); - view->setToolTip(dtip); - } -#else - Q_UNUSED(tip); -#endif -} - -void ChromeClientQt::print(Frame *frame) -{ - emit m_webPage->printRequested(QWebFramePrivate::kit(frame)); -} - -void ChromeClientQt::exceededDatabaseQuota(Frame*, const String&) -{ - notImplemented(); -} - -void ChromeClientQt::runOpenPanel(Frame* frame, PassRefPtr<FileChooser> prpFileChooser) -{ - // FIXME: Support multiple files. - - RefPtr<FileChooser> fileChooser = prpFileChooser; - QString suggestedFile = fileChooser->filenames()[0]; - QString file = m_webPage->chooseFile(QWebFramePrivate::kit(frame), suggestedFile); - if (!file.isEmpty()) - fileChooser->chooseFile(file); -} - -} |