From fb78321c161832a52c44c221068a14e6e9792747 Mon Sep 17 00:00:00 2001 From: Arnaud Bienner Date: Wed, 2 Oct 2013 22:58:47 +0200 Subject: [PATCH] Don't ignore Folder (so we don't ignore playlists they contain and we don't end up with dangling pointers in playlists_by_id_) --- src/playlist/playlistlistmodel.cpp | 30 ++++++++++++++++++------------ src/playlist/playlistlistmodel.h | 1 + 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/playlist/playlistlistmodel.cpp b/src/playlist/playlistlistmodel.cpp index 592a59a1b..acfb9dda3 100644 --- a/src/playlist/playlistlistmodel.cpp +++ b/src/playlist/playlistlistmodel.cpp @@ -65,22 +65,28 @@ void PlaylistListModel::AddRowMappings(const QModelIndex& begin, for (int i=begin.row() ; i<=end.row() ; ++i) { const QModelIndex index = begin.sibling(i, 0); QStandardItem* item = itemFromIndex(index); + AddRowItem(item, parent_path); + } +} - switch (index.data(Role_Type).toInt()) { - case Type_Playlist: { - const int id = index.data(Role_PlaylistId).toInt(); - - playlists_by_id_[id] = item; - if (dropping_rows_) { - emit PlaylistPathChanged(id, parent_path); - } - - break; +void PlaylistListModel::AddRowItem(QStandardItem* item, const QString& parent_path) { + switch (item->data(Role_Type).toInt()) { + case Type_Playlist: { + const int id = item->data(Role_PlaylistId).toInt(); + playlists_by_id_[id] = item; + if (dropping_rows_) { + emit PlaylistPathChanged(id, parent_path); } - case Type_Folder: - break; + break; + } + + case Type_Folder: + for (int j=0; jrowCount(); ++j) { + QStandardItem* child_item = item->child(j); + AddRowItem(child_item, parent_path); } + break; } } diff --git a/src/playlist/playlistlistmodel.h b/src/playlist/playlistlistmodel.h index 0b5ade6f2..6305cf549 100644 --- a/src/playlist/playlistlistmodel.h +++ b/src/playlist/playlistlistmodel.h @@ -61,6 +61,7 @@ private slots: private: void AddRowMappings(const QModelIndex& begin, const QModelIndex& end); + void AddRowItem(QStandardItem* item, const QString& parent_path); void UpdatePathsRecursive(const QModelIndex& parent); private: