15abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick/*
25abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
35abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * Copyright (C) 2010 University of Szeged
45abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *
55abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * All rights reserved.
65abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *
75abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * Redistribution and use in source and binary forms, with or without
85abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * modification, are permitted provided that the following conditions
95abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * are met:
105abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * 1. Redistributions of source code must retain the above copyright
115abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *    notice, this list of conditions and the following disclaimer.
125abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * 2. Redistributions in binary form must reproduce the above copyright
135abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *    notice, this list of conditions and the following disclaimer in the
145abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *    documentation and/or other materials provided with the distribution.
155abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick *
165abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
175abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
185abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
195abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
205abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
215abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
225abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
235abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
245abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick */
285abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
295abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include "BrowserView.h"
305abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick#include <QGraphicsScene>
325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochBrowserView::BrowserView(QGraphicsWKView::BackingStoreType backingStoreType, QWKContext* context, QWidget* parent)
345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    : QGraphicsView(parent)
355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    , m_item(0)
365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    m_item = new QGraphicsWKView(context, backingStoreType, 0);
385abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    setScene(new QGraphicsScene(this));
395abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    scene()->addItem(m_item);
405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    setFrameShape(QFrame::NoFrame);
425abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
435abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
445abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
455abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
465abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvoid BrowserView::resizeEvent(QResizeEvent* event)
475abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
485abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    QGraphicsView::resizeEvent(event);
495abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    QRectF rect(QPoint(0, 0), event->size());
505abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    m_item->setGeometry(rect);
515abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    scene()->setSceneRect(rect);
525abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
535abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
545abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvoid BrowserView::load(const QString& url)
555abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
565abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    return m_item->load(QUrl::fromUserInput(url));
575abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
585abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick
595abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickQGraphicsWKView* BrowserView::view() const
605abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{
615abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick    return m_item;
625abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick}
63