1d0825bca7fe65beaee391d30da42e937db621564Steve Block/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 3d0825bca7fe65beaee391d30da42e937db621564Steve Block * 4d0825bca7fe65beaee391d30da42e937db621564Steve Block * This library is free software; you can redistribute it and/or 5d0825bca7fe65beaee391d30da42e937db621564Steve Block * modify it under the terms of the GNU Lesser General Public 6d0825bca7fe65beaee391d30da42e937db621564Steve Block * License as published by the Free Software Foundation; either 7d0825bca7fe65beaee391d30da42e937db621564Steve Block * version 2 of the License, or (at your option) any later version. 8d0825bca7fe65beaee391d30da42e937db621564Steve Block * 9d0825bca7fe65beaee391d30da42e937db621564Steve Block * This library is distributed in the hope that it will be useful, 10d0825bca7fe65beaee391d30da42e937db621564Steve Block * but WITHOUT ANY WARRANTY; without even the implied warranty of 11d0825bca7fe65beaee391d30da42e937db621564Steve Block * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12d0825bca7fe65beaee391d30da42e937db621564Steve Block * Lesser General Public License for more details. 13d0825bca7fe65beaee391d30da42e937db621564Steve Block * 14d0825bca7fe65beaee391d30da42e937db621564Steve Block * You should have received a copy of the GNU Lesser General Public 15d0825bca7fe65beaee391d30da42e937db621564Steve Block * License along with this library; if not, write to the Free Software 16d0825bca7fe65beaee391d30da42e937db621564Steve Block * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17d0825bca7fe65beaee391d30da42e937db621564Steve Block * 18d0825bca7fe65beaee391d30da42e937db621564Steve Block */ 19d0825bca7fe65beaee391d30da42e937db621564Steve Block 20d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "widget.h" 21d0825bca7fe65beaee391d30da42e937db621564Steve Block 22d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qwebelement.h" 23d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qwebframe.h" 24d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "ui_widget.h" 25d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <QPainter> 26d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <QtTest/QtTest> 27d0825bca7fe65beaee391d30da42e937db621564Steve Block 28d0825bca7fe65beaee391d30da42e937db621564Steve BlockWidget::Widget(QWidget* parent) : 29d0825bca7fe65beaee391d30da42e937db621564Steve Block QWidget(parent), 30d0825bca7fe65beaee391d30da42e937db621564Steve Block ui(new Ui::Widget) 31d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 32d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->setupUi(this); 33d0825bca7fe65beaee391d30da42e937db621564Steve Block} 34d0825bca7fe65beaee391d30da42e937db621564Steve Block 35d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::refreshJS() 36d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 37d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->webView->page()->mainFrame()->addToJavaScriptWindowObject("myWidget", this); 38d0825bca7fe65beaee391d30da42e937db621564Steve Block} 39d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::start() 40d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 41d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->webView->load(QUrl("qrc:///test.html")); 42d0825bca7fe65beaee391d30da42e937db621564Steve Block connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(refreshJS())); 43d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->webView->page()->mainFrame()->addToJavaScriptWindowObject("myWidget", this); 44d0825bca7fe65beaee391d30da42e937db621564Steve Block} 45d0825bca7fe65beaee391d30da42e937db621564Steve Block 46d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::completeTest() 47d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 48d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(ui->lbl1->pixmap()->size(), ui->lbl2->size()); 49d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(ui->lbl3->size(), ui->lbl4->pixmap()->size()); 50d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(ui->lbl2->size().width(), ui->webView->page()->mainFrame()->findFirstElement("#img1").evaluateJavaScript("this.width").toInt()); 51d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(ui->lbl3->size().width(), ui->webView->page()->mainFrame()->findFirstElement("#img2").evaluateJavaScript("this.width").toInt()); 52d0825bca7fe65beaee391d30da42e937db621564Steve Block emit testComplete(); 53d0825bca7fe65beaee391d30da42e937db621564Steve Block} 54d0825bca7fe65beaee391d30da42e937db621564Steve Block 55d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::setPixmap(const QPixmap& p) 56d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 57d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->lbl1->setPixmap(p); 58d0825bca7fe65beaee391d30da42e937db621564Steve Block} 59d0825bca7fe65beaee391d30da42e937db621564Steve BlockQPixmap Widget::pixmap() const 60d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 61d0825bca7fe65beaee391d30da42e937db621564Steve Block QPixmap px(ui->lbl3->size()); 62d0825bca7fe65beaee391d30da42e937db621564Steve Block { 63d0825bca7fe65beaee391d30da42e937db621564Steve Block QPainter p(&px); 64d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->lbl3->render(&p); 65d0825bca7fe65beaee391d30da42e937db621564Steve Block } 66d0825bca7fe65beaee391d30da42e937db621564Steve Block return px; 67d0825bca7fe65beaee391d30da42e937db621564Steve Block} 68d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::setImage(const QImage& img) 69d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 70d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->lbl4->setPixmap(QPixmap::fromImage(img)); 71d0825bca7fe65beaee391d30da42e937db621564Steve Block} 72d0825bca7fe65beaee391d30da42e937db621564Steve Block 73d0825bca7fe65beaee391d30da42e937db621564Steve BlockQImage Widget::image() const 74d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 75d0825bca7fe65beaee391d30da42e937db621564Steve Block QImage img(ui->lbl2->size(), QImage::Format_ARGB32); 76d0825bca7fe65beaee391d30da42e937db621564Steve Block { 77d0825bca7fe65beaee391d30da42e937db621564Steve Block QPainter p(&img); 78d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->lbl2->render(&p); 79d0825bca7fe65beaee391d30da42e937db621564Steve Block } 80d0825bca7fe65beaee391d30da42e937db621564Steve Block return img; 81d0825bca7fe65beaee391d30da42e937db621564Steve Block} 82d0825bca7fe65beaee391d30da42e937db621564Steve Block 83d0825bca7fe65beaee391d30da42e937db621564Steve BlockWidget::~Widget() 84d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 85d0825bca7fe65beaee391d30da42e937db621564Steve Block delete ui; 86d0825bca7fe65beaee391d30da42e937db621564Steve Block} 87d0825bca7fe65beaee391d30da42e937db621564Steve Block 88d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::changeEvent(QEvent* e) 89d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 90d0825bca7fe65beaee391d30da42e937db621564Steve Block QWidget::changeEvent(e); 91d0825bca7fe65beaee391d30da42e937db621564Steve Block switch (e->type()) { 92d0825bca7fe65beaee391d30da42e937db621564Steve Block case QEvent::LanguageChange: 93d0825bca7fe65beaee391d30da42e937db621564Steve Block ui->retranslateUi(this); 94d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 95d0825bca7fe65beaee391d30da42e937db621564Steve Block default: 96d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 97d0825bca7fe65beaee391d30da42e937db621564Steve Block } 98d0825bca7fe65beaee391d30da42e937db621564Steve Block} 99d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::compare(const QVariant& a, const QVariant& b) 100d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 101d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(a, b); 102d0825bca7fe65beaee391d30da42e937db621564Steve Block} 103d0825bca7fe65beaee391d30da42e937db621564Steve Block 104d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::imageSlot(const QImage& img) 105d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 106d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(img.size(), ui->lbl3->size()); 107d0825bca7fe65beaee391d30da42e937db621564Steve Block emit pixmapSignal(QPixmap::fromImage(img)); 108d0825bca7fe65beaee391d30da42e937db621564Steve Block} 109d0825bca7fe65beaee391d30da42e937db621564Steve Block 110d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::pixmapSlot(const QPixmap& pxm) 111d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 112d0825bca7fe65beaee391d30da42e937db621564Steve Block QCOMPARE(pxm.size(), ui->lbl2->size()); 113d0825bca7fe65beaee391d30da42e937db621564Steve Block emit imageSignal(ui->lbl4->pixmap()->toImage()); 114d0825bca7fe65beaee391d30da42e937db621564Steve Block} 115d0825bca7fe65beaee391d30da42e937db621564Steve Block 116d0825bca7fe65beaee391d30da42e937db621564Steve Blockvoid Widget::randomSlot(const QPixmap& pxm) 117d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 118d0825bca7fe65beaee391d30da42e937db621564Steve Block QVERIFY(pxm.isNull()); 119d0825bca7fe65beaee391d30da42e937db621564Steve Block} 120