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