summaryrefslogtreecommitdiffstats
path: root/tools/qmlviewer
diff options
context:
space:
mode:
authorAlan Alpert <alan.alpert@nokia.com>2009-07-29 01:57:47 (GMT)
committerAlan Alpert <alan.alpert@nokia.com>2009-07-29 01:57:47 (GMT)
commit3a1a7cf24f54b3ef23accc777f10c6ebba12f37b (patch)
treecc548e5ef2ef5c202aaf424a0e693bb5c597b96c /tools/qmlviewer
parenta490b9f584887c2569a751fde063e883b7bf79ab (diff)
parent59574400fab30de1137b25146526347d10c783ca (diff)
downloadQt-3a1a7cf24f54b3ef23accc777f10c6ebba12f37b.zip
Qt-3a1a7cf24f54b3ef23accc777f10c6ebba12f37b.tar.gz
Qt-3a1a7cf24f54b3ef23accc777f10c6ebba12f37b.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'tools/qmlviewer')
-rw-r--r--tools/qmlviewer/main.cpp2
-rw-r--r--tools/qmlviewer/qmlviewer.cpp79
-rw-r--r--tools/qmlviewer/qmlviewer.h19
3 files changed, 49 insertions, 51 deletions
diff --git a/tools/qmlviewer/main.cpp b/tools/qmlviewer/main.cpp
index e786edb..8784ae0 100644
--- a/tools/qmlviewer/main.cpp
+++ b/tools/qmlviewer/main.cpp
@@ -37,8 +37,6 @@ void usage()
qWarning(" -autorecord [from-]<tomilliseconds> ...... set recording to start and stop");
qWarning(" -devicekeys .............................. use numeric keys (see F1)");
qWarning(" -netcache <size> ......................... set disk cache to size bytes");
- qWarning(" -recordtest <directory> .................. record an autotest");
- qWarning(" -runtest <directory> ..................... run a previously recorded test");
qWarning(" -translation <translationfile> ........... set the language to run in");
qWarning(" -L <directory> ........................... prepend to the library search path");
qWarning(" ");
diff --git a/tools/qmlviewer/qmlviewer.cpp b/tools/qmlviewer/qmlviewer.cpp
index 6e981de..4f35fe8 100644
--- a/tools/qmlviewer/qmlviewer.cpp
+++ b/tools/qmlviewer/qmlviewer.cpp
@@ -16,9 +16,10 @@
#include "qmlviewer.h"
#include <QtDeclarative/qmlcontext.h>
#include <QtDeclarative/qmlengine.h>
-#include "qmlpalette.h"
#include "qml.h"
#include <private/qperformancelog_p.h>
+#include <QAbstractAnimation>
+#include <private/qabstractanimation_p.h>
#include "deviceskin.h"
#include <QNetworkDiskCache>
@@ -132,8 +133,6 @@ QmlViewer::QmlViewer(QWidget *parent, Qt::WindowFlags flags)
devicemode = false;
skin = 0;
canvas = 0;
- palette = 0;
- disabledPalette = 0;
record_autotime = 0;
record_period = 20;
@@ -157,6 +156,14 @@ QmlViewer::QmlViewer(QWidget *parent, Qt::WindowFlags flags)
layout->addWidget(canvas);
setupProxy();
+
+ connect(&autoStartTimer, SIGNAL(triggered()), this, SLOT(autoStartRecording()));
+ connect(&autoStopTimer, SIGNAL(triggered()), this, SLOT(autoStopRecording()));
+ connect(&recordTimer, SIGNAL(triggered()), this, SLOT(recordFrame()));
+ autoStartTimer.setRunning(false);
+ autoStopTimer.setRunning(false);
+ recordTimer.setRunning(false);
+ recordTimer.setRepeating(true);
}
QMenuBar *QmlViewer::menuBar() const
@@ -302,7 +309,7 @@ void QmlViewer::takeSnapShot()
void QmlViewer::toggleRecordingWithSelection()
{
- if (!recordTimer.isActive()) {
+ if (!recordTimer.isRunning()) {
QString fileName = QFileDialog::getSaveFileName(this, tr("Save Video File"), "", tr("Common Video files (*.avi *.mpeg *.mov);; GIF Animation (*.gif);; Individual PNG frames (*.png);; All ffmpeg formats (*.*)"));
if (fileName.isEmpty())
return;
@@ -319,7 +326,7 @@ void QmlViewer::toggleRecording()
toggleRecordingWithSelection();
return;
}
- bool recording = !recordTimer.isActive();
+ bool recording = !recordTimer.isRunning();
recordAction->setText(recording ? tr("&Stop Recording Video\tF2") : tr("&Start Recording Video\tF2"));
setRecording(recording);
}
@@ -382,7 +389,6 @@ void QmlViewer::openQml(const QString& fileName)
}
}
- setupPalettes();
canvas->setUrl(url);
QTime t;
@@ -407,19 +413,6 @@ void QmlViewer::openQml(const QString& fileName)
#endif
}
-void QmlViewer:: setupPalettes()
-{
- delete palette;
- palette = new QmlPalette;
- QmlContext *ctxt = canvas->rootContext();
- ctxt->setContextProperty("activePalette", palette);
-
- delete disabledPalette;
- disabledPalette = new QmlPalette;
- disabledPalette->setColorGroup(QPalette::Disabled);
- ctxt->setContextProperty("disabledPalette", disabledPalette);
-}
-
void QmlViewer::setSkin(const QString& skinDirectory)
{
// XXX QWidget::setMask does not handle changes well, and we may
@@ -480,7 +473,7 @@ void QmlViewer::setSkin(const QString& skinDirectory)
void QmlViewer::setAutoRecord(int from, int to)
{
record_autotime = to-from;
- autoStartTimer.start(from,this);
+ autoStartTimer.setInterval(from);
}
void QmlViewer::setRecordArgs(const QStringList& a)
@@ -537,11 +530,15 @@ void QmlViewer::keyPressEvent(QKeyEvent *event)
void QmlViewer::setRecording(bool on)
{
- if (on == recordTimer.isActive())
+ if (on == recordTimer.isRunning())
return;
+ QUnifiedTimer::instance()->setTimingInterval(on ? record_period:16);
+ QUnifiedTimer::instance()->setConsistentTiming(on);
if (on) {
- recordTimer.start(record_period,this);
+ canvas->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
+ recordTimer.setInterval(record_period);
+ recordTimer.setRunning(true);
QString fmt = record_file.right(4).toLower();
if (fmt != ".png" && fmt != ".gif") {
// Stream video to ffmpeg
@@ -549,6 +546,7 @@ void QmlViewer::setRecording(bool on)
QProcess *proc = new QProcess(this);
connect(proc, SIGNAL(finished(int)), this, SLOT(ffmpegFinished(int)));
frame_stream = proc;
+ frame = QImage(canvas->width(),canvas->height(),QImage::Format_RGB32);
QStringList args;
args << "-sameq"; // ie. high
@@ -567,7 +565,8 @@ void QmlViewer::setRecording(bool on)
frame_stream = 0;
}
} else {
- recordTimer.stop();
+ canvas->setViewportUpdateMode(QGraphicsView::MinimalViewportUpdate);
+ recordTimer.setRunning(false);
if (frame_stream) {
qDebug() << "Saving video...";
frame_stream->close();
@@ -645,7 +644,7 @@ void QmlViewer::setRecording(bool on)
frames.clear();
}
}
- qDebug() << "Recording: " << (recordTimer.isActive()?"ON":"OFF");
+ qDebug() << "Recording: " << (recordTimer.isRunning()?"ON":"OFF");
}
void QmlViewer::ffmpegFinished(int code)
@@ -653,23 +652,25 @@ void QmlViewer::ffmpegFinished(int code)
qDebug() << "ffmpeg returned" << code << frame_stream->readAllStandardError();
}
-void QmlViewer::timerEvent(QTimerEvent *event)
+void QmlViewer::autoStartRecording()
{
- if (event->timerId() == recordTimer.timerId()) {
- if (frame_stream) {
- QImage frame = QPixmap::grabWidget(canvas).toImage();
- frame_stream->write((char*)frame.bits(),frame.numBytes());
- } else {
- frames.append(new QImage(QPixmap::grabWidget(canvas).toImage()));
- }
- if (record_autotime && autoTimer.elapsed() >= record_autotime)
- setRecording(false);
- } else if (event->timerId() == autoStartTimer.timerId()) {
- autoTimer.start();
- autoStartTimer.stop();
- setRecording(true);
+ setRecording(true);
+ autoStopTimer.setInterval(record_autotime);
+ autoStopTimer.setRunning(true);
+}
+
+void QmlViewer::autoStopRecording()
+{
+ setRecording(true);
+}
+
+void QmlViewer::recordFrame()
+{
+ canvas->QWidget::render(&frame);
+ if (frame_stream) {
+ frame_stream->write((char*)frame.bits(),frame.numBytes());
} else {
- QWidget::timerEvent(event);
+ frames.append(new QImage(frame));
}
}
diff --git a/tools/qmlviewer/qmlviewer.h b/tools/qmlviewer/qmlviewer.h
index 62ee908..6d9f9d0 100644
--- a/tools/qmlviewer/qmlviewer.h
+++ b/tools/qmlviewer/qmlviewer.h
@@ -15,7 +15,7 @@
#define QMLVIEWER_H
#include <QMenuBar>
-#include <QBasicTimer>
+#include <QmlTimer>
#include <QTime>
#include <QList>
@@ -24,7 +24,6 @@ QT_BEGIN_NAMESPACE
class QFxView;
class PreviewDeviceSkin;
class QFxTestEngine;
-class QmlPalette;
class QProcess;
class QmlViewer : public QWidget
@@ -39,7 +38,7 @@ public:
void setRecordArgs(const QStringList&);
int recordPeriod() const { return record_period; }
void setRecording(bool on);
- bool isRecording() const { return recordTimer.isActive(); }
+ bool isRecording() const { return recordTimer.isRunning(); }
void setAutoRecord(int from, int to);
void setDeviceKeys(bool);
void setNetworkCacheSize(int size);
@@ -60,29 +59,29 @@ public slots:
protected:
virtual void keyPressEvent(QKeyEvent *);
- virtual void timerEvent(QTimerEvent *);
void createMenu(QMenuBar *menu, QMenu *flatmenu);
private slots:
void setScaleSkin();
void setScaleView();
+ void autoStartRecording();
+ void autoStopRecording();
+ void recordFrame();
private:
void setupProxy();
- void setupPalettes();
QString currentFileName;
PreviewDeviceSkin *skin;
QSize skinscreensize;
QFxView *canvas;
- QmlPalette *palette;
- QmlPalette *disabledPalette;
- QBasicTimer recordTimer;
+ QmlTimer recordTimer;
+ QImage frame;
QList<QImage*> frames;
QProcess* frame_stream;
- QBasicTimer autoStartTimer;
- QTime autoTimer;
+ QmlTimer autoStartTimer;
+ QmlTimer autoStopTimer;
QString record_dither;
QString record_file;
QStringList record_args;