digiKam
Loading...
Searching...
No Matches
itemiconview.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 : 2002-16-10
7 * Description : Item icon view interface.
8 *
9 * SPDX-FileCopyrightText: 2002-2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2002-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2009-2011 by Johannes Wienke <languitar at semipol dot de>
12 * SPDX-FileCopyrightText: 2010-2011 by Andi Clemens <andi dot clemens at gmail dot com>
13 *
14 * SPDX-License-Identifier: GPL-2.0-or-later
15 *
16 * ============================================================ */
17
18#pragma once
19
20// Qt includes
21
22#include <QStringList>
23#include <QUrl>
24
25// Local includes
26
27#include "digikam_config.h"
28#include "digikam_globals.h"
29#include "applicationsettings.h"
30#include "metaengine_rotation.h"
31#include "searchtextbar.h"
32#include "iteminfo.h"
33#include "dmodelfactory.h"
34#include "sidebarwidget.h"
35#include "stackedview.h"
36#include "dlayoutbox.h"
37
38namespace Digikam
39{
40
41class AlbumIconItem;
42class Album;
43class PAlbum;
44class TAlbum;
45class BatchSyncMetadata;
46class FilterStatusBar;
47class DCategorizedView;
48class ItemFilterModel;
49
50class ItemIconView : public DHBox
51{
52 Q_OBJECT
53
54public:
55
56 explicit ItemIconView(QWidget* const parent,
57 DModelFactory* const modelCollection);
58 ~ItemIconView() override;
59
60 void applySettings();
61
62private:
63
64 void setupConnections();
65 void loadViewState();
66 void saveViewState();
67
68 // ----------------------------------------------------------------------------------------
69
71
72
73public Q_SLOTS:
74
75 void slotImageEdit();
76 void slotEditor();
77 void slotLightTable();
78 void slotQueueMgr();
85
87
88 // ----------------------------------------------------------------------------------------
89
91
92
93public:
94
95 double zoomMin() const;
96 double zoomMax() const;
97 void setThumbSize(int size);
98
99Q_SIGNALS:
100
101 void signalZoomChanged(double);
103
104private:
105
106 void toggleZoomActions();
107
108public Q_SLOTS:
109
110 void setZoomFactor(double zoom);
111 void slotZoomIn();
112 void slotZoomOut();
114 void slotFitToWindow();
115
116private Q_SLOTS:
117
118 void slotZoomFactorChanged(double);
119 void slotThumbSizeEffect();
120
122
123 // ----------------------------------------------------------------------------------------
124
126
127
128 // ----------------------------------------------------------------------------------------
129
131
132
133public Q_SLOTS:
134
136
138
139 // ----------------------------------------------------------------------------------------
140
141public:
142
143 QList<SidebarWidget*> leftSidebarWidgets() const;
144
145 void showSideBars();
146 void hideSideBars();
147 void toggleLeftSidebar();
148 void toggleRightSidebar();
150 void nextLeftSideBarTab();
152 void nextRightSideBarTab();
153
154public Q_SLOTS:
155
156 void slotNotificationError(const QString& message, int type);
157
158 void slotLeftSideBarActivate(QWidget* widget);
162
166
167Q_SIGNALS:
168
169 void signalChangedTab(QWidget*);
170 void signalFuzzySidebarActive(bool active);
171
172private Q_SLOTS:
173
174 void slotLeftSidebarChangedTab(QWidget* w);
175 void slotSidebarTabTitleStyleChanged();
176 void slotLeftSideBarEnabled(bool busy);
177 void slotPopupFiltersView();
179
180 // ----------------------------------------------------------------------------------------
181
183
184
185public:
186
192 bool allNeedGroupResolving(const OperationType type) const;
193 bool selectedNeedGroupResolving(const OperationType type) const;
194 void setAllGroupsOpen(bool open);
195
196public Q_SLOTS:
197
203 void slotUngroupSelected();
204
205private Q_SLOTS:
206
207 void slotEmptyMessageTimer();
209
210 // ----------------------------------------------------------------------------------------
211
213
214
215public:
216
217 Album* currentAlbum() const;
218 void setRecurseAlbums(bool recursive);
219 void clearHistory();
220 void getForwardHistory(QStringList& titles);
221 void getBackwardHistory(QStringList& titles);
222
223public Q_SLOTS:
224
225 void slotRefresh();
226 void slotNewAlbum();
227 void slotSortAlbums(int role);
228 void slotDeleteAlbum();
229 void slotRenameAlbum();
230 void slotAlbumPropsEdit();
232 void slotAlbumHistoryBack(int steps = 1);
233 void slotAlbumHistoryForward(int steps = 1);
236 void slotAlbumSelected(const QList<Album*>& albums);
237
238 void slotGotoAlbumAndItem(const ItemInfo& imageInfo);
239 void slotGotoDateAndItem(const ItemInfo& imageInfo);
240 void slotGotoTagAndItem(int tagID);
241
242 void slotSelectAlbum(const QUrl& url);
243 void slotSetCurrentUrlWhenAvailable(const QUrl& url);
244 void slotSetCurrentWhenAvailable(const qlonglong id);
245
246 void slotSetAsAlbumThumbnail(const ItemInfo& info);
248 void slotCopySelectionTo();
249
250Q_SIGNALS:
251
253
254private:
255
256 void changeAlbumFromHistory(const QList<Album*>& album, QWidget* const widget);
257
258private Q_SLOTS:
259
260 void slotAllAlbumsLoaded();
261 void slotAlbumsCleared();
262 void slotAlbumRefreshComplete();
264
265 // ----------------------------------------------------------------------------------------
266
268
269
270public Q_SLOTS:
271
274 void slotNewDuplicatesSearch(const QList<PAlbum*>& albums = {});
275 void slotNewDuplicatesSearch(const QList<TAlbum*>& albums);
281
282 // ----------------------------------------------------------------------------------------
283
285
286
287public:
288
289 void setRecurseTags(bool recursive);
290 void toggleTag(int tagID);
291
292public Q_SLOTS:
293
294 void slotNewTag();
295 void slotDeleteTag();
296 void slotEditTag();
297 void slotOpenTagsManager();
298 void slotAssignTag();
299 void slotAssignTag(int tagID);
300 void slotRemoveTag(int tagID);
301 void slotAssignPickLabel(int pickId);
302 void slotAssignColorLabel(int colorId);
303 void slotAssignRating(int rating, bool toggle = true);
304
305private Q_SLOTS:
306
307 //void slotRatingChanged(const QUrl&, int);
308 //void slotColorLabelChanged(const QUrl&, int);
309 //void slotPickLabelChanged(const QUrl&, int);
310 //void slotToggleTag(const QUrl&, int);
311
313
314 // ----------------------------------------------------------------------------------------
315
317
318
319public:
320
321 int itemCount() const;
322 QUrl currentUrl() const;
323 bool hasCurrentItem() const;
324 ItemInfo currentInfo() const;
325
333 QList<QUrl> selectedUrls(bool grouping = false) const;
334 QList<QUrl> selectedUrls(const OperationType type) const;
335 ItemInfoList selectedInfoList(const bool currentFirst = false,
336 const bool grouping = false) const;
338 const bool currentFirst = false) const;
344 QList<QUrl> allUrls(bool grouping = false) const;
345 ItemInfoList allInfo(const bool grouping = false) const;
346 ItemInfoList allInfo(const OperationType type) const;
347
349
350Q_SIGNALS:
351
353 void signalSeparationModeChanged(int category);
354 void signalSelectionChanged(int numberOfSelectedItems);
355 void signalTrashSelectionChanged(const QString& text);
356 void signalImageSelected(const ItemInfoList& selectedImage,
357 const ItemInfoList& allImages);
358
359public Q_SLOTS:
360
361 void slotImagePreview();
362 void slotMapWidgetView();
363 void slotTableView();
364 void slotIconView();
365 void slotImageExifOrientation(int orientation);
366 void slotImageRename();
367 void slotImageDelete();
373 void slotSelectAll();
374 void slotSelectNone();
375 void slotSelectInvert();
376 void slotSortImages(int order);
377 void slotSortImagesOrder(int order);
378 void slotSeparateImages(int mode);
379 void slotImageSeparationSortOrder(int order);
380 void slotImagePaste();
382
383private Q_SLOTS:
384
385 void slotFirstItem();
386 void slotPrevItem();
387 void slotNextItem();
388 void slotLastItem();
389 void slotSelectItemByUrl(const QUrl&);
390 void slotAwayFromSelection();
391 void slotImageSelected();
392 void slotDispatchImageSelected();
393 void slotImageChangeFailed(const QString& message, const QStringList& fileNames);
395
396 // ----------------------------------------------------------------------------------------
397
399
400
401public:
402
403 void setToolsIconView(DCategorizedView* const view);
404 void toggleShowBar(bool);
405 void toggleFullScreen(bool set);
406 void refreshView();
407 void connectIconViewFilter(FilterStatusBar* const filter);
409
410Q_SIGNALS:
411
417
419 void signalGotoDateAndItem(AlbumIconItem*);
420 void signalGotoTagAndItem(int tagID);
421
422private Q_SLOTS:
423
424 void slotTogglePreviewMode(const ItemInfo& info);
425 void slotEscapePreview();
426 void slotRefreshImagePreview();
427 void slotViewModeChanged();
428 void slotSetupMetadataFilters(int);
429 void slotSetupExifTool();
430
431 void slotShowContextMenu(QContextMenuEvent* event,
432 const QList<QAction*>& extraGroupingActions = QList<QAction*>());
433
434 void slotShowContextMenuOnInfo(QContextMenuEvent* event, const ItemInfo& info,
435 const QList<QAction*>& extraGroupingActions = QList<QAction*>(),
436 ItemFilterModel* imageFilterModel = nullptr);
437
438 void slotShowGroupContextMenu(QContextMenuEvent* event,
439 const QList<ItemInfo>& selectedInfos,
440 ItemFilterModel* imageFilterModel = nullptr);
442
443 // ----------------------------------------------------------------------------------------
444
445private:
446
447 class Private;
448 Private* const d = nullptr;
449};
450
451} // namespace Digikam
Abstract base class for all album types.
Definition album.h:57
Item view for listing items.
Definition dcategorizedview.h:39
Definition dlayoutbox.h:35
Definition dmodelfactory.h:39
Definition filterstatusbar.h:29
Definition itemfiltermodel.h:115
Definition itemiconview_p.h:115
Definition itemiconview.h:51
void refreshView()
Definition itemiconview_views.cpp:246
QList< QUrl > allUrls(bool grouping=false) const
Definition itemiconview_items.cpp:26
void applySettings()
Definition itemiconview.cpp:249
void nextLeftSideBarTab()
Definition itemiconview_sidebars.cpp:60
void slotSeparateImages(int mode)
Definition itemiconview_items.cpp:449
void setToolsIconView(DCategorizedView *const view)
Views management methods - itemiconview_views.cpp.
Definition itemiconview_views.cpp:239
void slotLeftSideBarActivateAlbums()
Definition itemiconview_sidebars.cpp:82
void signalSeparationModeChanged(int category)
Album * currentAlbum() const
Album management methods - itemiconview_album.cpp.
Definition itemiconview_albums.cpp:392
void slotImageWriteMetadata()
Definition itemiconview_items.cpp:226
void signalGotoTagAndItem(int tagID)
ItemInfo currentInfo() const
Definition itemiconview_items.cpp:535
void slotFileWithDefaultApplication()
Definition itemiconview_tools.cpp:40
void setAllGroupsOpen(bool open)
Definition itemiconview_groups.cpp:78
void slotImageReadMetadata()
Definition itemiconview_items.cpp:241
void signalChangedTab(QWidget *)
void slotRemoveTag(int tagID)
Definition itemiconview_tags.cpp:126
void slotCreateGroupByTimeFromSelection()
Definition itemiconview_groups.cpp:93
void slotImageRename()
Definition itemiconview_items.cpp:257
void signalFuzzySidebarActive(bool active)
void slotQueueMgr()
Definition itemiconview_tools.cpp:61
void signalGotoAlbumAndItem(const ItemInfo &)
void slotRightSideBarActivateComments()
Definition itemiconview_sidebars.cpp:108
void slotImageExifOrientation(int orientation)
Definition itemiconview_items.cpp:523
void slotImageSeparationSortOrder(int order)
Definition itemiconview_items.cpp:462
void slotImageAddToNewQueue()
Definition itemiconview_tools.cpp:121
void slotSelectAlbum(const QUrl &url)
Definition itemiconview_albums.cpp:119
void slotLeftSideBarActivateTags()
Definition itemiconview_sidebars.cpp:87
void slotRefresh()
Definition itemiconview_albums.cpp:429
void nextRightSideBarTab()
Definition itemiconview_sidebars.cpp:70
void setRecurseAlbums(bool recursive)
Definition itemiconview_albums.cpp:387
void slotImageRemoveAllFaces()
Definition itemiconview_search.cpp:155
void slotGotoAlbumAndItem(const ItemInfo &imageInfo)
Definition itemiconview_albums.cpp:211
void slotImagePaste()
Definition itemiconview_items.cpp:475
void slotSelectInvert()
Definition itemiconview_items.cpp:403
void slotMapWidgetView()
Definition itemiconview_views.cpp:61
void slotRightSideBarActivateTitles()
Definition itemiconview_sidebars.cpp:102
StackedView::StackedViewMode viewMode() const
Definition itemiconview_views.cpp:219
void slotImageScanForFaces()
Definition itemiconview_search.cpp:63
void slotZoomTo100Percents()
Definition itemiconview_zoom.cpp:126
void slotOpenTagsManager()
Definition itemiconview_tags.cpp:197
void slotAssignPickLabel(int pickId)
Definition itemiconview_tags.cpp:57
void slotImageRecognizeFaces()
Definition itemiconview_search.cpp:110
void slotDeleteTag()
Definition itemiconview_tags.cpp:177
QUrl currentUrl() const
Definition itemiconview_items.cpp:650
void slotSetCurrentUrlWhenAvailable(const QUrl &url)
Definition itemiconview_items.cpp:657
void slotAlbumWriteMetadata()
Definition itemiconview_albums.cpp:352
void slotGotoTagAndItem(int tagID)
Definition itemiconview_albums.cpp:255
void slotAssignTag()
Definition itemiconview_tags.cpp:115
void slotEditTag()
Definition itemiconview_tags.cpp:187
void getForwardHistory(QStringList &titles)
Definition itemiconview_albums.cpp:503
void slotTableView()
Definition itemiconview_views.cpp:66
void slotSortImages(int order)
Definition itemiconview_items.cpp:421
void slotIconView()
Definition itemiconview_views.cpp:71
void slotAlbumPropsEdit()
Definition itemiconview_albums.cpp:337
void slotAlbumSelected(const QList< Album * > &albums)
Definition itemiconview_albums.cpp:133
void slotRightSideBarActivateAssignedTags()
Definition itemiconview_sidebars.cpp:114
void toggleTag(int tagID)
Definition itemiconview_tags.cpp:31
void toggleShowBar(bool)
Definition itemiconview_views.cpp:210
void toggleLeftSidebar()
Definition itemiconview_sidebars.cpp:43
void signalSelectionChanged(int numberOfSelectedItems)
void slotFocusAndNextImage()
Definition itemiconview_items.cpp:512
void slotImageTrashDirectly()
Definition itemiconview_items.cpp:349
void slotAssignColorLabel(int colorId)
Definition itemiconview_tags.cpp:74
void slotSortAlbums(int role)
Definition itemiconview_albums.cpp:41
void setZoomFactor(double zoom)
Definition itemiconview_zoom.cpp:36
void signalSwitchedToTableView()
ItemInfoList allInfo(const bool grouping=false) const
Definition itemiconview_items.cpp:614
double zoomMin() const
Zoom management methods - itemiconview_zoom.cpp.
Definition itemiconview_zoom.cpp:26
bool allNeedGroupResolving(const OperationType type) const
Item Group methods - itemiconview_groups.cpp.
Definition itemiconview_groups.cpp:26
void slotImageLightTable()
Definition itemiconview_tools.cpp:93
void hideSideBars()
Definition itemiconview_sidebars.cpp:37
void slotMoveSelectionToAlbum()
Definition itemiconview_albums.cpp:423
void slotCreateGroupByTimelapseFromSelection()
Definition itemiconview_groups.cpp:103
void slotNotificationError(const QString &message, int type)
Definition itemiconview_sidebars.cpp:75
void imageTransform(MetaEngineRotation::TransformationAction transform)
Definition itemiconview_items.cpp:529
void slotImageDeletePermanentlyDirectly()
Definition itemiconview_items.cpp:331
void slotImageFindSimilar()
Definition itemiconview_search.cpp:52
void slotLightTable()
Definition itemiconview_tools.cpp:45
int itemCount() const
Items management methods - itemiconview_items.cpp.
Definition itemiconview_items.cpp:645
ItemInfoList selectedInfoList(const bool currentFirst=false, const bool grouping=false) const
Definition itemiconview_items.cpp:569
void showSideBars()
Definition itemiconview_sidebars.cpp:31
void signalAlbumSelected(Album *)
void previousRightSideBarTab()
Definition itemiconview_sidebars.cpp:65
void getBackwardHistory(QStringList &titles)
Definition itemiconview_albums.cpp:493
void slotSetAsAlbumThumbnail(const ItemInfo &info)
Definition itemiconview_albums.cpp:418
void slotImageAddToLightTable()
Definition itemiconview_tools.cpp:103
void slotImageAddToExistingQueue(int)
Definition itemiconview_tools.cpp:132
void signalThumbSizeChanged(int)
void slotNewAdvancedSearch()
Definition itemiconview_search.cpp:33
void slotImageAddToCurrentQueue()
Definition itemiconview_tools.cpp:113
void slotCopySelectionTo()
Definition itemiconview_items.cpp:711
void slotImageQualitySorter()
Side-bars handling methods - itemiconview_sidebars.cpp.
Definition itemiconview_iqs.cpp:26
void toggleFullScreen(bool set)
Definition itemiconview_views.cpp:234
void slotGotoDateAndItem(const ItemInfo &imageInfo)
Definition itemiconview_albums.cpp:233
void slotSelectNone()
Definition itemiconview_items.cpp:385
void signalSwitchedToTrashView()
void slotSetCurrentWhenAvailable(const qlonglong id)
Definition itemiconview_items.cpp:675
void slotRenameAlbum()
Definition itemiconview_albums.cpp:62
void slotCreateGroupByFilenameFromSelection()
Definition itemiconview_groups.cpp:98
void slotFitToWindow()
Definition itemiconview_zoom.cpp:134
void slotImageDeletePermanently()
Definition itemiconview_items.cpp:303
void slotEditor()
Definition itemiconview_tools.cpp:26
void slotSelectAll()
Definition itemiconview_items.cpp:367
void slotImagePreview()
Definition itemiconview_views.cpp:87
void clearHistory()
Definition itemiconview_albums.cpp:486
void previousLeftSideBarTab()
Definition itemiconview_sidebars.cpp:55
void setThumbSize(int size)
Definition itemiconview_zoom.cpp:155
bool selectedNeedGroupResolving(const OperationType type) const
Definition itemiconview_groups.cpp:52
void slotZoomIn()
Definition itemiconview_zoom.cpp:90
void slotSortImagesOrder(int order)
Definition itemiconview_items.cpp:435
void slotLeftSideBarActivate(QWidget *widget)
Definition itemiconview_sidebars.cpp:97
QList< QUrl > selectedUrls(bool grouping=false) const
Definition itemiconview_items.cpp:33
void slotRemoveSelectedFromGroup()
Definition itemiconview_groups.cpp:108
~ItemIconView() override
Definition itemiconview.cpp:240
void slotNewTag()
Definition itemiconview_tags.cpp:167
void signalImageSelected(const ItemInfoList &selectedImage, const ItemInfoList &allImages)
void slotAlbumReadMetadata()
Definition itemiconview_albums.cpp:373
double zoomMax() const
Definition itemiconview_zoom.cpp:31
void slotAlbumHistoryForward(int steps=1)
Definition itemiconview_albums.cpp:82
void slotImageDelete()
Definition itemiconview_items.cpp:275
void slotAlbumOpenInFileManager()
Definition itemiconview_albums.cpp:290
void slotZoomOut()
Definition itemiconview_zoom.cpp:108
void signalTrashSelectionChanged(const QString &text)
void slotAssignRating(int rating, bool toggle=true)
Definition itemiconview_tags.cpp:91
void slotNewKeywordSearch()
Search management methods - itemiconview_search.cpp.
Definition itemiconview_search.cpp:27
void setRecurseTags(bool recursive)
Tags management methods - itemiconview_tags.cpp.
Definition itemiconview_tags.cpp:26
void slotNewAlbum()
Definition itemiconview_albums.cpp:50
void slotAlbumHistoryBack(int steps=1)
Definition itemiconview_albums.cpp:72
void slotCreateGroupFromSelection()
Definition itemiconview_groups.cpp:88
void slotDeleteAlbum()
Definition itemiconview_albums.cpp:57
void slotNewDuplicatesSearch(const QList< PAlbum * > &albums={})
Definition itemiconview_search.cpp:39
void slotImageEdit()
Tools methods (Editor, BQM, Light Table) - itemiconview_tools.cpp.
Definition itemiconview_tools.cpp:86
void signalZoomChanged(double)
void signalGotoDateAndItem(AlbumIconItem *)
void toggleRightSidebar()
Definition itemiconview_sidebars.cpp:49
void slotUngroupSelected()
Definition itemiconview_groups.cpp:113
void connectIconViewFilter(FilterStatusBar *const filter)
Definition itemiconview_views.cpp:26
QList< SidebarWidget * > leftSidebarWidgets() const
Definition itemiconview_sidebars.cpp:26
bool hasCurrentItem() const
Definition itemiconview_items.cpp:507
Definition iteminfolist.h:37
Definition iteminfo.h:68
TransformationAction
Definition metaengine_rotation.h:44
Definition sidebarwidget.h:36
StackedViewMode
Definition stackedview.h:60
@ Album
Definition coredbfields.h:48
Definition datefolderview.cpp:34
OperationType
Definition digikam_globals.h:161