Warning, file /libraries/kirigami-addons/autotests/example_albummodel.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // SPDX-FileCopyrightText: 2023 James Graham <james.h.graham@protonmail.com>
0002 // SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0003 
0004 #include "example_albummodel.h"
0005 
0006 #include <QDebug>
0007 #include <QImage>
0008 
0009 ExampleAlbumModel::ExampleAlbumModel(QObject *parent)
0010     : QAbstractListModel(parent)
0011 {
0012 }
0013 
0014 QUrl ExampleAlbumModel::testImage() const
0015 {
0016     return m_testImage;
0017 }
0018 
0019 void ExampleAlbumModel::setTestImage(QUrl image)
0020 {
0021     if (image == m_testImage) {
0022         return;
0023     }
0024     m_testImage = image;
0025     testImageChanged();
0026 
0027     resetModel();
0028 }
0029 
0030 QUrl ExampleAlbumModel::testVideo() const
0031 {
0032     return m_testVideo;
0033 }
0034 
0035 void ExampleAlbumModel::setTestVideo(QUrl video)
0036 {
0037     if (video == m_testVideo) {
0038         return;
0039     }
0040     m_testVideo = video;
0041     testVideoChanged();
0042 
0043     resetModel();
0044 }
0045 
0046 QVariant ExampleAlbumModel::data(const QModelIndex &index, int role) const
0047 {
0048     if (!index.isValid()) {
0049         return {};
0050     }
0051 
0052     if (index.row() >= m_items.count()) {
0053         qDebug() << "ExampleAlbumModel, something's wrong: index.row() >= m_items.count()";
0054         return {};
0055     }
0056 
0057     if (role == SourceRole) {
0058         auto url = m_items.at(index.row())->source();
0059         qWarning() << url;
0060         return m_items.at(index.row())->source();
0061     }
0062     if (role == SourceWidthRole) {
0063         return m_items.at(index.row())->sourceWidth();
0064     }
0065     if (role == SourceHeightRole) {
0066         return m_items.at(index.row())->sourceHeight();
0067     }
0068     if (role == TempSourceRole) {
0069         return m_items.at(index.row())->tempSource();
0070     }
0071     if (role == TypeRole) {
0072         return m_items.at(index.row())->type();
0073     }
0074     if (role == CaptionRole) {
0075         return m_items.at(index.row())->caption();
0076     }
0077 
0078     return {};
0079 }
0080 
0081 int ExampleAlbumModel::rowCount(const QModelIndex &parent) const
0082 {
0083     Q_UNUSED(parent)
0084     return m_items.count();
0085 }
0086 
0087 QHash<int, QByteArray> ExampleAlbumModel::roleNames() const
0088 {
0089     return {
0090         {SourceRole, QByteArrayLiteral("source")},
0091         {SourceWidthRole, QByteArrayLiteral("sourceWidth")},
0092         {SourceHeightRole, QByteArrayLiteral("sourceHeight")},
0093         {TempSourceRole, QByteArrayLiteral("tempSource")},
0094         {TypeRole, QByteArrayLiteral("type")},
0095         {CaptionRole, QByteArrayLiteral("caption")},
0096     };
0097 }
0098 
0099 void ExampleAlbumModel::resetModel()
0100 {
0101     beginResetModel();
0102     m_items.clear();
0103 
0104     // Create dummy data using latest image and video sources.
0105     m_items.append(new ItemObject(this, m_testImage, 200, 100, m_testImage, ItemObject::Type::Image, QStringLiteral("A test image")));
0106     m_items.append(new ItemObject(this, m_testVideo, 300, 150, m_testImage, ItemObject::Type::Video, QStringLiteral("A test video")));
0107     m_items.append(new ItemObject(this, m_testImage, 400, 200, m_testImage, ItemObject::Type::Image, QStringLiteral("")));
0108 
0109     endResetModel();
0110 }