diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-03 09:41:52 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-07-03 09:41:52 +0000 |
| commit | d184b2acecd3a7437ca78a163411d50f6935e55f (patch) | |
| tree | c7d83a08b0f9d13d83ddbfaef4bb44363a16d17f /src/qmmpui/uihelper.cpp | |
| parent | 1763b5effcfba6dd51f805c5948c9108f7c97348 (diff) | |
| download | qmmp-d184b2acecd3a7437ca78a163411d50f6935e55f.tar.gz qmmp-d184b2acecd3a7437ca78a163411d50f6935e55f.tar.bz2 qmmp-d184b2acecd3a7437ca78a163411d50f6935e55f.zip | |
renamed GeneralHandler
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2260 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/uihelper.cpp')
| -rw-r--r-- | src/qmmpui/uihelper.cpp | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/src/qmmpui/uihelper.cpp b/src/qmmpui/uihelper.cpp new file mode 100644 index 000000000..5448725aa --- /dev/null +++ b/src/qmmpui/uihelper.cpp @@ -0,0 +1,175 @@ +/*************************************************************************** + * Copyright (C) 2008-2011 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <QDialog> +#include <QMenu> +#include <QWidget> +#include <QAction> +#include "general.h" +#include "generalfactory.h" +#include "uihelper.h" + +UiHelper *UiHelper::m_instance = 0; + +UiHelper::UiHelper(QObject *parent) + : QObject(parent) +{ + m_instance = this; + m_toolsMenu = 0; + m_playlistMenu = 0; + GeneralFactory* factory; + foreach(factory, *General::factories()) + { + if (General::isEnabled(factory)) + { + General *general = factory->create(parent); + m_generals.insert(factory, general); + } + } +} + +UiHelper::~UiHelper() +{} + +void UiHelper::setEnabled(GeneralFactory* factory, bool enable) +{ + if (enable == m_generals.keys().contains(factory)) + return; + if (enable) + { + General *general = factory->create(parent()); + m_generals.insert(factory, general); + } + else + { + delete m_generals.value(factory); + m_generals.remove(factory); + } + General::setEnabled(factory, enable); +} + +void UiHelper::showSettings(GeneralFactory* factory, QWidget* parentWidget) +{ + QDialog *dialog = factory->createConfigDialog(parentWidget); + if (!dialog) + return; + + if (dialog->exec() == QDialog::Accepted && m_generals.keys().contains(factory)) + { + delete m_generals.value(factory); + General *general = factory->create(parent()); + m_generals[factory] = general; + } + dialog->deleteLater(); +} + +bool UiHelper::visibilityControl() +{ + GeneralFactory* factory; + foreach(factory, *General::factories()) + { + if (General::isEnabled(factory) && factory->properties().visibilityControl) + return true; + } + return false; +} + +void UiHelper::addAction(QAction *action, MenuType type) +{ + connect(action, SIGNAL(destroyed (QObject *)), SLOT(removeAction(QObject*))); + switch ((int) type) + { + case TOOLS_MENU: + if (!m_toolsActions.contains(action)) + m_toolsActions.append(action); + if (m_toolsMenu && !m_toolsMenu->actions ().contains(action)) + m_toolsMenu->addAction(action); + break; + case PLAYLIST_MENU: + if (!m_playlistActions.contains(action)) + m_playlistActions.append(action); + if (m_playlistMenu && !m_playlistMenu->actions ().contains(action)) + m_playlistMenu->addAction(action); + } +} + +void UiHelper::removeAction(QAction *action) +{ + m_toolsActions.removeAll(action); + if (m_toolsMenu) + m_toolsMenu->removeAction(action); + m_playlistActions.removeAll(action); + if (m_playlistMenu) + m_playlistMenu->removeAction(action); +} + +QList<QAction *> UiHelper::actions(MenuType type) +{ + if (type == TOOLS_MENU) + return m_toolsActions; + else + return m_playlistActions; +} + +QMenu *UiHelper::createMenu(MenuType type, const QString &title, QWidget *parent) +{ + switch ((int) type) + { + case TOOLS_MENU: + if (!m_toolsMenu) + { + m_toolsMenu = new QMenu(title, parent); + m_toolsMenu->addActions(m_toolsActions); + } + else + m_toolsMenu->setTitle(title); + return m_toolsMenu; + case PLAYLIST_MENU: + if (!m_playlistMenu) + { + m_playlistMenu = new QMenu(title, parent); + m_playlistMenu->addActions(m_playlistActions); + } + else + m_playlistMenu->setTitle(title); + return m_playlistMenu; + } + return 0; +} + +void UiHelper::toggleVisibility() +{ + emit toggleVisibilityCalled(); +} + +void UiHelper::exit() +{ + emit exitCalled(); +} + +UiHelper* UiHelper::instance() +{ + return m_instance; +} + +void UiHelper::removeAction(QObject *action) +{ + removeAction((QAction *) action); +} |
