From 56b91df6010a9f3d304438cf95816399a6e46622 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 4 Aug 2008 23:06:44 +0000 Subject: [FIX] SoundUI widget has a better layout [FIX] Sound playback works in SoundUI [FIX] SoundWrapper returns a Phonon object for playback in scripts now [FIX] Wrapper classes now won't be duplicated (persistent storage is possible now) [FIX] Linking to libraries is fixed for RPM [FIX] Pokemod Macros.h is hidden if not compiling pokemod [FIX] make-tarball script is simpler now (and works as upstream, not local copy) [FIX] Cleaned up spec file per review request for Fedora git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@236 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokescripting/SoundWrapper.h | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'pokescripting/SoundWrapper.h') diff --git a/pokescripting/SoundWrapper.h b/pokescripting/SoundWrapper.h index 683cca13..9f7f7eec 100644 --- a/pokescripting/SoundWrapper.h +++ b/pokescripting/SoundWrapper.h @@ -24,6 +24,13 @@ // Pokemod includes #include "../pokemod/Sound.h" +// Qt includes +#include + +// Phonon includes +#include +#include + namespace Pokescripting { class POKESCRIPTING_EXPORT SoundWrapper : public ObjectWrapper @@ -31,11 +38,17 @@ class POKESCRIPTING_EXPORT SoundWrapper : public ObjectWrapper Q_OBJECT public: - SoundWrapper(const Pokemod::Sound* sound, QObject* parent); + static SoundWrapper* create(const Pokemod::Sound* sound, QObject* parent) + { + if (!m_instances.contains(sound->id())) + m_instances[sound->id()] = new SoundWrapper(sound, parent); + return qobject_cast(m_instances[sound->id()]); + } public slots: QString name() const; - // TODO: Get audio data from it + Phonon::MediaObject* data(); private: + SoundWrapper(const Pokemod::Sound* sound, QObject* parent); SoundWrapper& operator=(const SoundWrapper& rhs); const Pokemod::Sound* m_sound; @@ -52,6 +65,15 @@ inline QString SoundWrapper::name() const return m_sound->name(); } +inline Phonon::MediaObject* SoundWrapper::data() +{ + Phonon::MediaObject* media = new Phonon::MediaObject(this); + QBuffer* buffer = new QBuffer(media); + buffer->setData(m_sound->data()); + media->setCurrentSource(buffer); + return media; +} + } #endif -- cgit