File indexing completed on 2024-05-05 04:50:49

0001 /*
0002  * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #include "tracksmodel.h"
0008 
0009 TracksModel::TracksModel(QObject *parent)
0010     : QAbstractListModel(parent)
0011 {
0012 }
0013 
0014 int TracksModel::rowCount(const QModelIndex & /*parent*/) const
0015 {
0016     return m_tracks.size();
0017 }
0018 
0019 QVariant TracksModel::data(const QModelIndex &index, int role) const
0020 {
0021     if (!index.isValid() || m_tracks.isEmpty()) {
0022         return QVariant();
0023     }
0024 
0025     QMap<QString, QVariant> track = m_tracks[index.row()].toMap();
0026 
0027     switch (role) {
0028     case TextRole: {
0029         QString text;
0030         auto title = track[QStringLiteral("title")].toString();
0031         if (!title.isEmpty()) {
0032             text += title.append(QStringLiteral(" "));
0033         }
0034         auto lang = track[QStringLiteral("lang")].toString();
0035         if (!lang.isEmpty()) {
0036             text += lang.append(QStringLiteral(" "));
0037         }
0038         auto codec = track[QStringLiteral("codec")].toString();
0039         if (!codec.isEmpty()) {
0040             text += codec;
0041         }
0042         return text;
0043     }
0044     case LanguageRole:
0045         return track[QStringLiteral("lang")];
0046     case TitleRole:
0047         return track[QStringLiteral("title")];
0048     case IDRole:
0049         return track[QStringLiteral("id")];
0050     case CodecRole:
0051         return track[QStringLiteral("codec")];
0052     }
0053 
0054     return QVariant();
0055 }
0056 
0057 QHash<int, QByteArray> TracksModel::roleNames() const
0058 {
0059     QHash<int, QByteArray> roles;
0060     roles[TextRole] = "text";
0061     roles[LanguageRole] = "language";
0062     roles[TitleRole] = "title";
0063     roles[IDRole] = "id";
0064     roles[CodecRole] = "codec";
0065     return roles;
0066 }
0067 
0068 void TracksModel::setTracks(QList<QVariant> tracks)
0069 {
0070     beginResetModel();
0071     m_tracks = tracks;
0072     endResetModel();
0073 }
0074 
0075 #include "moc_tracksmodel.cpp"