digiKam
gpsitemmodel.h
Go to the documentation of this file.
1 /* ============================================================
2  *
3  * This file is a part of digiKam project
4  * https://www.digikam.org
5  *
6  * Date : 2010-03-21
7  * Description : A model to hold GPS information about items.
8  *
9  * Copyright (C) 2010-2022 by Gilles Caulier <caulier dot gilles at gmail dot com>
10  * Copyright (C) 2010 by Michael G. Hansen <mike at mghansen dot de>
11  *
12  * This program is free software; you can redistribute it
13  * and/or modify it under the terms of the GNU General
14  * Public License as published by the Free Software Foundation;
15  * either version 2, or (at your option)
16  * any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * ============================================================ */
24 
25 #ifndef DIGIKAM_GPS_ITEM_MODEL_H
26 #define DIGIKAM_GPS_ITEM_MODEL_H
27 
28 // Qt includes
29 
30 #include <QAbstractItemModel>
31 #include <QPixmap>
32 
33 // Local includes
34 
35 #include "gpsitemcontainer.h"
36 #include "thumbnailloadthread.h"
37 #include "digikam_export.h"
38 
39 namespace Digikam
40 {
41 
42 class DIGIKAM_EXPORT GPSItemModel : public QAbstractItemModel
43 {
44  Q_OBJECT
45 
46 public:
47 
48  explicit GPSItemModel(QObject* const parent = nullptr);
49  ~GPSItemModel() override;
50 
51  // own functions:
52 
53  void addItem(GPSItemContainer* const newItem);
54  void setColumnCount(const int nColumns);
55  GPSItemContainer* itemFromIndex(const QModelIndex& index) const;
56  GPSItemContainer* itemFromUrl(const QUrl& url) const;
57  QModelIndex indexFromUrl(const QUrl& url) const;
58 
59  QPixmap getPixmapForIndex(const QPersistentModelIndex& itemIndex, const int size);
60 
61  // QAbstractItemModel customizations:
62 
63  int columnCount(const QModelIndex& parent = QModelIndex()) const override;
64  bool setData(const QModelIndex& index, const QVariant& value, int role) override;
65  QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
66  QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
67  QModelIndex parent(const QModelIndex& index) const override;
68  int rowCount(const QModelIndex& parent = QModelIndex()) const override;
69  bool setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, int role) override;
70  QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
71  Qt::ItemFlags flags(const QModelIndex& index) const override;
72  Qt::DropActions supportedDragActions() const override;
73 
74 protected:
75 
76  void itemChanged(GPSItemContainer* const changedItem);
77 
78 Q_SIGNALS:
79 
80  void signalThumbnailForIndexAvailable(const QPersistentModelIndex& index, const QPixmap& pixmap);
81 
82 protected Q_SLOTS:
83 
84  void slotThumbnailLoaded(const LoadingDescription&, const QPixmap&);
85 
86 private:
87 
88  class Private;
89  Private* const d;
90 
91  friend class GPSItemContainer;
92 };
93 
94 } // namespace Digikam
95 
96 #endif // DIGIKAM_GPS_ITEM_MODEL_H
Definition: gpsitemcontainer.h:96
Definition: gpsitemmodel.h:43
void signalThumbnailForIndexAvailable(const QPersistentModelIndex &index, const QPixmap &pixmap)
Definition: loadingdescription.h:45
qulonglong value
Definition: itemviewutilities.cpp:592
@ Orientation
Definition: coredbfields.h:86
Definition: datefolderview.cpp:43