digiKam
Loading...
Searching...
No Matches
itemcategorizedview.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 : 2009-04-22
7 * Description : Qt model-view for items
8 *
9 * SPDX-FileCopyrightText: 2009-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2017 by Simon Frei <freisim93 at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Local includes
19
20#include "iteminfo.h"
21#include "itemviewcategorized.h"
22#include "thumbnailsize.h"
24
25namespace Digikam
26{
27
28class Album;
29class ItemAlbumModel;
30class ItemAlbumFilterModel;
31class ItemModel;
32class ItemFilterModel;
33class ImageSortFilterModel;
34class ItemDelegate;
35class ItemDelegateOverlay;
36class ItemThumbnailModel;
37
39{
40 Q_OBJECT
41
42public:
43
44 explicit ItemCategorizedView(QWidget* const parent = nullptr);
45 ~ItemCategorizedView() override;
46
48
49 ItemModel* imageModel() const;
51
52 QItemSelectionModel* getSelectionModel() const;
53
56
59
63
64 ItemDelegate* delegate() const;
65
66 Album* currentAlbum() const;
67 ItemInfo currentInfo() const;
68 QUrl currentUrl() const;
69
71 QList<QUrl> allUrls() const;
74
77 void toIndex(const QUrl& url);
78
85 ItemInfo nextInOrder(const ItemInfo& startingPoint, int nth);
86
88 {
89 return nextInOrder(info, -1);
90 }
91
93 {
94 return nextInOrder(info, 1);
95 }
96
97 QModelIndex indexForInfo(const ItemInfo& info) const;
98
100
101 virtual void setThumbnailSize(const ThumbnailSize& size);
102
107 Album* albumAt(const QPoint& pos) const;
108
111 void addOverlay(ItemDelegateOverlay* overlay, ItemDelegate* delegate = nullptr);
112
113 void removeOverlay(ItemDelegateOverlay* overlay);
114
116
117public Q_SLOTS:
118
119 void openAlbum(const QList<Album*>& album);
120
121 void setThumbnailSize(int size);
122
125 void setCurrentWhenAvailable(qlonglong imageId);
126
129 void setCurrentUrlWhenAvailable(const QUrl& url);
130
133 void setCurrentUrl(const QUrl& url);
134
137 void setCurrentInfo(const ItemInfo& info);
138
141 void setSelectedUrls(const QList<QUrl>& urlList);
142
145 void setSelectedItemInfos(const QList<ItemInfo>& infos);
146
149 void hintAt(const ItemInfo& info);
150
151Q_SIGNALS:
152
153 void currentChanged(const ItemInfo& info);
154
157 void selected(const QList<ItemInfo>& newSelectedInfos);
158
161 void deselected(const QList<ItemInfo>& nowDeselectedInfos);
162
164 void imageActivated(const ItemInfo& info);
165
168
169protected Q_SLOTS:
170
171 void slotItemInfosAdded();
172 void slotCurrentUrlTimer();
173
174protected:
175
178
179 // reimplemented from parent class
180
181 QSortFilterProxyModel* filterModel() const override;
183 QModelIndex nextIndexHint(const QModelIndex& indexToAnchor,
184 const QItemSelectionRange& removed) const override;
185
187 void indexActivated(const QModelIndex& index, Qt::KeyboardModifiers modifiers) override;
188 void currentChanged(const QModelIndex& index, const QModelIndex& previous) override;
189 void selectionChanged(const QItemSelection&, const QItemSelection&) override;
190 void updateGeometries() override;
191
193 virtual void activated(const ItemInfo& info, Qt::KeyboardModifiers modifiers);
194 virtual void showContextMenuOnInfo(QContextMenuEvent* event, const ItemInfo& info);
195 void showContextMenuOnIndex(QContextMenuEvent* event, const QModelIndex& index) override;
196
197 ItemInfo imageInfo(const QModelIndex& index) const;
198 ItemInfoList imageInfos(const QList<QModelIndex>& indexes) const;
199
200private Q_SLOTS:
201
202 void slotIccSettingsChanged(const ICCSettingsContainer&, const ICCSettingsContainer&);
203 void slotFileChanged(const QString& filePath);
204 void slotDelayedEnter();
205
206private:
207
208 void scrollToStoredItem();
209
210private:
211
212 class Private;
213 Private* const d = nullptr;
214};
215
216} // namespace Digikam
Definition abstractitemdragdrophandler.h:32
Abstract base class for all album types.
Definition album.h:57
Definition iccsettingscontainer.h:35
Definition itemfiltermodel.h:53
Definition itemalbumfiltermodel.h:30
Definition itemalbummodel.h:37
Definition itemcategorizedview.h:39
void updateGeometries() override
Definition itemcategorizedview.cpp:585
Album * albumAt(const QPoint &pos) const
Definition itemcategorizedview.cpp:684
void deselected(const QList< ItemInfo > &nowDeselectedInfos)
Emitted when items are deselected. There may be other selected infos left. This signal is not emitted...
void setItemDelegate(ItemDelegate *delegate)
Definition itemcategorizedview.cpp:225
QModelIndex indexForInfo(const ItemInfo &info) const
Definition itemcategorizedview.cpp:340
void modelChanged()
Emitted when a new model is set.
virtual void showContextMenuOnInfo(QContextMenuEvent *event, const ItemInfo &info)
Definition itemcategorizedview.cpp:711
void slotCurrentUrlTimer()
Definition itemcategorizedview.cpp:634
ItemThumbnailModel * imageThumbnailModel() const
Returns 0 if the ItemModel is not an ItemThumbnailModel.
Definition itemcategorizedview.cpp:200
Album * currentAlbum() const
Definition itemcategorizedview.cpp:267
void setSelectedItemInfos(const QList< ItemInfo > &infos)
Definition itemcategorizedview.cpp:526
ImageSortFilterModel * imageSortFilterModel() const
Definition itemcategorizedview.cpp:190
virtual void activated(const ItemInfo &info, Qt::KeyboardModifiers modifiers)
Reimplement these in a subclass.
Definition itemcategorizedview.cpp:701
void installDefaultModels()
install default ItemAlbumModel and filter model, ready for use
Definition itemcategorizedview.cpp:122
void hintAt(const ItemInfo &info)
Definition itemcategorizedview.cpp:539
void openAlbum(const QList< Album * > &album)
Definition itemcategorizedview.cpp:400
ItemInfo nextInOrder(const ItemInfo &startingPoint, int nth)
Definition itemcategorizedview.cpp:345
void showContextMenuOnIndex(QContextMenuEvent *event, const QModelIndex &index) override
Reimplement these in a subclass.
Definition itemcategorizedview.cpp:706
QItemSelectionModel * getSelectionModel() const
Definition itemcategorizedview.cpp:716
void setModels(ItemModel *model, ImageSortFilterModel *filterModel)
Definition itemcategorizedview.cpp:140
ItemInfo imageInfo(const QModelIndex &index) const
Definition itemcategorizedview.cpp:291
void setSelectedUrls(const QList< QUrl > &urlList)
Definition itemcategorizedview.cpp:501
ItemFilterModel * imageFilterModel() const
Returns any ItemFilterMode in chain. May not be sourceModel()
Definition itemcategorizedview.cpp:195
ItemInfoList selectedItemInfosCurrentFirst() const
Definition itemcategorizedview.cpp:316
ItemAlbumFilterModel * imageAlbumFilterModel() const
Definition itemcategorizedview.cpp:210
ItemInfo nextInfo(const ItemInfo &info)
Definition itemcategorizedview.h:92
void addOverlay(ItemDelegateOverlay *overlay, ItemDelegate *delegate=nullptr)
Add and remove an overlay. It will as well be removed automatically when destroyed....
Definition itemcategorizedview.cpp:557
ItemInfo previousInfo(const ItemInfo &info)
Definition itemcategorizedview.h:87
void setCurrentUrlWhenAvailable(const QUrl &url)
Definition itemcategorizedview.cpp:447
ItemModel * imageModel() const
Definition itemcategorizedview.cpp:185
void removeOverlay(ItemDelegateOverlay *overlay)
Definition itemcategorizedview.cpp:573
void addSelectionOverlay(ItemDelegate *delegate=nullptr)
Definition itemcategorizedview.cpp:603
void setCurrentWhenAvailable(qlonglong imageId)
Definition itemcategorizedview.cpp:442
virtual void setThumbnailSize(const ThumbnailSize &size)
Definition itemcategorizedview.cpp:433
void setCurrentInfo(const ItemInfo &info)
Definition itemcategorizedview.cpp:494
QModelIndex nextIndexHint(const QModelIndex &indexToAnchor, const QItemSelectionRange &removed) const override
Definition itemcategorizedview.cpp:357
ItemInfoList imageInfos(const QList< QModelIndex > &indexes) const
Definition itemcategorizedview.cpp:296
ItemInfoList allItemInfos() const
Definition itemcategorizedview.cpp:301
void setCurrentUrl(const QUrl &url)
Definition itemcategorizedview.cpp:472
void selected(const QList< ItemInfo > &newSelectedInfos)
Emitted when new items are selected. The parameter includes only the newly selected infos,...
QList< QUrl > allUrls() const
Definition itemcategorizedview.cpp:306
~ItemCategorizedView() override
Definition itemcategorizedview.cpp:115
void currentChanged(const ItemInfo &info)
void imageActivated(const ItemInfo &info)
Emitted when the given image is activated. Info is never null.
void indexActivated(const QModelIndex &index, Qt::KeyboardModifiers modifiers) override
Definition itemcategorizedview.cpp:650
ItemDelegate * delegate() const
Definition itemcategorizedview.cpp:220
ItemInfo currentInfo() const
Definition itemcategorizedview.cpp:281
ItemInfoList selectedItemInfos() const
Definition itemcategorizedview.cpp:311
void slotItemInfosAdded()
Definition itemcategorizedview.cpp:622
ItemAlbumModel * imageAlbumModel() const
Returns 0 if the ItemModel is not an ItemAlbumModel.
Definition itemcategorizedview.cpp:205
QSortFilterProxyModel * filterModel() const override
Definition itemcategorizedview.cpp:215
ThumbnailSize thumbnailSize() const
Definition itemcategorizedview.cpp:410
AbstractItemDragDropHandler * dragDropHandler() const override
Definition itemcategorizedview.cpp:721
void toIndex(const QUrl &url)
Definition itemcategorizedview.cpp:335
QUrl currentUrl() const
Definition itemcategorizedview.cpp:286
Definition itemdelegateoverlay.h:31
Definition itemdelegate.h:34
Definition itemfiltermodel.h:115
Definition iteminfolist.h:37
Definition iteminfo.h:68
Definition itemmodel.h:44
Definition itemthumbnailmodel.h:31
Definition itemviewcategorized.h:34
Definition thumbnailsize.h:32
@ Album
Definition coredbfields.h:48
Definition datefolderview.cpp:34