/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the tools applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** GNU Lesser General Public License Usage
** Alternatively, 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
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
**
**
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDECLARATIVEVIEWER_H
#define QDECLARATIVEVIEWER_H
#include <QMainWindow>
#include <QTimer>
#include <QTime>
#include <QList>
#include "loggerwidget.h"
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
};
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);
QDeclarativeView *view() const;
LoggerWidget *warningsWidget() const;
void enableExperimentalGestures();
public slots:
void sceneResized(QSize size);
bool open(const QString&);
void openFile();
void reload();
void takeSnapShot();
void toggleRecording();
void toggleRecordingWithSelection();
void ffmpegFinished(int code);
void showProxySettings ();
void proxySettingsChanged ();
void rotateOrientation();
void statusChanged();
void setSlowMode(bool);
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 showWarnings(bool show);
void warningsWidgetOpened();
void warningsWidgetClosed();
private:
void updateSizeHints(bool initial = false);
QString getVideoFileName();
LoggerWidget *loggerWindow;
QDeclarativeView *canvas;
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;
QString currentSkin;
bool scaleSkin;
RecordingDialog *recdlg;
void senseImageMagick();
void senseFfmpeg();
QWidget *ffmpegHelpWindow;
bool ffmpegAvailable;
bool convertAvailable;
QActionGroup *orientation;
QAction *showWarningsWindow;
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