fix: crash when close program
playlist model no longer take the ownership of the playlist
This commit is contained in:
parent
86994811fe
commit
9f940e5046
|
@ -1,4 +1,4 @@
|
|||
_**This is a not ready for use, toy project**_
|
||||
_**This is a not ready to use, toy project**_
|
||||
|
||||
|
||||
## Note
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#include "playlistmodel.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
|
@ -110,28 +109,28 @@ QVariant PlaylistModel::data(const QModelIndex &index, int role) const
|
|||
|
||||
QMediaPlaylist *PlaylistModel::playlist() const
|
||||
{
|
||||
return m_playlist.data();
|
||||
return m_playlist;
|
||||
}
|
||||
|
||||
void PlaylistModel::setPlaylist(QMediaPlaylist *playlist)
|
||||
{
|
||||
if (m_playlist) {
|
||||
disconnect(m_playlist.data(), &QMediaPlaylist::mediaAboutToBeInserted, this, &PlaylistModel::beginInsertItems);
|
||||
disconnect(m_playlist.data(), &QMediaPlaylist::mediaInserted, this, &PlaylistModel::endInsertItems);
|
||||
disconnect(m_playlist.data(), &QMediaPlaylist::mediaAboutToBeRemoved, this, &PlaylistModel::beginRemoveItems);
|
||||
disconnect(m_playlist.data(), &QMediaPlaylist::mediaRemoved, this, &PlaylistModel::endRemoveItems);
|
||||
disconnect(m_playlist.data(), &QMediaPlaylist::mediaChanged, this, &PlaylistModel::changeItems);
|
||||
disconnect(m_playlist, &QMediaPlaylist::mediaAboutToBeInserted, this, &PlaylistModel::beginInsertItems);
|
||||
disconnect(m_playlist, &QMediaPlaylist::mediaInserted, this, &PlaylistModel::endInsertItems);
|
||||
disconnect(m_playlist, &QMediaPlaylist::mediaAboutToBeRemoved, this, &PlaylistModel::beginRemoveItems);
|
||||
disconnect(m_playlist, &QMediaPlaylist::mediaRemoved, this, &PlaylistModel::endRemoveItems);
|
||||
disconnect(m_playlist, &QMediaPlaylist::mediaChanged, this, &PlaylistModel::changeItems);
|
||||
}
|
||||
|
||||
beginResetModel();
|
||||
m_playlist.reset(playlist);
|
||||
m_playlist = playlist;
|
||||
|
||||
if (m_playlist) {
|
||||
connect(m_playlist.data(), &QMediaPlaylist::mediaAboutToBeInserted, this, &PlaylistModel::beginInsertItems);
|
||||
connect(m_playlist.data(), &QMediaPlaylist::mediaInserted, this, &PlaylistModel::endInsertItems);
|
||||
connect(m_playlist.data(), &QMediaPlaylist::mediaAboutToBeRemoved, this, &PlaylistModel::beginRemoveItems);
|
||||
connect(m_playlist.data(), &QMediaPlaylist::mediaRemoved, this, &PlaylistModel::endRemoveItems);
|
||||
connect(m_playlist.data(), &QMediaPlaylist::mediaChanged, this, &PlaylistModel::changeItems);
|
||||
connect(m_playlist, &QMediaPlaylist::mediaAboutToBeInserted, this, &PlaylistModel::beginInsertItems);
|
||||
connect(m_playlist, &QMediaPlaylist::mediaInserted, this, &PlaylistModel::endInsertItems);
|
||||
connect(m_playlist, &QMediaPlaylist::mediaAboutToBeRemoved, this, &PlaylistModel::beginRemoveItems);
|
||||
connect(m_playlist, &QMediaPlaylist::mediaRemoved, this, &PlaylistModel::endRemoveItems);
|
||||
connect(m_playlist, &QMediaPlaylist::mediaChanged, this, &PlaylistModel::changeItems);
|
||||
}
|
||||
|
||||
endResetModel();
|
||||
|
|
|
@ -48,12 +48,10 @@
|
|||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
#ifndef PLAYLISTMODEL_H
|
||||
#define PLAYLISTMODEL_H
|
||||
|
||||
#include <QAbstractItemModel>
|
||||
#include <QScopedPointer>
|
||||
|
||||
class QMediaPlaylist;
|
||||
|
||||
|
@ -69,7 +67,7 @@ public:
|
|||
};
|
||||
|
||||
explicit PlaylistModel(QObject *parent = nullptr);
|
||||
~PlaylistModel();
|
||||
~PlaylistModel() override;
|
||||
|
||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||
|
@ -92,7 +90,7 @@ private slots:
|
|||
void changeItems(int start, int end);
|
||||
|
||||
private:
|
||||
QScopedPointer<QMediaPlaylist> m_playlist;
|
||||
QMediaPlaylist * m_playlist = nullptr;
|
||||
QMap<QModelIndex, QVariant> m_data;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user