aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/generalhandler.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-20 19:00:29 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-02-20 19:00:29 +0000
commit24b5ddfcbfe13a6d51365004aa276ffb269fac62 (patch)
treec01c732d6100b4593cac185e164039a44ace4f62 /src/qmmpui/generalhandler.cpp
parentf7922b3fd6e83b04f07f036e56023017bc5bacfa (diff)
downloadqmmp-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.cpp53
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()