diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-10-31 18:04:24 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2007-10-31 18:04:24 +0000 |
| commit | 86aac72c6547ae976059c1aee91059687ea65b8b (patch) | |
| tree | e9cacce658ec4dad6c235ee6f354232280fa4dd7 /lib/soundcore.cpp | |
| parent | 342ada45af81cba245abd9a2fb4a19b4974e93e4 (diff) | |
| download | qmmp-86aac72c6547ae976059c1aee91059687ea65b8b.tar.gz qmmp-86aac72c6547ae976059c1aee91059687ea65b8b.tar.bz2 qmmp-86aac72c6547ae976059c1aee91059687ea65b8b.zip | |
added visual plugin support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@171 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'lib/soundcore.cpp')
| -rw-r--r-- | lib/soundcore.cpp | 67 |
1 files changed, 63 insertions, 4 deletions
diff --git a/lib/soundcore.cpp b/lib/soundcore.cpp index d5aa0435d..05ab4b7bd 100644 --- a/lib/soundcore.cpp +++ b/lib/soundcore.cpp @@ -28,9 +28,13 @@ #include "soundcore.h" + +SoundCore *SoundCore::m_instance = 0; + SoundCore::SoundCore(QObject *parent) : QObject(parent) { + m_instance = this; m_decoder = 0; m_output = 0; m_input = 0; @@ -40,6 +44,7 @@ SoundCore::SoundCore(QObject *parent) m_block = FALSE; m_preamp = 0; m_vis = 0; + m_parentWidget = 0; for (int i = 1; i < 10; ++i) m_bands[i] = 0; m_error = NoError; @@ -101,11 +106,17 @@ bool SoundCore::play(const QString &source) m_error = DecoderError; - if (m_vis) + Visual *visual = 0; + foreach(visual, m_visuals) + m_output->addVisual(visual); + + VisualFactory* factory; + foreach(factory, *Visual::visualFactories()) { - m_vis->setOutput(m_output); - m_output->addVisual(m_vis); + if(Visual::isEnabled(factory)) + m_output->addVisual(factory, m_parentWidget); } + m_source = source; if (source.left(4) != "http") return decode(); @@ -182,6 +193,12 @@ void SoundCore::stop() { qWarning("SoundCore: unable to create output"); } + VisualFactory* factory; + foreach(factory, *Visual::visualFactories()) + { + if(Visual::isEnabled(factory)) + m_output->addVisual(factory, m_parentWidget); + } connect(m_output, SIGNAL(stateChanged(const OutputState&)), SIGNAL(outputStateChanged(const OutputState&))); } @@ -291,7 +308,12 @@ void SoundCore::updateConfig() void SoundCore::addVisualization(Visual *visual) { - m_vis = visual; + if (m_visuals.indexOf (visual) == -1) + { + m_visuals.append(visual); + if(m_output) + m_output->addVisual(visual); + } } bool SoundCore::decode() @@ -331,3 +353,40 @@ bool SoundCore::decode() m_block = FALSE; return FALSE; } + +void SoundCore::showVisualization(QWidget *parent) +{ + if (!m_parentWidget) + { + m_parentWidget = parent; + if(!m_output) + return; + VisualFactory* factory; + foreach(factory, *Visual::visualFactories()) + { + if(Visual::isEnabled(factory)) + m_output->addVisual(factory, m_parentWidget); + } + } +} + +void SoundCore::addVisual(VisualFactory *factory, QWidget *parent) +{ + if(m_output) + m_output->addVisual(factory, parent); + else + Visual::setEnabled(factory, TRUE); +} + +void SoundCore::removeVisual(VisualFactory *factory) +{ + if(m_output) + m_output->removeVisual(factory); + else + Visual::setEnabled(factory, FALSE); +} + +SoundCore* SoundCore::instance() +{ + return m_instance; +} |
