Implement removing of items in the Playlist
This commit is contained in:
parent
eef3e53bd9
commit
0cf6c18de4
5 changed files with 44 additions and 3 deletions
|
@ -19,6 +19,7 @@
|
|||
#include <QAbstractTableModel>
|
||||
#include <QHash>
|
||||
#include <QVariant>
|
||||
#include <QIcon>
|
||||
#include <QMimeData>
|
||||
#include <QSettings>
|
||||
#include <QUrl>
|
||||
|
@ -514,3 +515,23 @@ PlaylistModel::get_all_id ()
|
|||
{
|
||||
return m_plist;
|
||||
}
|
||||
|
||||
void
|
||||
PlaylistModel::removeRows (QModelIndexList index_list)
|
||||
{
|
||||
QList<uint32_t> idlist;
|
||||
|
||||
for (int i = 0; i < index_list.size (); ++i) {
|
||||
QModelIndex idx = index_list.at(i);
|
||||
if (idx.column () != 0)
|
||||
continue;
|
||||
|
||||
idlist.append (idx.row ());
|
||||
}
|
||||
qSort (idlist);
|
||||
|
||||
/* Update of m_plist is done in handle_change through server notification */
|
||||
for (int i = idlist.size () - 1; i >= 0; --i){
|
||||
m_client->playlist ()->removeEntry (idlist.at(i));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,8 @@ class PlaylistModel : public QAbstractItemModel
|
|||
|
||||
void set_playlist (const QString &);
|
||||
|
||||
void removeRows (QModelIndexList);
|
||||
|
||||
protected:
|
||||
XClient *m_client;
|
||||
QList < unsigned int > m_plist;
|
||||
|
|
|
@ -359,12 +359,16 @@ PlaylistWidget::addButtons (void)
|
|||
Skin::PLS_MSC_BTN_1);
|
||||
b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_ALL_0,
|
||||
Skin::PLS_DEL_ALL_1);
|
||||
connect (b, SIGNAL(activated ()),
|
||||
connect (b, SIGNAL (activated ()),
|
||||
&XMMSHandler::getInstance(), SLOT (playlistClear ()));
|
||||
b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_CRP_0,
|
||||
Skin::PLS_DEL_CRP_1);
|
||||
connect (b, SIGNAL (activated ()),
|
||||
m_view, SLOT (cropSelected ()));
|
||||
b = new PlaylistMenuButton (m_del, Skin::PLS_DEL_FIL_0,
|
||||
Skin::PLS_DEL_FIL_1);
|
||||
connect (b, SIGNAL (activated ()),
|
||||
m_view, SLOT (removeSelected ()));
|
||||
// connect (b, SIGNAL(activated ()), m_list, SLOT (deleteFiles ()));
|
||||
|
||||
/* Selection menu */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// TODO might not need those
|
||||
// TODO might not need those two
|
||||
#include <xmmsclient/xmmsclient++.h>
|
||||
#include "XMMSHandler.h"
|
||||
|
||||
|
@ -119,6 +119,18 @@ PlaylistView::invertSelection () {
|
|||
QItemSelectionModel::NoUpdate);
|
||||
}
|
||||
|
||||
void
|
||||
PlaylistView::cropSelected () {
|
||||
invertSelection ();
|
||||
removeSelected ();
|
||||
selectAll ();
|
||||
}
|
||||
|
||||
void
|
||||
PlaylistView::removeSelected () {
|
||||
qobject_cast<PlaylistModel *> (model ())->removeRows (selectedIndexes ());
|
||||
}
|
||||
|
||||
void
|
||||
PlaylistView::setModel (QAbstractItemModel *model) {
|
||||
QListView::setModel (model);
|
||||
|
@ -144,6 +156,7 @@ PlaylistView::contextMenuEvent (QContextMenuEvent *e)
|
|||
qm.addAction (a);
|
||||
|
||||
a = new QAction (tr ("Remove selected"), this);
|
||||
connect (a, SIGNAL (triggered ()), this, SLOT (removeSelected ()));
|
||||
qm.addAction (a);
|
||||
|
||||
qm.addSeparator ();
|
||||
|
@ -222,7 +235,6 @@ PlaylistView::mouseDoubleClickEvent (QMouseEvent *event)
|
|||
|
||||
XMMSHandler &xmmsh = XMMSHandler::getInstance ();
|
||||
xmmsh.requestTrackChange (index.row());
|
||||
// TODO check for status first.
|
||||
if (m_status == XMMS_PLAYBACK_STATUS_STOP ||
|
||||
m_status == XMMS_PLAYBACK_STATUS_PAUSE) {
|
||||
xmmsh.play ();
|
||||
|
|
|
@ -38,6 +38,8 @@ class PlaylistView : public QListView {
|
|||
|
||||
void handleStatus (const Xmms::Playback::Status st);
|
||||
void invertSelection (void);
|
||||
void cropSelected (void);
|
||||
void removeSelected (void);
|
||||
void settingsSaved (void);
|
||||
void setPixmaps (Skin *skin);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue