aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/general.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-03 11:13:48 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-03 11:13:48 +0000
commit26e900705f9c00b0775be0910fd0ae056328d550 (patch)
treecba26f3c5d302db134fa0d5ba0b5174d610f60cb /src/qmmpui/general.cpp
parentd184b2acecd3a7437ca78a163411d50f6935e55f (diff)
downloadqmmp-26e900705f9c00b0775be0910fd0ae056328d550.tar.gz
qmmp-26e900705f9c00b0775be0910fd0ae056328d550.tar.bz2
qmmp-26e900705f9c00b0775be0910fd0ae056328d550.zip
some api changes
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2261 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/general.cpp')
-rw-r--r--src/qmmpui/general.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/qmmpui/general.cpp b/src/qmmpui/general.cpp
index ebe462715..8b2b36f22 100644
--- a/src/qmmpui/general.cpp
+++ b/src/qmmpui/general.cpp
@@ -27,6 +27,8 @@
QList<GeneralFactory*> *General::m_factories = 0;
QStringList General::m_files;
+QMap <GeneralFactory*, General*> *General::m_generals = 0;
+QObject *General::m_parent = 0;
void General::checkFactories()
{
@@ -69,6 +71,23 @@ General::General(QObject *parent)
General::~General()
{}
+void General::create(QObject *parent)
+{
+ if(m_generals)
+ return;
+ m_generals = new QMap <GeneralFactory*, General*>();
+ m_parent = parent;
+ checkFactories();
+ foreach(GeneralFactory* factory, *General::factories())
+ {
+ if (General::isEnabled(factory))
+ {
+ General *general = factory->create(parent);
+ m_generals->insert(factory, general);
+ }
+ }
+}
+
QList<GeneralFactory*> *General::factories()
{
checkFactories();
@@ -99,6 +118,37 @@ void General::setEnabled(GeneralFactory* factory, bool enable)
else
genList.removeAll(name);
settings.setValue("General/enabled_plugins", genList);
+ if(!m_generals)
+ return;
+
+
+ if (enable == m_generals->keys().contains(factory))
+ return;
+ if (enable)
+ {
+ General *general = factory->create(m_parent);
+ m_generals->insert(factory, general);
+ }
+ else
+ {
+ delete m_generals->value(factory);
+ m_generals->remove(factory);
+ }
+}
+
+void General::showSettings(GeneralFactory* factory, QWidget* parentWidget)
+{
+ QDialog *dialog = factory->createConfigDialog(parentWidget);
+ if (!dialog)
+ return;
+
+ if (m_generals && dialog->exec() == QDialog::Accepted && m_generals->keys().contains(factory))
+ {
+ delete m_generals->value(factory);
+ General *general = factory->create(m_parent);
+ m_generals->insert(factory, general);
+ }
+ dialog->deleteLater();
}
bool General::isEnabled(GeneralFactory* factory)