aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui/skinned/playlistbrowser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui/skinned/playlistbrowser.cpp')
-rw-r--r--src/plugins/Ui/skinned/playlistbrowser.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/plugins/Ui/skinned/playlistbrowser.cpp b/src/plugins/Ui/skinned/playlistbrowser.cpp
new file mode 100644
index 000000000..d7e630c43
--- /dev/null
+++ b/src/plugins/Ui/skinned/playlistbrowser.cpp
@@ -0,0 +1,117 @@
+/***************************************************************************
+ * Copyright (C) 2009-2010 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 <QAction>
+#include <QApplication>
+#include <QStyle>
+#include <qmmpui/playlistmanager.h>
+#include "playlistbrowser.h"
+
+PlayListBrowser::PlayListBrowser(PlayListManager *manager, QWidget *parent) : QDialog(parent)
+{
+ setAttribute(Qt::WA_DeleteOnClose, true);
+ setAttribute(Qt::WA_QuitOnClose, false);
+ setWindowModality(Qt::NonModal);
+ ui.setupUi(this);
+ m_pl_manager = manager;
+ connect(m_pl_manager, SIGNAL(playListsChanged()), SLOT(updateList()));
+ connect(ui.newButton, SIGNAL(clicked()), m_pl_manager, SLOT(createPlayList()));
+ updateList();
+ //actions
+ QAction *renameAct = new QAction(tr("Rename"), this);
+ QAction *removeAct = new QAction(tr("Delete"), this);
+ connect(renameAct,SIGNAL(triggered()), SLOT(rename()));
+ connect(removeAct,SIGNAL(triggered()), SLOT(on_deleteButton_clicked()));
+ ui.listWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
+ ui.listWidget->addAction(renameAct);
+ ui.listWidget->addAction(removeAct);
+ ui.downButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowDown));
+ ui.upButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_ArrowUp));
+ ui.newButton->setIcon(QIcon::fromTheme("document-new"));
+ ui.deleteButton->setIcon(QIcon::fromTheme("edit-delete"));
+}
+
+PlayListBrowser::~PlayListBrowser()
+{}
+
+void PlayListBrowser::updateList()
+{
+ ui.listWidget->clear();
+ foreach(PlayListModel *model, m_pl_manager->playLists())
+ ui.listWidget->addItem(model->name());
+ ui.listWidget->setCurrentRow (m_pl_manager->selectedPlayListIndex());
+ //mark current playlist
+ int current = m_pl_manager->currentPlayListIndex();
+ QListWidgetItem *item = ui.listWidget->item(current);
+ if(item)
+ {
+ QFont font = item->font();
+ font.setBold(true);
+ item->setFont(font);
+ }
+}
+
+void PlayListBrowser::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
+{
+ m_pl_manager->activatePlayList(ui.listWidget->row(item));
+}
+
+void PlayListBrowser::on_listWidget_itemChanged(QListWidgetItem *item)
+{
+ m_pl_manager->playListAt(ui.listWidget->row(item))->setName(item->text());
+}
+
+void PlayListBrowser::on_listWidget_itemPressed (QListWidgetItem *item)
+{
+ m_pl_manager->selectPlayList(ui.listWidget->row(item));
+}
+
+void PlayListBrowser::rename()
+{
+ QListWidgetItem *item = ui.listWidget->currentItem();
+ if(item)
+ {
+ item->setFlags(Qt::ItemIsEditable | item->flags());
+ ui.listWidget->editItem(item);
+ }
+}
+
+void PlayListBrowser::on_deleteButton_clicked()
+{
+ QList <PlayListModel *> models;
+ foreach(QListWidgetItem *item, ui.listWidget->selectedItems())
+ models.append(m_pl_manager->playListAt(ui.listWidget->row (item)));
+ foreach(PlayListModel *model, models)
+ m_pl_manager->removePlayList(model);
+}
+
+void PlayListBrowser::on_downButton_clicked()
+{
+ int pos = m_pl_manager->indexOf(m_pl_manager->selectedPlayList());
+ if(pos < m_pl_manager->count() - 1)
+ m_pl_manager->move(pos, pos + 1);
+}
+
+void PlayListBrowser::on_upButton_clicked()
+{
+ int pos = m_pl_manager->indexOf(m_pl_manager->selectedPlayList());
+ if(pos > 0)
+ m_pl_manager->move(pos, pos - 1);
+}