From 5532f939b5d6d78ca6470b2fc9e20fff77c663c4 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 6 Oct 2010 14:09:07 +0200
Subject: [PATCH] QmlObserver: Fix compilation if no private headers are
 installed

Don't support the Recording + Test Script features if there are
no private headers installed.

Reviewed-by: Lasse Holmstedt
---
 share/qtcreator/qml/qmlobserver/main.cpp         |  8 ++++++--
 .../qml/qmlobserver/qdeclarativetester.cpp       |  8 ++++++++
 share/qtcreator/qml/qmlobserver/qml.pri          |  4 ++++
 share/qtcreator/qml/qmlobserver/qmlruntime.cpp   | 16 ++++++++++++++--
 4 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/share/qtcreator/qml/qmlobserver/main.cpp b/share/qtcreator/qml/qmlobserver/main.cpp
index f04640d970e..6733265b2fe 100644
--- a/share/qtcreator/qml/qmlobserver/main.cpp
+++ b/share/qtcreator/qml/qmlobserver/main.cpp
@@ -113,7 +113,7 @@ void myMessageOutput(QtMsgType type, const char *msg)
 
 void usage()
 {
-    qWarning("Usage: qmlviewer [options] <filename>");
+    qWarning("Usage: qmlobserver [options] <filename>");
     qWarning(" ");
     qWarning(" options:");
     qWarning("  -v, -version ............................. display version");
@@ -125,6 +125,7 @@ void usage()
     qWarning("  -sizerootobjecttoview .................... the content resizes to the changes in the view (default)");
     qWarning("  -qmlbrowser .............................. use a QML-based file browser");
     qWarning("  -warnings [show|hide]..................... show warnings in a separate log window");
+#ifndef NO_PRIVATE_HEADERS
     qWarning("  -recordfile <output> ..................... set video recording file");
     qWarning("                                              - ImageMagick 'convert' for GIF)");
     qWarning("                                              - png file for raw frames");
@@ -133,6 +134,7 @@ void usage()
     qWarning("  -recordrate <fps> ........................ set recording frame rate");
     qWarning("  -record arg .............................. add a recording process argument");
     qWarning("  -autorecord [from-]<tomilliseconds> ...... set recording to start and stop");
+#endif
     qWarning("  -devicekeys .............................. use numeric keys (see F1)");
     qWarning("  -dragthreshold <size> .................... set mouse drag threshold size");
     qWarning("  -netcache <size> ......................... set disk cache to size bytes");
@@ -141,8 +143,10 @@ void usage()
     qWarning("                                             display path if <directory> is empty");
     qWarning("  -P <directory> ........................... prepend to the plugin search path");
     qWarning("  -opengl .................................. use a QGLWidget for the viewport");
+#ifndef NO_PRIVATE_HEADERS
     qWarning("  -script <path> ........................... set the script to use");
     qWarning("  -scriptopts <options>|help ............... set the script options to use");
+#endif
 
     qWarning(" ");
     qWarning(" Press F1 for interactive help");
@@ -151,7 +155,7 @@ void usage()
 
 void scriptOptsUsage()
 {
-    qWarning("Usage: qmlviewer -scriptopts <option>[,<option>...] ...");
+    qWarning("Usage: qmlobserver -scriptopts <option>[,<option>...] ...");
     qWarning(" options:");
     qWarning("  record ................................... record a new script");
     qWarning("  play ..................................... playback an existing script");
diff --git a/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp b/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp
index 14918b23809..83e8c06018e 100644
--- a/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp
+++ b/share/qtcreator/qml/qmlobserver/qdeclarativetester.cpp
@@ -47,8 +47,12 @@
 #include <QDeclarativeComponent>
 #include <QDir>
 #include <QCryptographicHash>
+#include <QGraphicsObject>
+
+#ifndef NO_PRIVATE_HEADERS
 #include <private/qabstractanimation_p.h>
 #include <private/qdeclarativeitem_p.h>
+#endif
 
 QT_BEGIN_NAMESPACE
 
@@ -60,7 +64,9 @@ QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer
 {
     parent->viewport()->installEventFilter(this);
     parent->installEventFilter(this);
+#ifndef NO_PRIVATE_HEADERS
     QUnifiedTimer::instance()->setConsistentTiming(true);
+#endif
     if (options & QDeclarativeViewer::Play)
         this->run();
     start();
@@ -239,7 +245,9 @@ void QDeclarativeTester::save()
 
 void QDeclarativeTester::updateCurrentTime(int msec)
 {
+#ifndef NO_PRIVATE_HEADERS
     QDeclarativeItemPrivate::setConsistentTime(msec);
+#endif
     if (!testscript && msec > 16 && options & QDeclarativeViewer::Snapshot)
         return;
 
diff --git a/share/qtcreator/qml/qmlobserver/qml.pri b/share/qtcreator/qml/qmlobserver/qml.pri
index 2016513f4e4..3fa4752a3f9 100644
--- a/share/qtcreator/qml/qmlobserver/qml.pri
+++ b/share/qtcreator/qml/qmlobserver/qml.pri
@@ -5,6 +5,10 @@ contains(QT_CONFIG, opengl) {
     DEFINES += GL_SUPPORTED
 }
 
+!exists($$[QT_INSTALL_HEADERS]/QtCore/private/qabstractanimation_p.h) {
+    DEFINES += NO_PRIVATE_HEADERS
+}
+
 INCLUDEPATH += $$PWD
 
 HEADERS += $$PWD/qmlruntime.h \
diff --git a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
index 140aee7084c..d15814c7178 100644
--- a/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
+++ b/share/qtcreator/qml/qmlobserver/qmlruntime.cpp
@@ -64,7 +64,9 @@
 #include <qdeclarativenetworkaccessmanagerfactory.h>
 #include "qdeclarative.h"
 #include <QAbstractAnimation>
+#ifndef NO_PRIVATE_HEADERS
 #include <private/qabstractanimation_p.h>
+#endif
 
 #include <QSettings>
 #include <QXmlStreamReader>
@@ -104,6 +106,8 @@
 #include <QGLWidget>
 #endif
 
+#include <qt_private/qdeclarativedebughelper_p.h>
+
 #include <qdeclarativetester.h>
 #include "jsdebuggeragent.h"
 
@@ -737,6 +741,9 @@ void QDeclarativeViewer::createMenu()
     recordAction = new QAction(tr("Start Recording &Video"), this);
     recordAction->setShortcut(QKeySequence("F9"));
     connect(recordAction, SIGNAL(triggered()), this, SLOT(toggleRecordingWithSelection()));
+#ifdef NO_PRIVATE_HEADERS
+    recordAction->setEnabled(false);
+#endif
 
     QAction *recordOptions = new QAction(tr("Video &Options..."), this);
     connect(recordOptions, SIGNAL(triggered()), this, SLOT(chooseRecordingOptions()));
@@ -1001,6 +1008,7 @@ void QDeclarativeViewer::toggleRecordingWithSelection()
 
 void QDeclarativeViewer::toggleRecording()
 {
+#ifndef NO_PRIVATE_HEADERS
     if (record_file.isEmpty()) {
         toggleRecordingWithSelection();
         return;
@@ -1008,6 +1016,7 @@ void QDeclarativeViewer::toggleRecording()
     bool recording = !recordTimer.isActive();
     recordAction->setText(recording ? tr("&Stop Recording Video\tF9") : tr("&Start Recording Video\tF9"));
     setRecording(recording);
+#endif
 }
 
 void QDeclarativeViewer::setAnimationsPaused(bool enable)
@@ -1147,8 +1156,10 @@ bool QDeclarativeViewer::open(const QString& file_or_url)
         url = QUrl(file_or_url);
     setWindowTitle(tr("%1 - Qt QML Viewer").arg(file_or_url));
 
+#ifndef NO_PRIVATE_HEADERS
     if (!m_script.isEmpty())
         tester = new QDeclarativeTester(m_script, m_scriptOptions, canvas);
+#endif
 
     delete canvas->rootObject();
     canvas->engine()->clearComponentCache();
@@ -1295,8 +1306,10 @@ void QDeclarativeViewer::setRecording(bool on)
         return;
 
     int period = int(1000/record_rate+0.5);
+#ifndef NO_PRIVATE_HEADERS
     QUnifiedTimer::instance()->setTimingInterval(on ? period:16);
     QUnifiedTimer::instance()->setConsistentTiming(on);
+#endif
     if (on) {
         canvas->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
         recordTimer.setInterval(period);
@@ -1527,8 +1540,7 @@ void QDeclarativeViewer::setSizeToView(bool sizeToView)
 
 void QDeclarativeViewer::setAnimationSpeed(float f)
 {
-    QUnifiedTimer::instance()->setSlowdownFactor(f);
-    QUnifiedTimer::instance()->setSlowModeEnabled(f != 1.0);
+    QDeclarativeDebugHelper::setAnimationSlowDownFactor(f);
 }
 
 void QDeclarativeViewer::updateSizeHints(bool initial)
-- 
GitLab