summaryrefslogtreecommitdiffstats
path: root/tools/qmlviewer/qmlviewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmlviewer/qmlviewer.cpp')
-rw-r--r--tools/qmlviewer/qmlviewer.cpp60
1 files changed, 35 insertions, 25 deletions
diff --git a/tools/qmlviewer/qmlviewer.cpp b/tools/qmlviewer/qmlviewer.cpp
index 1566473..626e4c4 100644
--- a/tools/qmlviewer/qmlviewer.cpp
+++ b/tools/qmlviewer/qmlviewer.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -40,6 +40,10 @@
****************************************************************************/
#include <qmlview.h>
+
+#ifdef hz
+#undef hz
+#endif
#include "ui_recopts.h"
#include "qmlviewer.h"
@@ -52,8 +56,9 @@
#include <QAbstractAnimation>
#include "deviceskin.h"
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 2))
+#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 3))
#include <private/qzipreader_p.h>
+#define QMLVIEWER_ZIP_SUPPORT
#endif
#include <QSettings>
@@ -79,6 +84,7 @@
#include <QAction>
#include <QFileDialog>
#include <QTimer>
+#include <QGraphicsObject>
#include <QNetworkProxyFactory>
#include <QKeyEvent>
#include <QMutex>
@@ -107,7 +113,6 @@
QT_BEGIN_NAMESPACE
-
class Screen : public QObject
{
Q_OBJECT
@@ -130,9 +135,14 @@ signals:
void orientationChanged();
};
+QT_END_NAMESPACE
+
QML_DECLARE_TYPE(Screen)
+
QML_DEFINE_TYPE(QmlViewer, 1, 0, Screen, Screen)
+QT_BEGIN_NAMESPACE
+
class SizedMenuBar : public QMenuBar
{
Q_OBJECT
@@ -468,13 +478,12 @@ QmlViewer::QmlViewer(QWidget *parent, Qt::WindowFlags flags)
canvas = new QmlView(this);
canvas->setAttribute(Qt::WA_OpaquePaintEvent);
canvas->setAttribute(Qt::WA_NoSystemBackground);
- canvas->setContentResizable(!skin || !scaleSkin);
+ canvas->setResizeMode((!skin || !scaleSkin) ? QmlView::SizeRootObjectToView : QmlView::SizeViewToRootObject);
canvas->setFocus();
QObject::connect(canvas, SIGNAL(sceneResized(QSize)), this, SLOT(sceneResized(QSize)));
- QObject::connect(canvas, SIGNAL(initialSize(QSize)), this, SLOT(adjustSizeSlot()));
- QObject::connect(canvas, SIGNAL(errors(QList<QmlError>)), this, SLOT(executeErrors()));
- QObject::connect(canvas, SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));
+ QObject::connect(canvas, SIGNAL(statusChanged(QmlView::Status)), this, SLOT(statusChanged()));
+ QObject::connect(canvas->engine(), SIGNAL(quit()), QCoreApplication::instance (), SLOT(quit()));
if (!(flags & Qt::FramelessWindowHint)) {
createMenu(menuBar(),0);
@@ -511,11 +520,6 @@ QmlViewer::~QmlViewer()
delete namFactory;
}
-void QmlViewer::adjustSizeSlot()
-{
- resize(sizeHint());
-}
-
QMenuBar *QmlViewer::menuBar() const
{
#if !defined(Q_OS_SYMBIAN)
@@ -726,7 +730,7 @@ void QmlViewer::setScaleSkin()
if (scaleSkin)
return;
scaleSkin = true;
- canvas->setContentResizable(!skin || !scaleSkin);
+ canvas->setResizeMode((!skin || !scaleSkin) ? QmlView::SizeRootObjectToView : QmlView::SizeViewToRootObject);
if (skin) {
canvas->setFixedSize(canvas->sizeHint());
skin->setScreenSize(canvas->sizeHint());
@@ -739,7 +743,7 @@ void QmlViewer::setScaleView()
return;
scaleSkin = false;
if (skin) {
- canvas->setContentResizable(!skin || !scaleSkin);
+ canvas->setResizeMode((!skin || !scaleSkin) ? QmlView::SizeRootObjectToView : QmlView::SizeViewToRootObject);
canvas->setMinimumSize(QSize(0,0));
canvas->setMaximumSize(QSize(16777215,16777215));
canvas->resize(skin->standardScreenSize());
@@ -866,7 +870,7 @@ void QmlViewer::reload()
void QmlViewer::open(const QString& doc)
{
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 2))
+#ifdef QMLVIEWER_ZIP_SUPPORT
if (doc.endsWith(".wgt",Qt::CaseInsensitive)
|| doc.endsWith(".wgz",Qt::CaseInsensitive)
|| doc.endsWith(".zip",Qt::CaseInsensitive))
@@ -878,20 +882,21 @@ void QmlViewer::open(const QString& doc)
void QmlViewer::openWgt(const QString& doc)
{
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 2))
+#ifdef QMLVIEWER_ZIP_SUPPORT
// XXX This functionality could be migrated to QmlView once refined
QUrl url(doc);
if (url.isRelative())
url = QUrl::fromLocalFile(doc);
- canvas->reset();
+ delete canvas->rootObject();
+ canvas->engine()->clearComponentCache();
QNetworkAccessManager * nam = canvas->engine()->networkAccessManager();
wgtreply = nam->get(QNetworkRequest(url));
connect(wgtreply,SIGNAL(finished()),this,SLOT(unpackWgt()));
#endif
}
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 2))
+#ifdef QMLVIEWER_ZIP_SUPPORT
static void removeRecursive(const QString& dirname)
{
QDir dir(dirname);
@@ -907,7 +912,7 @@ static void removeRecursive(const QString& dirname)
void QmlViewer::unpackWgt()
{
-#if (QT_VERSION >= QT_VERSION_CHECK(4, 6, 2))
+#ifdef QMLVIEWER_ZIP_SUPPORT
QByteArray all = wgtreply->readAll();
QBuffer buf(&all);
buf.open(QIODevice::ReadOnly);
@@ -966,7 +971,7 @@ void QmlViewer::unpackWgt()
void QmlViewer::openFile()
{
- QString cur = canvas->url().toLocalFile();
+ QString cur = canvas->source().toLocalFile();
if (useQmlFileBrowser) {
openQml("qrc:/content/Browser.qml");
} else {
@@ -978,9 +983,13 @@ void QmlViewer::openFile()
}
}
-void QmlViewer::executeErrors()
+void QmlViewer::statusChanged()
{
- if (tester) tester->executefailure();
+ if (canvas->status() == QmlView::Error && tester)
+ tester->executefailure();
+
+ if (canvas->status() == QmlView::Ready)
+ resize(sizeHint());
}
void QmlViewer::launch(const QString& file_or_url)
@@ -1003,7 +1012,8 @@ void QmlViewer::openQml(const QString& file_or_url)
if (!m_script.isEmpty())
tester = new QmlGraphicsTester(m_script, m_scriptOptions, canvas);
- canvas->reset();
+ delete canvas->rootObject();
+ canvas->engine()->clearComponentCache();
QmlContext *ctxt = canvas->rootContext();
ctxt->setContextProperty("qmlViewer", this);
#ifdef Q_OS_SYMBIAN
@@ -1053,7 +1063,7 @@ void QmlViewer::openQml(const QString& file_or_url)
}
}
- canvas->setUrl(url);
+ canvas->setSource(url);
QTime t;
t.start();
@@ -1120,7 +1130,7 @@ void QmlViewer::setSkin(const QString& skinDirOrName)
skin->deleteLater();
}
- canvas->setContentResizable(!skin || !scaleSkin);
+ canvas->setResizeMode((!skin || !scaleSkin) ? QmlView::SizeRootObjectToView : QmlView::SizeViewToRootObject);
DeviceSkinParameters parameters;
if (!skinDirectory.isEmpty() && parameters.read(skinDirectory,DeviceSkinParameters::ReadAll,&err)) {