File indexing completed on 2024-05-12 15:54:50

0001 /*
0002  * SPDX-FileCopyrightText: (C) 2017 Atul Sharma <atulsharma406@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef IMAGELISTMODEL_H
0008 #define IMAGELISTMODEL_H
0009 
0010 #include <QAbstractListModel>
0011 
0012 #include "openfilemodel.h"
0013 
0014 class ImageListModel : public OpenFileModel
0015 {
0016     Q_OBJECT
0017 
0018     Q_PROPERTY(Types::LocationGroup locationGroup READ locationGroup WRITE setLocationGroup NOTIFY locationGroupChanged)
0019     Q_PROPERTY(Types::TimeGroup timeGroup READ timeGroup WRITE setTimeGroup NOTIFY timeGroupChanged)
0020     Q_PROPERTY(Types::QueryType queryType READ queryType WRITE setQueryType)
0021     Q_PROPERTY(QByteArray query READ query WRITE setQuery NOTIFY queryChanged)
0022 
0023 public:
0024     explicit ImageListModel(QObject *parent = nullptr);
0025     ~ImageListModel();
0026 
0027     Types::LocationGroup locationGroup() const;
0028     void setLocationGroup(const Types::LocationGroup &group);
0029 
0030     Types::TimeGroup timeGroup() const;
0031     void setTimeGroup(const Types::TimeGroup &group);
0032 
0033     Types::QueryType queryType() const;
0034     void setQueryType(const Types::QueryType &type);
0035 
0036     QByteArray query() const;
0037     void setQuery(const QByteArray &statement);
0038 
0039     Q_INVOKABLE QByteArray queryForIndex(const int &index);
0040 
0041     void slotLocationGroupChanged();
0042     void slotTimeGroupChanged();
0043     void slotResetModel();
0044 
0045 Q_SIGNALS:
0046     void imageListChanged();
0047     void locationGroupChanged();
0048     void timeGroupChanged();
0049     void queryChanged();
0050 
0051 private:
0052     Types::LocationGroup m_locationGroup;
0053     Types::TimeGroup m_timeGroup;
0054     Types::QueryType m_queryType;
0055     QByteArray m_query;
0056 
0057     QList<QPair<QByteArray, QString>> m_times;
0058     QList<QPair<QByteArray, QString>> m_locations;
0059 };
0060 
0061 #endif