File indexing completed on 2024-04-28 15:39:41

0001 // SPDX-FileCopyrightText: 2014-2022 Jesper K. Pedersen <blackie@kde.org>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #include "DiscoveryModel.h"
0006 #include "Action.h"
0007 #include "Types.h"
0008 
0009 namespace RemoteControl
0010 {
0011 
0012 DiscoveryModel::DiscoveryModel(QObject *parent)
0013     : ThumbnailModel(parent)
0014 {
0015 }
0016 
0017 int DiscoveryModel::count() const
0018 {
0019     return m_count;
0020 }
0021 
0022 void DiscoveryModel::setImages(const QList<int> &images)
0023 {
0024     m_allImages = images;
0025     resetImages();
0026 }
0027 
0028 void DiscoveryModel::setCurrentSelection(const QList<int> &selection, const QList<int> &allImages)
0029 {
0030     ThumbnailModel::setImages(selection);
0031     m_allImages = allImages;
0032 }
0033 
0034 void DiscoveryModel::setCurrentAction(DiscoverAction *action)
0035 {
0036     m_action = action;
0037 }
0038 
0039 void DiscoveryModel::setCount(int count)
0040 {
0041     if (m_count != count) {
0042         m_count = count;
0043         Q_EMIT countChanged();
0044         resetImages();
0045     }
0046 }
0047 
0048 void DiscoveryModel::resetImages()
0049 {
0050     if (m_count == 0 || m_allImages.isEmpty())
0051         return;
0052 
0053     QList<int> result = m_allImages;
0054     std::random_shuffle(result.begin(), result.end());
0055     result = result.mid(0, m_count);
0056     result.push_front(DISCOVERYID);
0057     ThumbnailModel::setImages(result);
0058     m_action->setCurrentSelection(result, m_allImages);
0059 }
0060 
0061 } // namespace RemoteControl
0062 
0063 #include "moc_DiscoveryModel.cpp"