#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 {
- Q_OBJECT
- Q_INTERFACES(QDeclarativeParserStatus);
+#include <QStandardItemModel>
- Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged);
- Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged);
+class QDir;
- typedef enum {
- Item = Qt::UserRole + 1
- } Roles;
+class PostCaptureModel : public QStandardItemModel {
+ Q_OBJECT
+
+ Q_PROPERTY(QString imagePath READ imagePath WRITE setImagePath NOTIFY imagePathChanged);
+ Q_PROPERTY(QString videoPath READ videoPath WRITE setVideoPath NOTIFY videoPathChanged);
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);
+ typedef enum {
+ UrlRole = Qt::UserRole + 1,
+ TitleRole = Qt::UserRole + 2,
+ MimeTypeRole = Qt::UserRole + 3,
+ CreatedRole = Qt::UserRole + 4,
+ FileNameRole = Qt::UserRole + 5,
+ } Roles;
-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);
-
-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;
-
- bool m_connected;
-};
-
-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);
-
- ~PostCaptureModelItem() {
-
- }
-
- void update(PostCaptureModelItem *other);
-
- 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;
-
- void setFavorite(bool add);
- bool favorite() const;
+ void clear();
+ void remove(const QUrl& file);
signals:
- void typeChanged();
- void urlChanged();
- void createdChanged();
- void titleChanged();
- void fileNameChanged();
- void mimeTypeChanged();
- void availableChanged();
- void lastModifiedChanged();
- void favoriteChanged();
+ void imagePathChanged();
+ void videoPathChanged();
private:
- QString formatDateTime(const QDateTime& dt) const;
- QVariant value(const QString& id, const QVariant& def = QVariant()) const;
+ QString m_imagePath;
+ QString m_videoPath;
+
+ void loadDir(const QDir& dir, QList<QStandardItem *>& out);
- 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 */