From 5eefb835896d18591427fbaf1f6f89a969101f92 Mon Sep 17 00:00:00 2001 From: Jonas Rabbe Date: Wed, 4 Apr 2012 14:22:06 +1000 Subject: Added typeinfo for audio engine QML imports that load from a plugin need to have typeinfo so that Qt Creator can do inline type checking and code completion. Also adds convenience make target for updating the typeinfo. Change-Id: I4c3a93bf8b8925032c0d03c99df277280f03376e Reviewed-by: Mithra Pattison Reviewed-by: Jonas Rabbe --- src/imports/audioengine/audioengine.pro | 24 +++- src/imports/audioengine/plugins.qmltypes | 236 +++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 src/imports/audioengine/plugins.qmltypes diff --git a/src/imports/audioengine/audioengine.pro b/src/imports/audioengine/audioengine.pro index 72c7ae845..c15576447 100644 --- a/src/imports/audioengine/audioengine.pro +++ b/src/imports/audioengine/audioengine.pro @@ -45,7 +45,29 @@ SOURCES += \ qsoundsource_openal_p.cpp \ qaudioengine_openal_p.cpp -qmldir.files += $$PWD/qmldir +# plugin.qmltypes is used by Qt Creator for syntax highlighting and the QML code model. It needs +# to be regenerated whenever the QML elements exported by the plugin change. This cannot be done +# automatically at compile time because qmlplugindump does not support some QML features and it may +# not be possible when cross-compiling. +# +# To regenerate run 'make qmltypes' which will update the plugins.qmltypes file in the source +# directory. Then review and commit the changes made to plugins.qmltypes. +# +# This will run the following command: +# qmlplugindump > plugins.qmltypes +# e.g.: +# qmlplugindump QtAudioEngine 5.0 imports/QtAudioEngine/libdeclarative_audioengine.so > plugins.qmltypes + +load(resolve_target) +qmltypes.target = qmltypes +qmltypes.commands = $$[QT_INSTALL_BINS]/qmlplugindump QtAudioEngine 1.0 $$QMAKE_RESOLVED_TARGET > $$PWD/plugins.qmltypes +qmltypes.depends = $$QMAKE_RESOLVED_TARGET +QMAKE_EXTRA_TARGETS += qmltypes + +# Tell qmake to create such makefile that qmldir, plugins.qmltypes and target +# (i.e. declarative_audioengine) are all copied to $$[QT_INSTALL_IMPORTS]/QtAudioEngine directory, + +qmldir.files += $$PWD/qmldir $$PWD/plugins.qmltypes qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH INSTALLS += target qmldir diff --git a/src/imports/audioengine/plugins.qmltypes b/src/imports/audioengine/plugins.qmltypes new file mode 100644 index 000000000..6a7dae1a4 --- /dev/null +++ b/src/imports/audioengine/plugins.qmltypes @@ -0,0 +1,236 @@ +import QtQuick.tooling 1.1 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. + +Module { + Component { + name: "QDeclarativeAttenuationModel" + prototype: "QObject" + Property { name: "name"; type: "string" } + } + Component { + name: "QDeclarativeAttenuationModelInverse" + prototype: "QDeclarativeAttenuationModel" + exports: ["AttenuationModelInverse 1.0"] + Property { name: "start"; type: "qreal" } + Property { name: "end"; type: "qreal" } + Property { name: "rolloff"; type: "qreal" } + } + Component { + name: "QDeclarativeAttenuationModelLinear" + prototype: "QDeclarativeAttenuationModel" + exports: ["AttenuationModelLinear 1.0"] + Property { name: "start"; type: "qreal" } + Property { name: "end"; type: "qreal" } + } + Component { + name: "QDeclarativeAudioCategory" + prototype: "QObject" + exports: ["AudioCategory 1.0"] + Property { name: "volume"; type: "qreal" } + Property { name: "name"; type: "string" } + Signal { + name: "volumeChanged" + Parameter { name: "newVolume"; type: "qreal" } + } + Signal { name: "stopped" } + Signal { name: "paused" } + Signal { name: "resumed" } + Method { name: "stop" } + Method { name: "pause" } + Method { name: "resume" } + } + Component { + name: "QDeclarativeAudioEngine" + defaultProperty: "bank" + prototype: "QObject" + exports: ["AudioEngine 1.0"] + Property { name: "bank"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "categories"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "samples"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "sounds"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "loading"; type: "bool"; isReadonly: true } + Property { name: "liveInstances"; type: "int"; isReadonly: true } + Property { + name: "listener" + type: "QDeclarativeAudioListener" + isReadonly: true + isPointer: true + } + Property { name: "dopplerFactor"; type: "qreal" } + Property { name: "speedOfSound"; type: "qreal" } + Signal { name: "ready" } + Signal { name: "liveInstanceCountChanged" } + Signal { name: "isLoadingChanged" } + Signal { name: "finishedLoading" } + } + Component { + name: "QDeclarativeAudioListener" + prototype: "QObject" + exports: ["AudioListener 1.0"] + Property { name: "engine"; type: "QDeclarativeAudioEngine"; isPointer: true } + Property { name: "position"; type: "QVector3D" } + Property { name: "direction"; type: "QVector3D" } + Property { name: "velocity"; type: "QVector3D" } + Property { name: "up"; type: "QVector3D" } + Property { name: "gain"; type: "qreal" } + } + Component { + name: "QDeclarativeAudioSample" + prototype: "QObject" + exports: ["AudioSample 1.0"] + Property { name: "name"; type: "string" } + Property { name: "source"; type: "QUrl" } + Property { name: "preloaded"; type: "bool" } + Property { name: "streaming"; type: "bool" } + Property { name: "loaded"; type: "bool"; isReadonly: true } + Method { name: "load" } + } + Component { + name: "QDeclarativePlayVariation" + prototype: "QObject" + exports: ["PlayVariation 1.0"] + Property { name: "sample"; type: "string" } + Property { name: "looping"; type: "bool" } + Property { name: "maxGain"; type: "qreal" } + Property { name: "minGain"; type: "qreal" } + Property { name: "maxPitch"; type: "qreal" } + Property { name: "minPitch"; type: "qreal" } + } + Component { + name: "QDeclarativeSound" + defaultProperty: "playVariationlist" + prototype: "QObject" + exports: ["Sound 1.0"] + Enum { + name: "PlayType" + values: { + "Random": 0, + "Sequential": 1 + } + } + Property { name: "name"; type: "string" } + Property { name: "playType"; type: "PlayType" } + Property { name: "category"; type: "string" } + Property { name: "cone"; type: "QDeclarativeSoundCone"; isReadonly: true; isPointer: true } + Property { name: "attenuationModel"; type: "string" } + Property { + name: "playVariationlist" + type: "QDeclarativePlayVariation" + isList: true + isReadonly: true + } + Method { name: "play" } + Method { + name: "play" + Parameter { name: "gain"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "gain"; type: "qreal" } + Parameter { name: "pitch"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + Parameter { name: "direction"; type: "QVector3D" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + Parameter { name: "direction"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + Parameter { name: "pitch"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + Parameter { name: "pitch"; type: "qreal" } + } + Method { + name: "play" + Parameter { name: "position"; type: "QVector3D" } + Parameter { name: "velocity"; type: "QVector3D" } + Parameter { name: "direction"; type: "QVector3D" } + Parameter { name: "gain"; type: "qreal" } + Parameter { name: "pitch"; type: "qreal" } + } + Method { name: "newInstance"; type: "QDeclarativeSoundInstance*" } + } + Component { + name: "QDeclarativeSoundCone" + prototype: "QObject" + exports: [" 1.0"] + Property { name: "innerAngle"; type: "qreal" } + Property { name: "outerAngle"; type: "qreal" } + Property { name: "outerGain"; type: "qreal" } + } + Component { + name: "QDeclarativeSoundInstance" + prototype: "QObject" + exports: ["SoundInstance 1.0"] + Enum { + name: "State" + values: { + "StopppedState": 0, + "PlayingState": 1, + "PausedState": 2 + } + } + Property { name: "engine"; type: "QDeclarativeAudioEngine"; isPointer: true } + Property { name: "sound"; type: "string" } + Property { name: "state"; type: "State"; isReadonly: true } + Property { name: "position"; type: "QVector3D" } + Property { name: "direction"; type: "QVector3D" } + Property { name: "velocity"; type: "QVector3D" } + Property { name: "gain"; type: "qreal" } + Property { name: "pitch"; type: "qreal" } + Method { name: "play" } + Method { name: "stop" } + Method { name: "pause" } + Method { + name: "updatePosition" + Parameter { name: "deltaTime"; type: "qreal" } + } + } + Component { + name: "QQmlPropertyMap" + prototype: "QObject" + Signal { + name: "valueChanged" + Parameter { name: "key"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { name: "keys"; type: "QStringList" } + } +} -- cgit v1.2.3