First attempt at getting rid of tracker for post capture
[harmattan/cameraplus] / src / postcapturemodel.h
index c5e0ce1..411a9a9 100644 (file)
 #ifndef POST_CAPTURE_MODEL_H
 #define POST_CAPTURE_MODEL_H
 
-#include <QAbstractListModel>
-#include <QUrl>
+#include <QSortFilterProxyModel>
+#include <QStringList>
+#include <QFileInfo>
 
-class QSparqlConnection;
-class PostCaptureModelItem;
-class QDateTime;
-class Quad;
-class QSparqlQuery;
-class QSparqlResultRow;
+class FileInfoModel;
+class QDir;
 
-class PostCaptureModel : public QAbstractListModel {
+class PostCaptureModel : public QSortFilterProxyModel {
   Q_OBJECT
 
-  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 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 imagePath() const;
+  void setImagePath(const QString& path);
 
-  QString model() const;
-  void setModel(const QString& model);
-
-signals:
-  void error(const QString& msg);
-
-  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);
+signals:
+  void imagePathChanged();
+  void videoPathChanged();
+
+protected:
+  bool lessThan(const QModelIndex& left, const QModelIndex& right) const;
 
 private:
-  void addRow(PostCaptureModelItem *item);
-  void exec(QSparqlQuery& query);
+  QFileInfo info(const QString& path) const;
+
+  QString m_imagePath;
+  QString m_videoPath;
 
-  QSparqlConnection *m_connection;
-  QString m_manufacturer;
-  QString m_model;
+  FileInfoModel *m_model;
 
-  QList<PostCaptureModelItem *> m_items;
-  QHash<int, PostCaptureModelItem *> m_hash;
+  QStringList loadDir(QDir& dir);
 
-  bool m_connected;
+  mutable QHash<QString, QFileInfo> m_data;
 
 #if defined(QT5)
   QHash<int, QByteArray> roleNames() const;
@@ -91,58 +86,4 @@ private:
 #endif
 };
 
-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;
-
-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;
-
-  QVariantMap m_data;
-};
-
 #endif /* POST_CAPTURE_MODEL_H */