aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/uihelper.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-03 09:41:52 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-07-03 09:41:52 +0000
commitd184b2acecd3a7437ca78a163411d50f6935e55f (patch)
treec7d83a08b0f9d13d83ddbfaef4bb44363a16d17f /src/qmmpui/uihelper.cpp
parent1763b5effcfba6dd51f805c5948c9108f7c97348 (diff)
downloadqmmp-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.cpp175
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);
+}