diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-03 11:13:48 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-03 11:13:48 +0000 |
| commit | 26e900705f9c00b0775be0910fd0ae056328d550 (patch) | |
| tree | cba26f3c5d302db134fa0d5ba0b5174d610f60cb /src/qmmpui/general.cpp | |
| parent | d184b2acecd3a7437ca78a163411d50f6935e55f (diff) | |
| download | qmmp-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.cpp | 50 |
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) |
