File indexing completed on 2024-05-12 04:46:38

0001 // Copyright 2018-2020 Camilo Higuita <milo.h@aol.com>
0002 // Copyright 2018-2020 Nitrux Latinoamericana S.C.
0003 //
0004 // SPDX-License-Identifier: GPL-3.0-or-later
0005 
0006 #pragma once
0007 
0008 #include <QAbstractListModel>
0009 #include <QObject>
0010 
0011 #include <MauiKit3/Core/mauilist.h>
0012 
0013 #include <QFileInfo>
0014 
0015 class Exiv2Extractor;
0016 
0017 /**
0018  * @brief
0019  */
0020 class PicInfoModel : public MauiList
0021 {
0022     Q_OBJECT
0023     
0024     /**
0025      * 
0026      */
0027     Q_PROPERTY(QUrl url READ url WRITE setUrl NOTIFY urlChanged)
0028     Q_PROPERTY(QString fileName MEMBER m_fileName NOTIFY fileNameChanged FINAL)
0029     Q_PROPERTY(double lat READ latitude NOTIFY dataReady FINAL)
0030     Q_PROPERTY(double lon READ longitude NOTIFY dataReady FINAL)
0031 
0032 public:
0033     enum ROLES { KEY, VALUE };
0034     explicit PicInfoModel(QObject *parent = nullptr);
0035 
0036     QUrl url() const;
0037     void componentComplete() override final;
0038     
0039 public Q_SLOTS:
0040     void setUrl(QUrl url);
0041 
0042     double latitude() const;
0043     double longitude() const;
0044     
0045     bool removeTag(const QString &tag);
0046     bool editTag(const QString &tag, const QString &value);
0047 
0048 private:
0049     Exiv2Extractor *m_extractor;
0050     QUrl m_url;
0051     QString m_fileName;
0052     FMH::MODEL_LIST m_data;
0053 
0054     double m_longitude;
0055     double m_latitude;
0056 
0057     void parse();
0058 
0059 Q_SIGNALS:
0060     void urlChanged(QUrl url);
0061     void fileNameChanged();
0062     void dataReady();
0063 
0064     // MauiList interface
0065 public:
0066     const FMH::MODEL_LIST &items() const override;
0067 };