First attempt at getting rid of tracker for post capture
[harmattan/cameraplus] / src / postcapturemodel.h
index f74ee03..411a9a9 100644 (file)
 #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 */