diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/configdialog.cpp | 48 | ||||
| -rw-r--r-- | src/configdialog.h | 2 | ||||
| -rw-r--r-- | src/configdialog.ui | 14 | ||||
| -rw-r--r-- | src/pluginitem.cpp | 29 | ||||
| -rw-r--r-- | src/pluginitem.h | 20 |
5 files changed, 113 insertions, 0 deletions
diff --git a/src/configdialog.cpp b/src/configdialog.cpp index 0005b1847..958453a27 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -31,6 +31,8 @@ #include <decoderfactory.h> #include <outputfactory.h> #include <visualfactory.h> +#include <effectfactory.h> +#include <effect.h> #include "skin.h" #include "filedialog.h" @@ -72,6 +74,8 @@ ConfigDialog::~ConfigDialog() delete m_outputPluginItems.takeFirst(); while (!m_visualPluginItems.isEmpty()) delete m_visualPluginItems.takeFirst(); + while (!m_effectPluginItems.isEmpty()) + delete m_effectPluginItems.takeFirst(); } void ConfigDialog::readSettings() @@ -259,6 +263,34 @@ void ConfigDialog::loadPluginsInfo() ui.visualPluginTable->resizeColumnToContents ( 1 ); ui.visualPluginTable->resizeRowsToContents (); + /* + load effect plugin information + */ + QList <EffectFactory *> *effects = 0; + effects = Effect::effectFactories(); + files = Effect::effectFiles(); + ui.effectPluginTable->setColumnCount ( 3 ); + ui.effectPluginTable->verticalHeader()->hide(); + ui.effectPluginTable->setHorizontalHeaderLabels ( QStringList() + << tr ( "Enabled" ) << tr ( "Description" ) << tr ( "Filename" ) ); + ui.effectPluginTable->setRowCount ( visuals->count () ); + + for ( int i = 0; i < effects->count (); ++i ) + { + EffectPluginItem *item = new EffectPluginItem(this,effects->at(i),files.at(i)); + m_effectPluginItems.append(item); + QCheckBox* button = new QCheckBox (ui.effectPluginTable); + connect(button, SIGNAL(clicked (bool)), item, SLOT(select(bool))); + button->setChecked (item->isSelected()); + ui.effectPluginTable->setCellWidget ( i, 0, button ); + ui.effectPluginTable->setItem (i,1, + new QTableWidgetItem (item->factory()->properties().name)); + ui.effectPluginTable->setItem (i,2, new QTableWidgetItem (files.at(i))); + } + + ui.effectPluginTable->resizeColumnToContents ( 0 ); + ui.effectPluginTable->resizeColumnToContents ( 1 ); + ui.effectPluginTable->resizeRowsToContents (); } @@ -335,6 +367,14 @@ void ConfigDialog::showPluginSettings() m_visualPluginItems.at(row)->factory()->showSettings ( this ); break; } + case 3: + { + int row = ui.effectPluginTable->currentRow (); + if ( m_effectPluginItems.isEmpty() || row < 0 ) + return; + m_effectPluginItems.at(row)->factory()->showSettings ( this ); + break; + } } } @@ -369,6 +409,14 @@ void ConfigDialog::showPluginInfo() m_visualPluginItems.at(row)->factory()->showAbout ( this ); break; } + case 3: + { + int row = ui.effectPluginTable->currentRow (); + if ( m_effectPluginItems.isEmpty() || row < 0 ) + return; + m_effectPluginItems.at(row)->factory()->showAbout ( this ); + break; + } } } diff --git a/src/configdialog.h b/src/configdialog.h index e694f6a8d..a5c632cc6 100644 --- a/src/configdialog.h +++ b/src/configdialog.h @@ -35,6 +35,7 @@ class Skin; class InputPluginItem; class OutputPluginItem; class VisualPluginItem; +class EffectPluginItem; class ConfigDialog : public QDialog { @@ -71,6 +72,7 @@ private: QList <InputPluginItem*> m_inputPluginItems; QList <OutputPluginItem*> m_outputPluginItems; QList <VisualPluginItem*> m_visualPluginItems; + QList <EffectPluginItem*> m_effectPluginItems; }; #endif diff --git a/src/configdialog.ui b/src/configdialog.ui index 4b68c84c6..1f6f45516 100644 --- a/src/configdialog.ui +++ b/src/configdialog.ui @@ -561,6 +561,20 @@ </item> </layout> </widget> + <widget class="QWidget" name="tab_2" > + <attribute name="title" > + <string>Effects</string> + </attribute> + <layout class="QVBoxLayout" > + <item> + <widget class="QTableWidget" name="effectPluginTable" > + <property name="selectionBehavior" > + <enum>QAbstractItemView::SelectRows</enum> + </property> + </widget> + </item> + </layout> + </widget> <widget class="QWidget" name="fileDialogTab" > <attribute name="title" > <string>File Dialog</string> diff --git a/src/pluginitem.cpp b/src/pluginitem.cpp index 391f75148..fc32f8ab8 100644 --- a/src/pluginitem.cpp +++ b/src/pluginitem.cpp @@ -24,6 +24,8 @@ #include <decoderfactory.h> #include <outputfactory.h> #include <visualfactory.h> +#include <effectfactory.h> +#include <effect.h> #include <soundcore.h> #include "pluginitem.h" @@ -121,3 +123,30 @@ VisualFactory *VisualPluginItem::factory() { return m_factory; } + +/*Effect*/ +EffectPluginItem::EffectPluginItem(QObject *parent, EffectFactory *fact, + const QString &filePath): QObject(parent) +{ + m_fileName = filePath.section('/',-1); + m_factory = fact; +} + + +EffectPluginItem::~EffectPluginItem() +{} + +void EffectPluginItem::select(bool on) +{ + Effect::setEnabled(m_factory, on); +} + +bool EffectPluginItem::isSelected() +{ + return Effect::isEnabled(m_factory); +} + +EffectFactory *EffectPluginItem::factory() +{ + return m_factory; +} diff --git a/src/pluginitem.h b/src/pluginitem.h index 4a54f0e9d..11798ee25 100644 --- a/src/pluginitem.h +++ b/src/pluginitem.h @@ -29,6 +29,7 @@ class DecoderFactory; class OutputFactory; class VisualFactory; +class EffectFactory; class InputPluginItem : public QObject { @@ -89,4 +90,23 @@ private: VisualFactory *m_factory; }; +class EffectPluginItem : public QObject +{ + Q_OBJECT +public: + EffectPluginItem(QObject *parent, EffectFactory *fact, const QString &filePath); + + ~EffectPluginItem(); + + bool isSelected(); + EffectFactory * factory(); + +public slots: + void select(bool); + +private: + QString m_fileName; + EffectFactory *m_factory; +}; + #endif |
