File indexing completed on 2024-05-05 08:51:56
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 }