diff options
| -rw-r--r-- | src/plugins/Effect/bs2b/bs2bplugin.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Effect/bs2b/bs2bplugin.h | 3 | ||||
| -rw-r--r-- | src/plugins/Effect/bs2b/effectbs2bfactory.cpp | 14 | ||||
| -rw-r--r-- | src/plugins/Effect/bs2b/effectbs2bfactory.h | 4 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/effectladspafactory.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/effectladspafactory.h | 2 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspaplugin.cpp | 57 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/ladspaplugin.h | 23 | ||||
| -rw-r--r-- | src/plugins/Effect/ladspa/settingsdialog.cpp | 35 | ||||
| -rw-r--r-- | src/plugins/Effect/srconverter/effectsrconverterfactory.cpp | 16 | ||||
| -rw-r--r-- | src/plugins/Effect/srconverter/effectsrconverterfactory.h | 6 | ||||
| -rw-r--r-- | src/plugins/Effect/srconverter/srconverter.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Effect/srconverter/srconverter.h | 10 | ||||
| -rw-r--r-- | src/qmmp/effect.cpp | 9 | ||||
| -rw-r--r-- | src/qmmp/effect.h | 10 | ||||
| -rw-r--r-- | src/qmmp/effectfactory.h | 3 | ||||
| -rw-r--r-- | src/qmmp/qmmpaudioengine.cpp | 3 |
17 files changed, 104 insertions, 99 deletions
diff --git a/src/plugins/Effect/bs2b/bs2bplugin.cpp b/src/plugins/Effect/bs2b/bs2bplugin.cpp index 45785e921..d2ced9bb9 100644 --- a/src/plugins/Effect/bs2b/bs2bplugin.cpp +++ b/src/plugins/Effect/bs2b/bs2bplugin.cpp @@ -26,7 +26,7 @@ Bs2bPlugin *Bs2bPlugin::m_instance = 0; -Bs2bPlugin::Bs2bPlugin(QObject* parent) : Effect(parent) +Bs2bPlugin::Bs2bPlugin() : Effect() { m_instance = this; m_bs2b_handler = bs2b_open(); diff --git a/src/plugins/Effect/bs2b/bs2bplugin.h b/src/plugins/Effect/bs2b/bs2bplugin.h index 02590d157..93ad482bb 100644 --- a/src/plugins/Effect/bs2b/bs2bplugin.h +++ b/src/plugins/Effect/bs2b/bs2bplugin.h @@ -30,9 +30,8 @@ class Bs2bPlugin : public Effect { - Q_OBJECT public: - Bs2bPlugin(QObject *parent = 0); + Bs2bPlugin(); virtual ~Bs2bPlugin(); diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.cpp b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp index 037aa7b2f..3a61184b2 100644 --- a/src/plugins/Effect/bs2b/effectbs2bfactory.cpp +++ b/src/plugins/Effect/bs2b/effectbs2bfactory.cpp @@ -33,18 +33,18 @@ const EffectProperties EffectBs2bFactory::properties() const properties.hasSettings = TRUE; properties.hasAbout = TRUE; return properties; -}; +} -Effect *EffectBs2bFactory::create(QObject *parent) +Effect *EffectBs2bFactory::create() { - return new Bs2bPlugin(parent); -}; + return new Bs2bPlugin(); +} void EffectBs2bFactory::showSettings(QWidget *parent) { SettingsDialog *s = new SettingsDialog(parent); s ->show(); -}; +} void EffectBs2bFactory::showAbout(QWidget *parent) { @@ -57,7 +57,7 @@ void EffectBs2bFactory::showAbout(QWidget *parent) "<p>"+tr("Developers:")+"<br>"+ tr("Ilya Kotov") + " <forkotov02@hotmail.ru>"+"<br>"+ tr("Sebastian Pipping") + " <sebastian@pipping.org>"+"</p>"); -}; +} QTranslator *EffectBs2bFactory::createTranslator(QObject *parent) { @@ -65,6 +65,6 @@ QTranslator *EffectBs2bFactory::createTranslator(QObject *parent) QString locale = Qmmp::systemLanguageID(); translator->load(QString(":/bs2b_plugin_") + locale); return translator; -}; +} Q_EXPORT_PLUGIN2(bs2b,EffectBs2bFactory) diff --git a/src/plugins/Effect/bs2b/effectbs2bfactory.h b/src/plugins/Effect/bs2b/effectbs2bfactory.h index 231315605..72b7fa9b4 100644 --- a/src/plugins/Effect/bs2b/effectbs2bfactory.h +++ b/src/plugins/Effect/bs2b/effectbs2bfactory.h @@ -20,9 +20,7 @@ #ifndef EFFECTBS2BFACTORY_H #define EFFECTBS2BFACTORY_H - #include <QObject> - #include <qmmp/effectfactory.h> #include <qmmp/effect.h> @@ -36,7 +34,7 @@ Q_INTERFACES(EffectFactory); public: const EffectProperties properties() const; - Effect *create(QObject *parent); + Effect *create(); void showSettings(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/Effect/ladspa/effectladspafactory.cpp b/src/plugins/Effect/ladspa/effectladspafactory.cpp index c2536969b..6c517408f 100644 --- a/src/plugins/Effect/ladspa/effectladspafactory.cpp +++ b/src/plugins/Effect/ladspa/effectladspafactory.cpp @@ -34,9 +34,9 @@ const EffectProperties EffectLADSPAFactory::properties() const return properties; } -Effect *EffectLADSPAFactory::create(QObject *parent) +Effect *EffectLADSPAFactory::create() { - return new LADSPAHost(parent); + return new LADSPAHost(); } void EffectLADSPAFactory::showSettings(QWidget *parent) diff --git a/src/plugins/Effect/ladspa/effectladspafactory.h b/src/plugins/Effect/ladspa/effectladspafactory.h index 9a9c5f184..80714d5e4 100644 --- a/src/plugins/Effect/ladspa/effectladspafactory.h +++ b/src/plugins/Effect/ladspa/effectladspafactory.h @@ -34,7 +34,7 @@ Q_INTERFACES(EffectFactory); public: const EffectProperties properties() const; - Effect *create(QObject *parent); + Effect *create(); void showSettings(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/Effect/ladspa/ladspaplugin.cpp b/src/plugins/Effect/ladspa/ladspaplugin.cpp index 99392a5d0..bef363397 100644 --- a/src/plugins/Effect/ladspa/ladspaplugin.cpp +++ b/src/plugins/Effect/ladspa/ladspaplugin.cpp @@ -22,13 +22,10 @@ #include <QByteArray> #include <QDir> #include <QFileInfo> -#include <QFormLayout> -#include <QWidget> #include <math.h> #include <stdlib.h> #include <dlfcn.h> #include <qmmp/qmmp.h> -#include "ladspaslider.h" #include "ladspaplugin.h" #ifndef PATH_MAX @@ -40,7 +37,7 @@ LADSPAHost *LADSPAHost::m_instance = 0; -LADSPAHost::LADSPAHost(QObject* parent) : Effect(parent) +LADSPAHost::LADSPAHost() : Effect() { m_instance = this; findAllPlugins(); @@ -366,42 +363,34 @@ LADSPAEffect *LADSPAHost::addPlugin(LADSPAPlugin *plugin) instance->stereo = plugin->stereo; if (channels() && sampleRate()) bootPlugin(instance); - draw_plugin(instance); + initialize(instance); m_effects.append(instance); return instance; } -void LADSPAHost::draw_plugin(LADSPAEffect *instance) +void LADSPAHost::initialize(LADSPAEffect *instance) { const LADSPA_Descriptor *plugin = instance->descriptor; const LADSPA_PortRangeHint *hints = plugin->PortRangeHints; LADSPA_Data fact, min, max, step, start; int dp; - unsigned long k; - bool no_ui = TRUE; - QWidget *widget = new QWidget(); - QFormLayout *formLayout = new QFormLayout(widget); - widget->setLayout(formLayout); - - for (k = 0; k < MAX_KNOBS && k < plugin->PortCount; ++k) + for (unsigned long k = 0; k < MAX_KNOBS && k < plugin->PortCount; ++k) { if (!LADSPA_IS_PORT_CONTROL(plugin->PortDescriptors[k])) continue; - no_ui = FALSE; - //hbox = gtk_hbox_new(FALSE, 3); - //widget = gtk_label_new(plugin->PortNames[k]); - //gtk_container_add(GTK_CONTAINER(hbox), widget); + + LADSPAControl *c = new LADSPAControl; + c->name = QString(plugin->PortNames[k]); if (LADSPA_IS_HINT_TOGGLED(hints[k].HintDescriptor)) { - /*widget = gtk_toggle_button_new_with_label("Press"); - g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(toggled), &(instance->knobs[k])); - gtk_container_add(GTK_CONTAINER(hbox), widget); - gtk_container_add(GTK_CONTAINER(vbox), hbox);*/ - - - //formLayout->addRow(plugin->PortNames[k], slider); + c->type = LADSPAControl::BUTTON; + c->min = 0; + c->max = 0; + c->step = 0; + c->value = &instance->knobs[k]; + instance->controls << c; continue; } @@ -488,19 +477,11 @@ void LADSPAHost::draw_plugin(LADSPAEffect *instance) start = min * 0.5f + max * 0.5f; instance->knobs[k] = start; - LADSPASlider *slider = new LADSPASlider(min, max, step, &instance->knobs[k], this, widget); - - //slider->setEnabled(!LADSPA_IS_PORT_OUTPUT(plugin->PortDescriptors[k])); - - formLayout->addRow(plugin->PortNames[k], slider); + c->type = LADSPAControl::SLIDER; + c->min = min; + c->max = max; + c->step = step; + c->value = &instance->knobs[k]; + instance->controls << c; } - widget->setLayout(formLayout); - widget->setFixedSize(widget->sizeHint()); - instance->widget = widget; - - /*if (no_ui) - { - widget = gtk_label_new(_("This LADSPA plugin has no user controls")); - gtk_container_add(GTK_CONTAINER(vbox), widget); - }*/ } diff --git a/src/plugins/Effect/ladspa/ladspaplugin.h b/src/plugins/Effect/ladspa/ladspaplugin.h index c8d61acb7..fa9b0200e 100644 --- a/src/plugins/Effect/ladspa/ladspaplugin.h +++ b/src/plugins/Effect/ladspa/ladspaplugin.h @@ -45,6 +45,22 @@ public: bool stereo; }; +class LADSPAControl +{ +public: + enum Type + { + BUTTON = 0, + SLIDER + }; + double min; + double max; + double step; + LADSPA_Data *value; + bool type; + QString name; +}; + class LADSPAEffect { public: @@ -55,15 +71,14 @@ public: LADSPA_Handle handle; /* left or mono */ LADSPA_Handle handle2; /* right stereo */ LADSPA_Data knobs[MAX_KNOBS]; - QWidget *widget; + QList <LADSPAControl*> controls; }; class LADSPAHost : public Effect { - Q_OBJECT public: - LADSPAHost(QObject *parent = 0); + LADSPAHost(); virtual ~LADSPAHost(); @@ -84,7 +99,7 @@ private: void findPlugins(const QString &path); LADSPAEffect *load(const QString &path, long num); void portAssign(LADSPAEffect *instance); - void draw_plugin(LADSPAEffect *instance); + void initialize(LADSPAEffect *instance); QList <LADSPAPlugin *> m_plugins; QList <LADSPAEffect *> m_effects; diff --git a/src/plugins/Effect/ladspa/settingsdialog.cpp b/src/plugins/Effect/ladspa/settingsdialog.cpp index 4d0c33a6f..e4d78a698 100644 --- a/src/plugins/Effect/ladspa/settingsdialog.cpp +++ b/src/plugins/Effect/ladspa/settingsdialog.cpp @@ -22,7 +22,11 @@ #include <QApplication> #include <QStyle> #include <QStandardItemModel> +#include <QFormLayout> +#include <QWidget> +#include <QLabel> #include <qmmp/qmmp.h> +#include "ladspaslider.h" #include "ladspaplugin.h" #include "settingsdialog.h" @@ -90,13 +94,34 @@ void SettingsDialog::on_configureButton_clicked() { LADSPAHost *l = LADSPAHost::instance(); QModelIndex index = ui.runningListWidget->currentIndex (); - if(index.isValid()) + if(!index.isValid()) + return; + + LADSPAEffect *effect = l->runningPlugins().at(index.row()); + QDialog *dialog = new QDialog(this); + dialog->setWindowTitle(effect->descriptor->Name); + QFormLayout *formLayout = new QFormLayout(dialog); + + foreach(LADSPAControl *c, effect->controls) + { + switch ((int) c->type) + { + case LADSPAControl::BUTTON: + break; + case LADSPAControl::SLIDER: + LADSPASlider *slider = new LADSPASlider(c->min, c->max, c->step, c->value, l, dialog); + formLayout->addRow(c->name, slider); + } + } + if (effect->controls.isEmpty()) { - l->runningPlugins().at(index.row())->widget->setParent(this); - l->runningPlugins().at(index.row())->widget->setWindowFlags(Qt::Window); - l->runningPlugins().at(index.row())->widget->show(); - //updateRunningPlugins(); + QLabel *label = new QLabel(tr("This LADSPA plugin has no user controls"), dialog); + formLayout->addRow(label); } + dialog->setLayout(formLayout); + dialog->setFixedSize(dialog->sizeHint()); + dialog->exec(); + dialog->deleteLater(); } void SettingsDialog::accept() diff --git a/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp b/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp index 6b259fa89..86490cdfc 100644 --- a/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp +++ b/src/plugins/Effect/srconverter/effectsrconverterfactory.cpp @@ -21,8 +21,8 @@ #include <QtGui> #include <qmmp/qmmp.h> #include "settingsdialog.h" -#include "effectsrconverterfactory.h" #include "srconverter.h" +#include "effectsrconverterfactory.h" const EffectProperties EffectSRConverterFactory::properties() const { @@ -32,25 +32,25 @@ const EffectProperties EffectSRConverterFactory::properties() const properties.hasSettings = TRUE; properties.hasAbout = TRUE; return properties; -}; +} -Effect *EffectSRConverterFactory::create(QObject *parent) +Effect *EffectSRConverterFactory::create() { - return new SRConverter(parent); -}; + return new SRConverter(); +} void EffectSRConverterFactory::showSettings(QWidget *parent) { SettingsDialog *s = new SettingsDialog(parent); s ->show(); -}; +} void EffectSRConverterFactory::showAbout(QWidget *parent) { QMessageBox::about (parent, tr("About Sample Rate Converter Plugin"), tr("Qmmp Sample Rate Converter Plugin")+"\n"+ tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>")); -}; +} QTranslator *EffectSRConverterFactory::createTranslator(QObject *parent) { @@ -58,6 +58,6 @@ QTranslator *EffectSRConverterFactory::createTranslator(QObject *parent) QString locale = Qmmp::systemLanguageID(); translator->load(QString(":/srconverter_plugin_") + locale); return translator; -}; +} Q_EXPORT_PLUGIN2(srconverter, EffectSRConverterFactory) diff --git a/src/plugins/Effect/srconverter/effectsrconverterfactory.h b/src/plugins/Effect/srconverter/effectsrconverterfactory.h index c9854a18b..fb98d4cb6 100644 --- a/src/plugins/Effect/srconverter/effectsrconverterfactory.h +++ b/src/plugins/Effect/srconverter/effectsrconverterfactory.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2007-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -20,9 +20,7 @@ #ifndef EFFECTSRCONVERTERFACTORY_H #define EFFECTSRCONVERTERFACTORY_H - #include <QObject> - #include <qmmp/effectfactory.h> #include <qmmp/effect.h> @@ -36,7 +34,7 @@ Q_INTERFACES(EffectFactory); public: const EffectProperties properties() const; - Effect *create(QObject *parent); + Effect *create(); void showSettings(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/Effect/srconverter/srconverter.cpp b/src/plugins/Effect/srconverter/srconverter.cpp index ca871e409..8a31bb18f 100644 --- a/src/plugins/Effect/srconverter/srconverter.cpp +++ b/src/plugins/Effect/srconverter/srconverter.cpp @@ -25,7 +25,7 @@ #include "srconverter.h" -SRConverter::SRConverter(QObject* parent) : Effect(parent) +SRConverter::SRConverter() : Effect() { m_isSrcAlloc = FALSE; int converter_type_array[] = {SRC_SINC_BEST_QUALITY, SRC_SINC_MEDIUM_QUALITY, SRC_SINC_FASTEST, diff --git a/src/plugins/Effect/srconverter/srconverter.h b/src/plugins/Effect/srconverter/srconverter.h index e596c693a..bb4c2913c 100644 --- a/src/plugins/Effect/srconverter/srconverter.h +++ b/src/plugins/Effect/srconverter/srconverter.h @@ -20,12 +20,8 @@ #ifndef SRCONVERTER_H #define SRCONVERTER_H -#include <qmmp/effect.h> - -extern "C" -{ #include <samplerate.h> -} +#include <qmmp/effect.h> /** @author Ilya Kotov <forkotov02@hotmail.ru> @@ -33,10 +29,8 @@ extern "C" class SRConverter : public Effect { - Q_OBJECT public: - SRConverter(QObject *parent = 0); - + SRConverter(); virtual ~SRConverter(); ulong process(char *in_data, const ulong size, char **out_data); diff --git a/src/qmmp/effect.cpp b/src/qmmp/effect.cpp index eea1d40fb..4aa8b6c01 100644 --- a/src/qmmp/effect.cpp +++ b/src/qmmp/effect.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007 by Ilya Kotov * + * Copyright (C) 2007-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -26,8 +26,7 @@ #include "effectfactory.h" #include "effect.h" -Effect::Effect(QObject *parent) - : QObject(parent) +Effect::Effect() { m_freq = 0; m_chan = 0; @@ -94,7 +93,7 @@ static void checkFactories() } } -QList<Effect*> Effect::create(QObject *parent) +QList<Effect*> Effect::create() { checkFactories(); QList<Effect*> effects; @@ -102,7 +101,7 @@ QList<Effect*> Effect::create(QObject *parent) foreach (factory, *factories) { if(isEnabled(factory)) - effects.append(factory->create(parent)); + effects.append(factory->create()); } return effects; } diff --git a/src/qmmp/effect.h b/src/qmmp/effect.h index 85a37081f..a3a14ab0b 100644 --- a/src/qmmp/effect.h +++ b/src/qmmp/effect.h @@ -20,7 +20,6 @@ #ifndef EFFECT_H #define EFFECT_H -#include <QObject> #include <QList> #include <QStringList> @@ -29,15 +28,13 @@ class EffectFactory; /*! @brief The Effect class provides the base interface class of audio effects. * @author Ilya Kotov <forkotov02@hotmail.ru> */ -class Effect : public QObject +class Effect { - Q_OBJECT public: /*! * Object contsructor. - * @param parent Parent object. */ - Effect(QObject *parent = 0); + Effect(); /*! * Destructor. */ @@ -71,9 +68,8 @@ public: int bitsPerSample(); /*! * Creates a list of enabled effects. - * @param parent Parent object of all created Effect objects. */ - static QList<Effect*> create(QObject *parent = 0); + static QList<Effect*> create(); /*! * Returns a list of effect factories. */ diff --git a/src/qmmp/effectfactory.h b/src/qmmp/effectfactory.h index ae1762440..7d9d140f1 100644 --- a/src/qmmp/effectfactory.h +++ b/src/qmmp/effectfactory.h @@ -58,9 +58,8 @@ public: virtual const EffectProperties properties() const = 0; /*! * Creates effect provided by plugin. - * @param parent Parent object. */ - virtual Effect *create(QObject *parent) = 0; + virtual Effect *create() = 0; /*! * Shows settings dialog. * @param parent Parent widget. diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp index 0bbb639fe..08573da4d 100644 --- a/src/qmmp/qmmpaudioengine.cpp +++ b/src/qmmp/qmmpaudioengine.cpp @@ -46,7 +46,7 @@ QmmpAudioEngine::QmmpAudioEngine(QObject *parent) setEQ(b, 0); qRegisterMetaType<Qmmp::State>("Qmmp::State"); _blksize = Buffer::size(); - m_effects = Effect::create(this); + m_effects = Effect::create(); m_bks = Buffer::size(); m_decoder = 0; m_output = 0; @@ -60,6 +60,7 @@ QmmpAudioEngine::~QmmpAudioEngine() if(m_output_buf) delete [] m_output_buf; m_output_buf = 0; + qDeleteAll(m_effects); } void QmmpAudioEngine::reset() |
