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 | |
| 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
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/General/dbuscontrol/dbuscontrolfactory.h | 2 | ||||
| -rw-r--r-- | src/plugins/General/scrobbler/scrobblerfactory.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/General/scrobbler/scrobblerfactory.h | 2 | ||||
| -rw-r--r-- | src/plugins/General/scrobbler/settingsdialog.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/General/statusicon/settingsdialog.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/General/statusicon/statusiconfactory.cpp | 5 | ||||
| -rw-r--r-- | src/plugins/General/statusicon/statusiconfactory.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/generalfactory.h | 3 | ||||
| -rw-r--r-- | src/qmmpui/generalhandler.cpp | 53 | ||||
| -rw-r--r-- | src/qmmpui/generalhandler.h | 5 | ||||
| -rw-r--r-- | src/ui/configdialog.cpp | 3 | ||||
| -rw-r--r-- | src/ui/mainwindow.cpp | 1 | ||||
| -rw-r--r-- | src/ui/pluginitem.cpp | 3 |
14 files changed, 60 insertions, 33 deletions
diff --git a/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp b/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp index 922962c67..567614673 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp +++ b/src/plugins/General/dbuscontrol/dbuscontrolfactory.cpp @@ -37,8 +37,10 @@ General *DBUSControlFactory::create(QObject *parent) return new DBUSControl(parent); } -void DBUSControlFactory::showSettings(QWidget *) -{} +QDialog *DBUSControlFactory::createConfigDialog(QWidget *parent) +{ + return 0; +} void DBUSControlFactory::showAbout(QWidget *parent) { diff --git a/src/plugins/General/dbuscontrol/dbuscontrolfactory.h b/src/plugins/General/dbuscontrol/dbuscontrolfactory.h index 98121edec..af06b30bc 100644 --- a/src/plugins/General/dbuscontrol/dbuscontrolfactory.h +++ b/src/plugins/General/dbuscontrol/dbuscontrolfactory.h @@ -36,7 +36,7 @@ Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; General *create(QObject *parent); - void showSettings(QWidget *parent); + QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/General/scrobbler/scrobblerfactory.cpp b/src/plugins/General/scrobbler/scrobblerfactory.cpp index 77bbb0f2b..7f1fe7757 100644 --- a/src/plugins/General/scrobbler/scrobblerfactory.cpp +++ b/src/plugins/General/scrobbler/scrobblerfactory.cpp @@ -38,10 +38,9 @@ General *ScrobblerFactory::create(QObject *parent) return new Scrobbler(parent); } -void ScrobblerFactory::showSettings(QWidget *parent) +QDialog *ScrobblerFactory::createConfigDialog(QWidget *parent) { - SettingsDialog *dialog = new SettingsDialog(parent); - dialog->show(); + return new SettingsDialog(parent); } void ScrobblerFactory::showAbout(QWidget *parent) diff --git a/src/plugins/General/scrobbler/scrobblerfactory.h b/src/plugins/General/scrobbler/scrobblerfactory.h index 240749714..a0bd0a626 100644 --- a/src/plugins/General/scrobbler/scrobblerfactory.h +++ b/src/plugins/General/scrobbler/scrobblerfactory.h @@ -36,7 +36,7 @@ Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; General *create(QObject *parent); - void showSettings(QWidget *parent); + QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/General/scrobbler/settingsdialog.cpp b/src/plugins/General/scrobbler/settingsdialog.cpp index 8dc2dfe22..9280550f1 100644 --- a/src/plugins/General/scrobbler/settingsdialog.cpp +++ b/src/plugins/General/scrobbler/settingsdialog.cpp @@ -27,7 +27,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { ui.setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); settings.beginGroup("Scrobbler"); ui.userLineEdit->setText(settings.value("login").toString()); diff --git a/src/plugins/General/statusicon/settingsdialog.cpp b/src/plugins/General/statusicon/settingsdialog.cpp index 7cb6bb1e5..5dc1ab4eb 100644 --- a/src/plugins/General/statusicon/settingsdialog.cpp +++ b/src/plugins/General/statusicon/settingsdialog.cpp @@ -27,7 +27,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { ui.setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat); settings.beginGroup("Tray"); ui.messageCheckBox->setChecked(settings.value("show_message",TRUE).toBool()); diff --git a/src/plugins/General/statusicon/statusiconfactory.cpp b/src/plugins/General/statusicon/statusiconfactory.cpp index 1d3beaa0b..12c57261c 100644 --- a/src/plugins/General/statusicon/statusiconfactory.cpp +++ b/src/plugins/General/statusicon/statusiconfactory.cpp @@ -38,10 +38,9 @@ General *StatusIconFactory::create(QObject *parent) return new StatusIcon(parent); } -void StatusIconFactory::showSettings(QWidget *parent) +QDialog *StatusIconFactory::createConfigDialog(QWidget *parent) { - SettingsDialog *s = new SettingsDialog(parent); - s->show(); + return new SettingsDialog(parent); } void StatusIconFactory::showAbout(QWidget *parent) diff --git a/src/plugins/General/statusicon/statusiconfactory.h b/src/plugins/General/statusicon/statusiconfactory.h index b09fb1ef1..c2dc76bc5 100644 --- a/src/plugins/General/statusicon/statusiconfactory.h +++ b/src/plugins/General/statusicon/statusiconfactory.h @@ -25,6 +25,7 @@ */ #include <QObject> #include <QTranslator> +#include <QDialog> #include <qmmpui/general.h> #include <qmmpui/generalfactory.h> @@ -36,7 +37,7 @@ Q_INTERFACES(GeneralFactory); public: const GeneralProperties properties() const; General *create(QObject *parent); - void showSettings(QWidget *parent); + QDialog *createConfigDialog(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/qmmpui/generalfactory.h b/src/qmmpui/generalfactory.h index 3038b597c..980d0b0f1 100644 --- a/src/qmmpui/generalfactory.h +++ b/src/qmmpui/generalfactory.h @@ -25,6 +25,7 @@ */ class QObject; class QTranslator; +class QDialog; class General; @@ -41,7 +42,7 @@ public: virtual ~GeneralFactory() {} virtual const GeneralProperties properties() const = 0; virtual General *create(QObject *parent) = 0; - virtual void showSettings(QWidget *parent) = 0; + virtual QDialog *createConfigDialog(QWidget *parent) = 0; virtual void showAbout(QWidget *parent) = 0; virtual QTranslator *createTranslator(QObject *parent) = 0; }; 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() diff --git a/src/qmmpui/generalhandler.h b/src/qmmpui/generalhandler.h index 308a0a694..657eb2e82 100644 --- a/src/qmmpui/generalhandler.h +++ b/src/qmmpui/generalhandler.h @@ -39,7 +39,8 @@ public: ~GeneralHandler(); void setSongInfo(const SongInfo &info); - void updateConfig(); + void setEnabled(GeneralFactory* factory, bool enable); + void showSettings(GeneralFactory* factory, QWidget* parentWidget); static GeneralHandler* instance(); signals: @@ -59,7 +60,7 @@ private slots: private: void connectSignals(General*); - QList <General*> m_generals; + QMap <GeneralFactory*, General*> m_generals; SongInfo m_songInfo; uint m_state; static GeneralHandler* m_instance; diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp index 820e69ada..e014df04f 100644 --- a/src/ui/configdialog.cpp +++ b/src/ui/configdialog.cpp @@ -35,6 +35,7 @@ #include <qmmp/effect.h> #include <qmmpui/generalfactory.h> #include <qmmpui/general.h> +#include <qmmpui/generalhandler.h> #include "skin.h" @@ -438,7 +439,7 @@ void ConfigDialog::showPluginSettings() int row = ui.generalPluginTable->currentRow (); if ( m_generalPluginItems.isEmpty() || row < 0 ) return; - m_generalPluginItems.at(row)->factory()->showSettings ( this ); + GeneralHandler::instance()->showSettings(m_generalPluginItems.at(row)->factory(), this); break; } } diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index b6ec78534..e8ce0b3bd 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -575,7 +575,6 @@ void MainWindow::showSettings() m_playlist->readSettings(); TextScroller::getPointer()->readSettings(); m_core->updateConfig(); - m_generalHandler->updateConfig(); m_visMenu->updateActions(); } delete m_confDialog; diff --git a/src/ui/pluginitem.cpp b/src/ui/pluginitem.cpp index 4e0b1fd3d..490c46b0d 100644 --- a/src/ui/pluginitem.cpp +++ b/src/ui/pluginitem.cpp @@ -29,6 +29,7 @@ #include <qmmp/soundcore.h> #include <qmmpui/generalfactory.h> #include <qmmpui/general.h> +#include <qmmpui/generalhandler.h> #include "pluginitem.h" @@ -146,7 +147,7 @@ GeneralPluginItem::~GeneralPluginItem() void GeneralPluginItem::select(bool on) { - General::setEnabled(m_factory, on); + GeneralHandler::instance()->setEnabled(m_factory, on); } bool GeneralPluginItem::isSelected() |
