#ifndef POST_CAPTURE_MODEL_H
#define POST_CAPTURE_MODEL_H
-#include <QAbstractListModel>
-#include <QDeclarativeParserStatus>
-#include <QUrl>
-
-class QSparqlConnection;
-class PostCaptureModelItem;
-class QDateTime;
-class Quad;
-class QSparqlQuery;
-class QSparqlResultRow;
-
-class PostCaptureModel : public QAbstractListModel, public QDeclarativeParserStatus {
+#include <QSortFilterProxyModel>
+#include <QStringList>
+#include <QFileInfo>
+
+class FileInfoModel;
+class QDir;
+
+class PostCaptureModel : public QSortFilterProxyModel {
Q_OBJECT
- Q_INTERFACES(QDeclarativeParserStatus);
- Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged);
- Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged);
+ Q_PROPERTY(QString imagePath READ imagePath WRITE setImagePath NOTIFY imagePathChanged);
+ Q_PROPERTY(QString videoPath READ videoPath WRITE setVideoPath NOTIFY videoPathChanged);
typedef enum {
- Item = Qt::UserRole + 1
+ UrlRole = Qt::UserRole + 1,
+ TitleRole = Qt::UserRole + 2,
+ MimeTypeRole = Qt::UserRole + 3,
+ CreatedRole = Qt::UserRole + 4,
+ FileNameRole = Qt::UserRole + 5,
} Roles;
public:
PostCaptureModel(QObject *parent = 0);
~PostCaptureModel();
- virtual void classBegin();
- virtual void componentComplete();
-
- virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
- QString manufacturer() const;
- void setManufacturer(const QString& manufacturer);
-
- QString model() const;
- void setModel(const QString& model);
-
-signals:
- void error(const QString& msg);
+ QString imagePath() const;
+ void setImagePath(const QString& path);
- void manufacturerChanged();
- void modelChanged();
+ QString videoPath() const;
+ void setVideoPath(const QString& path);
public slots:
void reload();
- void remove(QObject *item);
+ void remove(const QUrl& file);
-private slots:
- void dataReady(int totalCount);
- void graphUpdated(const QString& className, const QList<Quad>& deleted,
- const QList<Quad>& inserted);
-
-private:
- void addRow(PostCaptureModelItem *item);
- void exec(QSparqlQuery& query);
-
- QSparqlConnection *m_connection;
- QString m_manufacturer;
- QString m_model;
-
- QList<PostCaptureModelItem *> m_items;
- QHash<int, PostCaptureModelItem *> m_hash;
-};
-
-class PostCaptureModelItem : public QObject {
- Q_OBJECT
-
- Q_PROPERTY(QString type READ type NOTIFY typeChanged);
- Q_PROPERTY(QUrl url READ url NOTIFY urlChanged);
- Q_PROPERTY(QString created READ created NOTIFY createdChanged);
- Q_PROPERTY(QString title READ title NOTIFY titleChanged);
- Q_PROPERTY(QString fileName READ fileName NOTIFY fileNameChanged);
- Q_PROPERTY(QString mimeType READ mimeType NOTIFY mimeTypeChanged);
- Q_PROPERTY(bool available READ available NOTIFY availableChanged);
- Q_PROPERTY(QString lastModified READ lastModified NOTIFY lastModifiedChanged);
- Q_PROPERTY(unsigned trackerId READ trackerId CONSTANT);
- Q_PROPERTY(bool favorite READ favorite WRITE setFavorite NOTIFY favoriteChanged);
-
-public:
- PostCaptureModelItem(const QSparqlResultRow& row, QObject *parent = 0);
+signals:
+ void imagePathChanged();
+ void videoPathChanged();
- ~PostCaptureModelItem() {
+protected:
+ bool lessThan(const QModelIndex& left, const QModelIndex& right) const;
- }
+private:
+ QFileInfo info(const QString& path) const;
- void update(PostCaptureModelItem *other);
+ QString m_imagePath;
+ QString m_videoPath;
- QString type() const;
- QUrl url() const;
- QString created() const;
- QString title() const;
- QString fileName() const;
- QString mimeType() const;
- bool available() const;
- QString lastModified() const;
- unsigned trackerId() const;
+ FileInfoModel *m_model;
- void setFavorite(bool add);
- bool favorite() const;
+ QStringList loadDir(QDir& dir);
-signals:
- void typeChanged();
- void urlChanged();
- void createdChanged();
- void titleChanged();
- void fileNameChanged();
- void mimeTypeChanged();
- void availableChanged();
- void lastModifiedChanged();
- void favoriteChanged();
-
-private:
- QString formatDateTime(const QDateTime& dt) const;
- QVariant value(const QString& id, const QVariant& def = QVariant()) const;
+ mutable QHash<QString, QFileInfo> m_data;
- QVariantMap m_data;
+#if defined(QT5)
+ QHash<int, QByteArray> roleNames() const;
+ void setRoleNames(const QHash<int, QByteArray>& roles);
+ QHash<int, QByteArray> m_roles;
+#endif
};
#endif /* POST_CAPTURE_MODEL_H */