aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/configdialog.cpp48
-rw-r--r--src/configdialog.h2
-rw-r--r--src/configdialog.ui14
-rw-r--r--src/pluginitem.cpp29
-rw-r--r--src/pluginitem.h20
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