diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-11-13 14:47:33 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2009-11-13 14:47:33 +0000 |
| commit | 3d06313cd8ed2c8843f0c512c349296326f5a9e4 (patch) | |
| tree | 739d28d5a782f366ef28e3807d459db7cc2de66b /src/ui/playlistbrowser.cpp | |
| parent | 90d3aeb642ba4d6445932343010294a39b33efe2 (diff) | |
| download | qmmp-3d06313cd8ed2c8843f0c512c349296326f5a9e4.tar.gz qmmp-3d06313cd8ed2c8843f0c512c349296326f5a9e4.tar.bz2 qmmp-3d06313cd8ed2c8843f0c512c349296326f5a9e4.zip | |
added playlist browser
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1364 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui/playlistbrowser.cpp')
| -rw-r--r-- | src/ui/playlistbrowser.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/ui/playlistbrowser.cpp b/src/ui/playlistbrowser.cpp new file mode 100644 index 000000000..f4844dadf --- /dev/null +++ b/src/ui/playlistbrowser.cpp @@ -0,0 +1,86 @@ +/*************************************************************************** + * Copyright (C) 2009 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 <qmmpui/playlistmanager.h> +#include "playlistbrowser.h" + +PlayListBrowser::PlayListBrowser(PlayListManager *manager, QWidget *parent) : QDialog(parent) +{ + setAttribute(Qt::WA_DeleteOnClose, TRUE); + 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); +} + +PlayListBrowser::~PlayListBrowser() +{} + +void PlayListBrowser::updateList() +{ + ui.listWidget->clear(); + foreach(PlayListModel *model, m_pl_manager->playLists()) + ui.listWidget->addItem(model->name()); + int c = m_pl_manager->indexOf(m_pl_manager->selectedPlayList()); + ui.listWidget->setCurrentRow (c); + QFont font = ui.listWidget->currentItem()->font(); + font.setBold(TRUE); + ui.listWidget->currentItem()->setFont(font); +} + +void PlayListBrowser::on_listWidget_itemDoubleClicked(QListWidgetItem *item) +{ + m_pl_manager->selectPlayList(ui.listWidget->row(item)); +} + +void PlayListBrowser::on_listWidget_itemChanged(QListWidgetItem *item) +{ + m_pl_manager->playListAt(ui.listWidget->row(item))->setName(item->text()); +} + +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); +} |
