diff options
author | Arno <arno@disconnect.de> | 2017-02-27 00:53:32 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-02-27 00:53:32 +0100 |
commit | add783bf8070a13027224ec5a2f45e557bea1506 (patch) | |
tree | dd71174475467fc9e4ccdfdd4ada5ebdfa33faf1 /playerwidget.cpp | |
parent | 423652c3b1e9adabf9c93c48a4eb778eb03b0755 (diff) | |
download | BeetPlayer-add783bf8070a13027224ec5a2f45e557bea1506.tar.gz BeetPlayer-add783bf8070a13027224ec5a2f45e557bea1506.tar.bz2 BeetPlayer-add783bf8070a13027224ec5a2f45e557bea1506.zip |
Implement remove from playlist
Isn't as easy as it sounds. We have to convert the QModelIndexes to
remove into persistant ones, because the row number changes when the
first one is removed.
Diffstat (limited to 'playerwidget.cpp')
-rw-r--r-- | playerwidget.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/playerwidget.cpp b/playerwidget.cpp index 2c28d13..ad3d060 100644 --- a/playerwidget.cpp +++ b/playerwidget.cpp @@ -89,6 +89,7 @@ void PlayerWidget::setupGui(){ mPlayListView = new BeetView; mPlayListView->setModel(mPlayListModel); mPlayListView->setRootIsDecorated(false); + mPlayListView->setSelectionMode(QAbstractItemView::ExtendedSelection); QGroupBox *playListGB = new QGroupBox(tr("Playlist")); QVBoxLayout *playListL = new QVBoxLayout; playListL->addWidget(mPlayListView); @@ -118,12 +119,12 @@ void PlayerWidget::createActions(){ QAction *addToPlayListA = new QAction(QIcon(":/belly_right.png"), tr("Add to playlist"), this); connect(addToPlayListA, SIGNAL(triggered()), this, SLOT(addToPlayList())); QAction *removeFromPlayListA = new QAction(QIcon(":/belly_left.png"), tr("Remove from playlist"), this); + connect(removeFromPlayListA, SIGNAL(triggered()), this, SLOT(removeFromPlayList())); QAction *clearPlayListA = new QAction(QIcon(":/delete.png"), tr("Clear Playlist"), this); QAction *refreshA = new QAction(QIcon(":/refresh.png"), tr("Refresh..."), this); connect(refreshA, SIGNAL(triggered()), this, SLOT(reindex())); QAction *configA = Globals::instance()->action(Globals::ConfigAction); mView->addAction(addToPlayListA); - mView->addAction(removeFromPlayListA); mPlayListView->addAction(removeFromPlayListA); mPlayListView->addAction(clearPlayListA); QWidget* spacer1 = new QWidget(); @@ -339,3 +340,14 @@ void PlayerWidget::addToPlayList(){ } } } + +void PlayerWidget::removeFromPlayList(){ + QModelIndexList sel = mPlayListView->selectionModel()->selectedRows(); + QList<QPersistentModelIndex> persistent; + foreach(QModelIndex i, sel){ + persistent << QPersistentModelIndex(i); + } + foreach(QPersistentModelIndex i, persistent){ + mPlayListModel->removeRow(i.row()); + } +} |