Home | History | Annotate | Download | only in hybridPixmap
      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