summaryrefslogtreecommitdiffstats
path: root/noatun/library/equalizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'noatun/library/equalizer.cpp')
-rw-r--r--noatun/library/equalizer.cpp339
1 files changed, 339 insertions, 0 deletions
diff --git a/noatun/library/equalizer.cpp b/noatun/library/equalizer.cpp
new file mode 100644
index 00000000..2ee208db
--- /dev/null
+++ b/noatun/library/equalizer.cpp
@@ -0,0 +1,339 @@
+#include "equalizer.h"
+#include "engine.h"
+#include <common.h>
+#include <dynamicrequest.h>
+#include <artsflow.h>
+#include <app.h>
+#include <player.h>
+#include <soundserver.h>
+#include <noatunarts.h>
+#include <ktempfile.h>
+#include <qdom.h>
+#include <kio/netaccess.h>
+#include <kstandarddirs.h>
+#include <qtextstream.h>
+#include <math.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include "ksaver.h"
+
+#define EQ napp->equalizer()
+#define VEQ napp->vequalizer()
+
+struct OldEqCruft
+{
+ VInterpolation *interpolated;
+
+};
+
+static OldEqCruft *eqCruft=0;
+
+Preset::Preset(const QString &)
+{ } // unused
+
+Preset::Preset(VPreset p)
+{
+ VPreset *copy = new VPreset(p);
+
+ // isn't this horrible? :)
+ mFile = QString::number((unsigned long)copy);
+}
+
+Preset::Preset()
+{ } // unused
+
+VPreset &Preset::vpreset() const
+{
+ unsigned long addr = mFile.toULong();
+ return *(VPreset*)addr;
+}
+
+QString Preset::name() const
+{
+ return vpreset().name();
+}
+
+bool Preset::setName(const QString &name)
+{
+ return vpreset().setName(name);
+}
+
+bool Preset::save() const
+{
+ vpreset().save();
+ return true;
+}
+
+bool Preset::load()
+{
+ vpreset().load();
+ return true;
+}
+
+void Preset::remove()
+{
+ vpreset().remove();
+}
+
+QString Preset::file() const
+{
+ return vpreset().file();
+}
+
+
+Band::Band(int, int)
+{
+ // Never used
+}
+
+Band::Band(int num)
+ : mNum(num)
+{
+
+}
+
+Band::~Band()
+{}
+
+int Band::level()
+{
+ return eqCruft->interpolated->band(mNum).level();
+}
+
+void Band::setLevel(int l)
+{
+ eqCruft->interpolated->band(mNum).setLevel(l);
+}
+
+int Band::start() const
+{
+ return eqCruft->interpolated->band(mNum).start();
+}
+
+int Band::end() const
+{
+ return eqCruft->interpolated->band(mNum).end();
+}
+
+int Band::center() const
+{
+ return eqCruft->interpolated->band(mNum).center();
+}
+
+QString Band::formatStart(bool withHz) const
+{
+ return eqCruft->interpolated->band(mNum).formatStart(withHz);
+}
+
+QString Band::formatEnd(bool withHz) const
+{
+ return eqCruft->interpolated->band(mNum).formatEnd(withHz);
+}
+
+QString Band::format(bool withHz) const
+{
+ return eqCruft->interpolated->band(mNum).format(withHz);
+}
+
+
+Equalizer::Equalizer()
+{
+}
+
+Equalizer::~Equalizer()
+{
+ delete eqCruft->interpolated;
+ delete eqCruft;
+
+// save(napp->dirs()->saveLocation("data", "noatun/") + "equalizer", "auto");
+ for (Band *i=mBands.first(); i!=0; i=mBands.next())
+ delete i;
+}
+
+
+void Equalizer::init()
+{
+ // must be called after VEqualizer::init
+ eqCruft = new OldEqCruft;
+ eqCruft->interpolated = new VInterpolation(6);
+
+ mBands.append(new Band(0));
+ mBands.append(new Band(1));
+ mBands.append(new Band(2));
+ mBands.append(new Band(3));
+ mBands.append(new Band(4));
+ mBands.append(new Band(5));
+
+ connect(VEQ, SIGNAL(changed()), SIGNAL(changed()));
+
+ connect(VEQ, SIGNAL(created(VPreset)), SLOT(created(VPreset)));
+ connect(VEQ, SIGNAL(selected(VPreset)), SLOT(selected(VPreset)));
+ connect(VEQ, SIGNAL(renamed(VPreset)), SLOT(renamed(VPreset)));
+ connect(VEQ, SIGNAL(removed(VPreset)), SLOT(removed(VPreset)));
+
+ connect(VEQ, SIGNAL(enabled()), SIGNAL(enabled()));
+ connect(VEQ, SIGNAL(disabled()), SIGNAL(disabled()));
+ connect(VEQ, SIGNAL(enabled(bool)), SIGNAL(enabled(bool)));
+
+ connect(VEQ, SIGNAL(preampChanged(int)), SIGNAL(preampChanged(int)));
+ connect(VEQ, SIGNAL(preampChanged(int)), SIGNAL(preampChanged(int)));
+}
+
+void Equalizer::created(VPreset preset)
+{
+ Preset *p = new Preset(preset);
+ emit created(p);
+ delete p;
+}
+
+void Equalizer::selected(VPreset preset)
+{
+ Preset *p = new Preset(preset);
+ emit changed(p);
+ delete p;
+}
+
+void Equalizer::renamed(VPreset preset)
+{
+ Preset *p = new Preset(preset);
+ emit renamed(p);
+ delete p;
+}
+
+void Equalizer::removed(VPreset preset)
+{
+ Preset *p = new Preset(preset);
+ emit removed(p);
+ delete p;
+}
+
+QPtrList<Preset> Equalizer::presets() const
+{
+ QValueList<VPreset> presets = VEQ->presets();
+ QPtrList<Preset> list;
+ for (
+ QValueList<VPreset>::Iterator i(presets.begin());
+ i != presets.end(); ++i
+ )
+ {
+ list.append(new Preset(*i));
+ }
+ return list;
+}
+
+Preset *Equalizer::preset(const QString &file)
+{
+ VPreset p = VEQ->presetByFile(file);
+ if (!p) return 0;
+ return new Preset(p);
+}
+
+bool Equalizer::presetExists(const QString &name) const
+{
+ return VEQ->presetExists(name);
+}
+
+Preset *Equalizer::createPreset(const QString &name, bool smart)
+{
+ VPreset p = VEQ->createPreset(name, smart);
+ if (!p) return 0;
+ return new Preset(p);
+}
+
+const QPtrList<Band> &Equalizer::bands() const
+{
+ return mBands;
+}
+
+Band *Equalizer::band(int num) const
+{
+ // can't use QPtrList::at since it sets current
+
+ QPtrListIterator<Band> item(mBands);
+ item+=(unsigned int)num;
+ return *item;
+}
+
+int Equalizer::bandCount() const
+{
+ return 6; // hmm ;)
+}
+
+int Equalizer::preamp() const
+{
+ return VEQ->preamp();
+}
+
+bool Equalizer::isEnabled() const
+{
+ return VEQ->isEnabled();
+
+}
+
+void Equalizer::setPreamp(int p)
+{
+ VEQ->setPreamp(p);
+}
+
+void Equalizer::enable()
+{
+ setEnabled(true);
+}
+
+void Equalizer::disable()
+{
+ setEnabled(false);
+}
+
+void Equalizer::setEnabled(bool e)
+{
+ VEQ->setEnabled(e);
+}
+
+QString Equalizer::toString(const QString &name) const
+{
+ return VEQ->toString(name);
+}
+
+bool Equalizer::fromString(const QString &str)
+{
+ return VEQ->fromString(str);
+}
+
+bool Equalizer::save(const KURL &filename, const QString &name) const
+{
+ return VEQ->save(filename, name);
+}
+
+
+
+bool Equalizer::load(const KURL &filename)
+{
+ return VEQ->load(filename);
+}
+
+void Equalizer::add(Band *)
+{
+ // should never be called
+}
+
+void Equalizer::remove(Band *)
+{
+ // should never be called
+}
+
+void Equalizer::update(bool)
+{
+ // should never be called
+}
+
+void Equalizer::enableUpdates(bool)
+{
+ // should never be called
+}
+
+#undef EQ
+#undef EQBACK
+
+#include "equalizer.moc"
+