diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-20 19:00:29 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-20 19:00:29 +0000 |
| commit | 24b5ddfcbfe13a6d51365004aa276ffb269fac62 (patch) | |
| tree | c01c732d6100b4593cac185e164039a44ace4f62 /src/qmmpui/generalhandler.cpp | |
| parent | f7922b3fd6e83b04f07f036e56023017bc5bacfa (diff) | |
| download | qmmp-24b5ddfcbfe13a6d51365004aa276ffb269fac62.tar.gz qmmp-24b5ddfcbfe13a6d51365004aa276ffb269fac62.tar.bz2 qmmp-24b5ddfcbfe13a6d51365004aa276ffb269fac62.zip | |
improved general plugin configuration
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@252 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/generalhandler.cpp')
| -rw-r--r-- | src/qmmpui/generalhandler.cpp | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/src/qmmpui/generalhandler.cpp b/src/qmmpui/generalhandler.cpp index dc29f281a..c4dd86934 100644 --- a/src/qmmpui/generalhandler.cpp +++ b/src/qmmpui/generalhandler.cpp @@ -18,6 +18,7 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include <QDialog> #include "general.h" #include "generalfactory.h" @@ -37,7 +38,7 @@ GeneralHandler::GeneralHandler(QObject *parent) { General *general = factory->create(parent); connect(general, SIGNAL(commandCalled(uint)), SLOT(processCommand(uint))); - m_generals.append(general); + m_generals.insert(factory, general); } } } @@ -54,7 +55,7 @@ void GeneralHandler::setState(uint state) if (state == General::Stopped) m_songInfo.clear(); - foreach(general, m_generals) + foreach(general, m_generals.values()) { general->setState(state); } @@ -68,31 +69,55 @@ void GeneralHandler::setSongInfo(const SongInfo &info) { m_songInfo = info; General *general; - foreach(general, m_generals) + foreach(general, m_generals.values()) { general->setSongInfo(m_songInfo); } } } -void GeneralHandler::updateConfig() +void GeneralHandler::setEnabled(GeneralFactory* factory, bool enable) { - while (!m_generals.isEmpty()) - delete m_generals.takeFirst(); + if(enable == m_generals.keys().contains(factory)) + return; + if(enable) + { + General *general = factory->create(parent()); + connect(general, SIGNAL(commandCalled(uint)), SLOT(processCommand(uint))); + m_generals.insert(factory, general); + if (m_state != General::Stopped) + { + general->setState(m_state); + general->setSongInfo(m_songInfo); + } + } + else + { + delete m_generals.value(factory); + m_generals.remove(factory); + } + General::setEnabled(factory, enable); +} - GeneralFactory* factory; - foreach(factory, *General::generalFactories()) +void GeneralHandler::showSettings(GeneralFactory* factory, QWidget* parentWidget) +{ + QDialog *dialog = factory->createConfigDialog(parentWidget); + if(!dialog) + return; + + if(dialog->exec() == QDialog::Accepted && m_generals.keys().contains(factory)) { - if (General::isEnabled(factory)) + delete m_generals.value(factory); + General *general = factory->create(parent()); + connect(general, SIGNAL(commandCalled(uint)), SLOT(processCommand(uint))); + m_generals[factory] = general; + if (m_state != General::Stopped) { - General *general = factory->create(parent()); - connect(general, SIGNAL(commandCalled(uint)), SLOT(processCommand(uint))); - m_generals.append(general); general->setState(m_state); - if (m_state != General::Stopped) - general->setSongInfo(m_songInfo); + general->setSongInfo(m_songInfo); } } + delete dialog; } GeneralHandler* GeneralHandler::instance() |
