File indexing completed on 2024-05-12 15:50:11
0001 /* -*- C++ -*- 0002 This file is part of ThreadWeaver. 0003 0004 SPDX-FileCopyrightText: 2005-2014 Mirko Boehm <mirko@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #ifndef MODEL_H 0010 #define MODEL_H 0011 0012 #include <QAbstractListModel> 0013 #include <QFileInfoList> 0014 #include <QVector> 0015 0016 #include <ThreadWeaver/ResourceRestrictionPolicy> 0017 0018 #include "Image.h" 0019 #include "Progress.h" 0020 0021 class Model : public QAbstractListModel 0022 { 0023 Q_OBJECT 0024 public: 0025 enum Roles { 0026 Role_SortRole = Qt::UserRole, 0027 Role_ImageRole, 0028 Role_StepRole, 0029 }; 0030 0031 explicit Model(QObject *parent = nullptr); 0032 0033 int fileLoaderCap() const; 0034 void setFileLoaderCap(int cap); 0035 0036 int imageLoaderCap() const; 0037 void setImageLoaderCap(int cap); 0038 0039 int computeThumbNailCap() const; 0040 void setComputeThumbNailCap(int cap); 0041 0042 int saveThumbNailCap() const; 0043 void setSaveThumbNailCap(int cap); 0044 0045 void clear(); 0046 void prepareConversions(const QFileInfoList &filenames, const QString &outputDirectory); 0047 bool computeThumbNailsBlockingInLoop(); 0048 bool computeThumbNailsBlockingConcurrent(); 0049 0050 void queueUpConversion(const QStringList &files, const QString &outputDirectory); 0051 Progress progress() const; 0052 void progressChanged(); 0053 void elementChanged(int id); 0054 0055 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0056 QVariant data(const QModelIndex &index, int role) const override; 0057 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0058 0059 Q_SIGNALS: 0060 void completed(); 0061 void progressStepChanged(int, int); 0062 void signalElementChanged(int); 0063 0064 private Q_SLOTS: 0065 void slotElementChanged(int id); 0066 0067 private: 0068 QVector<Image> m_images; 0069 ThreadWeaver::ResourceRestrictionPolicy m_fileLoaderRestriction; 0070 ThreadWeaver::ResourceRestrictionPolicy m_imageLoaderRestriction; 0071 ThreadWeaver::ResourceRestrictionPolicy m_imageScalerRestriction; 0072 ThreadWeaver::ResourceRestrictionPolicy m_fileWriterRestriction; 0073 }; 0074 0075 #endif // MODEL_H