aboutsummaryrefslogtreecommitdiff
path: root/lib/soundcore.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2007-10-31 18:04:24 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2007-10-31 18:04:24 +0000
commit86aac72c6547ae976059c1aee91059687ea65b8b (patch)
treee9cacce658ec4dad6c235ee6f354232280fa4dd7 /lib/soundcore.cpp
parent342ada45af81cba245abd9a2fb4a19b4974e93e4 (diff)
downloadqmmp-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.cpp67
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;
+}