diff options
Diffstat (limited to 'playlist/playlistmodel.cpp')
-rw-r--r-- | playlist/playlistmodel.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/playlist/playlistmodel.cpp b/playlist/playlistmodel.cpp new file mode 100644 index 0000000..9eb2629 --- /dev/null +++ b/playlist/playlistmodel.cpp @@ -0,0 +1,46 @@ +/* ============================================================ + * SPDX-License-Identifier: GPL-3.0-only + * Copyright (C) 2023 aqua <aqua@iserlohn-fortress.net> + * ============================================================ */ + +#include "playlistmodel.hpp" +#include "playlist.hpp" + +PlaylistModel::PlaylistModel(Playlist *parent) : QAbstractItemModel{parent}, playlist(parent) +{ + Q_CHECK_PTR(parent); + connect(parent, &Playlist::mediaAboutToBeInserted, this, &PlaylistModel::beginInsertItems); + connect(parent, &Playlist::mediaInserted, this, &PlaylistModel::endInsertItems); +} + +QModelIndex PlaylistModel::index(int row, int column, const QModelIndex &parent) const +{ + if (parent.isValid()) return {}; + return createIndex(row, column); +} + +QModelIndex PlaylistModel::parent(const QModelIndex &child) const { return {}; } + +int PlaylistModel::rowCount(const QModelIndex &parent) const +{ + if (parent.isValid()) return 0; + return playlist->count(); +} + +int PlaylistModel::columnCount(const QModelIndex &parent) const +{ + if (parent.isValid()) return 0; + return 1; +} + +QVariant PlaylistModel::data(const QModelIndex &index, int role) const +{ + if (!index.isValid()) return {}; + + switch (role) { + case Qt::DisplayRole: + return (*playlist)[index.row()]; + default: + return {}; + } +} |