Files
qt-creator/share/qtcreator/qml/qmlobserver/qmlruntime.h

217 lines
5.9 KiB
C
Raw Normal View History

2011-04-13 08:42:33 +02:00
/**************************************************************************
**
2011-04-13 08:42:33 +02:00
** This file is part of Qt Creator
**
2011-04-13 08:42:33 +02:00
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
**
2011-04-13 08:42:33 +02:00
** Contact: Nokia Corporation (info@qt.nokia.com)
**
** GNU Lesser General Public License Usage
2011-04-13 08:42:33 +02:00
**
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this file.
** Please review the following information to ensure the GNU Lesser General
** Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
2011-04-13 08:42:33 +02:00
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
2011-04-13 08:42:33 +02:00
** Other Usage
**
2011-04-13 08:42:33 +02:00
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
2011-04-13 08:42:33 +02:00
** If you have questions regarding the use of this file, please contact
** Nokia at info@qt.nokia.com.
**
2011-04-13 08:42:33 +02:00
**************************************************************************/
#ifndef QDECLARATIVEVIEWER_H
#define QDECLARATIVEVIEWER_H
#include <QtGui/QMainWindow>
#include <QtCore/QTimer>
#include <QtCore/QTime>
#include <QtCore/QList>
#include "loggerwidget.h"
namespace QmlJSDebugger {
class QDeclarativeViewInspector;
}
QT_BEGIN_NAMESPACE
class QDeclarativeView;
class PreviewDeviceSkin;
class QDeclarativeTestEngine;
class QProcess;
class RecordingDialog;
class QDeclarativeTester;
class QNetworkReply;
class QNetworkCookieJar;
class NetworkAccessManagerFactory;
class QTranslator;
class QActionGroup;
class QMenuBar;
class QDeclarativeViewer
: public QMainWindow
{
Q_OBJECT
public:
QDeclarativeViewer(QWidget *parent = 0, Qt::WindowFlags flags = 0);
~QDeclarativeViewer();
static void registerTypes();
enum ScriptOption {
Play = 0x00000001,
Record = 0x00000002,
TestImages = 0x00000004,
TestErrorProperty = 0x00000008,
SaveOnExit = 0x00000010,
ExitOnComplete = 0x00000020,
ExitOnFailure = 0x00000040,
Snapshot = 0x00000080,
TestSkipProperty = 0x00000100
};
Q_DECLARE_FLAGS(ScriptOptions, ScriptOption)
void setScript(const QString &s) { m_script = s; }
void setScriptOptions(ScriptOptions opt) { m_scriptOptions = opt; }
void setRecordDither(const QString& s) { record_dither = s; }
void setRecordRate(int fps);
void setRecordFile(const QString&);
void setRecordArgs(const QStringList&);
void setRecording(bool on);
bool isRecording() const { return recordTimer.isActive(); }
void setAutoRecord(int from, int to);
void setDeviceKeys(bool);
void setNetworkCacheSize(int size);
void addLibraryPath(const QString& lib);
void addPluginPath(const QString& plugin);
void setUseGL(bool use);
void setUseNativeFileBrowser(bool);
void setSizeToView(bool sizeToView);
void setStayOnTop(bool stayOnTop);
QDeclarativeView *view() const;
LoggerWidget *warningsWidget() const;
QString currentFile() const { return currentFileOrUrl; }
void enableExperimentalGestures();
public slots:
void setDesignModeBehavior(bool value);
void sceneResized(QSize size);
bool open(const QString&);
void openFile();
void openUrl();
void reload();
void takeSnapShot();
void toggleRecording();
void toggleRecordingWithSelection();
void ffmpegFinished(int code);
void showProxySettings ();
void proxySettingsChanged ();
void rotateOrientation();
void statusChanged();
void pauseAnimations();
void stepAnimations();
void setAnimationStep();
void changeAnimationSpeed();
void launch(const QString &);
protected:
virtual void keyPressEvent(QKeyEvent *);
virtual bool event(QEvent *);
void createMenu();
private slots:
void appAboutToQuit();
void autoStartRecording();
void autoStopRecording();
void recordFrame();
void chooseRecordingOptions();
void pickRecordingFile();
void toggleFullScreen();
void changeOrientation(QAction*);
void orientationChanged();
void animationSpeedChanged(qreal factor);
void showWarnings(bool show);
void warningsWidgetOpened();
void warningsWidgetClosed();
private:
void updateSizeHints(bool initial = false);
QString getVideoFileName();
LoggerWidget *loggerWindow;
QDeclarativeView *canvas;
QmlJSDebugger::QDeclarativeViewInspector *inspector;
QSize initialSize;
QString currentFileOrUrl;
QTimer recordTimer;
QString frame_fmt;
QImage frame;
QList<QImage*> frames;
QProcess* frame_stream;
QTimer autoStartTimer;
QTimer autoStopTimer;
QString record_dither;
QString record_file;
QSize record_outsize;
QStringList record_args;
int record_rate;
int record_autotime;
bool devicemode;
QAction *recordAction;
RecordingDialog *recdlg;
void senseImageMagick();
void senseFfmpeg();
QWidget *ffmpegHelpWindow;
bool ffmpegAvailable;
bool convertAvailable;
int m_stepSize;
QActionGroup *playSpeedMenuActions;
QAction *pauseAnimationsAction;
QAction *animationStepAction;
QAction *animationSetStepAction;
QAction *rotateAction;
QActionGroup *orientation;
QAction *showWarningsWindow;
QAction *designModeBehaviorAction;
QAction *appOnTopAction;
QString m_script;
ScriptOptions m_scriptOptions;
QDeclarativeTester *tester;
QNetworkReply *wgtreply;
QString wgtdir;
NetworkAccessManagerFactory *namFactory;
bool useQmlFileBrowser;
QTranslator *translator;
void loadTranslationFile(const QString& directory);
void loadDummyDataFiles(const QString& directory);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativeViewer::ScriptOptions)
QT_END_NAMESPACE
#endif