diff --git a/src/cpp/videosqlmodel.cpp b/src/cpp/videosqlmodel.cpp index b6560e5..69f1d15 100644 --- a/src/cpp/videosqlmodel.cpp +++ b/src/cpp/videosqlmodel.cpp @@ -106,12 +106,16 @@ void VideoSqlModel::newVideo(const QUrl &filePath) { } void VideoSqlModel::deleteVideo(const int &row) { + const QModelIndex parent = QModelIndex(); QSqlRecord recordData = record(row); if (recordData.isEmpty()) return; - + // emit beginRemoveRows(parent, row, row); + // emit beginResetModel(); removeRow(row); submitAll(); + // emit endRemoveRows(); + // emit endResetModel(); } int VideoSqlModel::id() const { @@ -320,13 +324,24 @@ QVariantMap VideoSqlModel::getVideo(const int &row) { VideoProxyModel::VideoProxyModel(QObject *parent) :QSortFilterProxyModel(parent) { - VideoSqlModel *videoModel = new VideoSqlModel; - setSourceModel(videoModel); + m_videoModel = new VideoSqlModel(); + setSourceModel(m_videoModel); setDynamicSortFilter(true); setFilterRole(Qt::UserRole + 1); setFilterCaseSensitivity(Qt::CaseInsensitive); } -QVariantMap VideoProxyModel::getVideo(const int &row) { - return QVariantMap(); +VideoSqlModel *VideoProxyModel::videoModel() { + return m_videoModel; +} + +QVariantMap VideoProxyModel::getVideo(const int &row) { + auto model = qobject_cast(sourceModel()); + QVariantMap video = model->getVideo(mapToSource(index(row, 0)).row()); + return video; +} + +void VideoProxyModel::deleteVideo(const int &row) { + auto model = qobject_cast(sourceModel()); + model->deleteVideo(mapToSource(index(row,0)).row()); } diff --git a/src/cpp/videosqlmodel.h b/src/cpp/videosqlmodel.h index f21d753..6a70456 100644 --- a/src/cpp/videosqlmodel.h +++ b/src/cpp/videosqlmodel.h @@ -68,12 +68,20 @@ private: class VideoProxyModel : public QSortFilterProxyModel { Q_OBJECT + Q_PROPERTY(VideoSqlModel *videoModel READ videoModel) public: explicit VideoProxyModel(QObject *parent = nullptr); + ~VideoProxyModel() = default; + + VideoSqlModel *videoModel(); public slots: Q_INVOKABLE QVariantMap getVideo(const int &row); + Q_INVOKABLE void deleteVideo(const int &row); + +private: + VideoSqlModel *m_videoModel; }; #endif //VIDEOSQLMODEL_H diff --git a/src/qml/presenter/MainWindow.qml b/src/qml/presenter/MainWindow.qml index 8b40f72..b912c5c 100644 --- a/src/qml/presenter/MainWindow.qml +++ b/src/qml/presenter/MainWindow.qml @@ -133,13 +133,9 @@ Controls.Page { } SongProxyModel { id: songProxyModel } - VideoProxyModel { id: videoProxyModel } ImageProxyModel { id: imageProxyModel } PresentationProxyModel { id: presProxyModel } - SongSqlModel { id: songSqlModel } - VideoSqlModel { id: videoSqlModel } - ImageSqlModel { id: imageSqlModel } - PresentationSqlModel { id: presSqlModel } + VideoProxyModel { id: videoProxyModel } ServiceThing { id: serviceThing } FileHelper { id: fileHelper }