File indexing completed on 2024-04-28 04:21:22
0001 // SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team 0002 // SPDX-FileCopyrightText: 2021-2023 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0003 // 0004 // SPDX-License-Identifier: GPL-2.0-or-later 0005 0006 #ifndef THUMBNAILFACADE_H 0007 #define THUMBNAILFACADE_H 0008 #include "ThumbnailFactory.h" 0009 #include "ThumbnailWidget.h" 0010 0011 #include <kpabase/FileNameList.h> 0012 0013 class KActionCollection; 0014 class QSlider; 0015 0016 namespace DB 0017 { 0018 class ImageSearchInfo; 0019 } 0020 namespace ImageManager 0021 { 0022 class ThumbnailCache; 0023 } 0024 0025 namespace ThumbnailView 0026 { 0027 class ThumbnailModel; 0028 class CellGeometry; 0029 class FilterWidget; 0030 class ThumbnailPainter; 0031 class ThumbnailToolTip; 0032 0033 class ThumbnailFacade : public QObject, public ThumbnailFactory 0034 { 0035 Q_OBJECT 0036 public: 0037 static ThumbnailFacade *instance(); 0038 ThumbnailFacade(ImageManager::ThumbnailCache *thumbnailCache); 0039 QWidget *gui(); 0040 void setCurrentItem(const DB::FileName &fileName); 0041 void reload(SelectionUpdateMethod method); 0042 DB::FileNameList selection(ThumbnailView::SelectionMode mode = ExpandCollapsedStacks) const; 0043 DB::FileNameList imageList(Order) const; 0044 DB::FileName mediaIdUnderCursor() const; 0045 DB::FileName currentItem() const; 0046 void setImageList(const DB::FileNameList &list); 0047 void setSortDirection(SortDirection); 0048 /** 0049 * @brief createResizeSlider returns a QSlider that can be used to resize the thumbnail grid. 0050 * @return a (horizontal) QSlider 0051 */ 0052 QSlider *createResizeSlider(); 0053 0054 /** 0055 * @brief filterWidget provides a FilterWidget that is connected to the ThumbnailModel. 0056 * The widget will reflect changes in the filter and can be used to set the filter. 0057 * @return a FilterWidget 0058 */ 0059 FilterWidget *createFilterWidget(QWidget *parent); 0060 0061 public Q_SLOTS: 0062 void gotoDate(const DB::ImageDate &date, bool includeRanges); 0063 void selectAll(); 0064 void clearSelection(); 0065 void showToolTipsOnImages(bool b); 0066 void toggleStackExpansion(const DB::FileName &id); 0067 void collapseAllStacks(); 0068 void expandAllStacks(); 0069 void updateDisplayModel(); 0070 void changeSingleSelection(const DB::FileName &fileName); 0071 0072 void clearFilter(); 0073 void setFreeformFilter(const QString &text); 0074 0075 Q_SIGNALS: 0076 void showImage(const DB::FileName &id); 0077 void showSelection(); 0078 void showSearch(); 0079 void fileIdUnderCursorChanged(const DB::FileName &id); 0080 void currentDateChanged(const Utilities::FastDateTime &); 0081 void selectionChanged(int numberOfItemsSelected); 0082 void collapseAllStacksEnabled(bool enabled); 0083 void expandAllStacksEnabled(bool enabled); 0084 void filterChanged(const DB::ImageSearchInfo &); 0085 0086 private: 0087 ThumbnailModel *model() override; 0088 CellGeometry *cellGeometry() override; 0089 ThumbnailWidget *widget() override; 0090 0091 private: 0092 static ThumbnailFacade *s_instance; 0093 CellGeometry *m_cellGeometry; 0094 ThumbnailModel *m_model; 0095 ThumbnailWidget *m_widget; 0096 ThumbnailToolTip *m_toolTip; 0097 ImageManager::ThumbnailCache *m_thumbnailCache; 0098 }; 0099 } 0100 0101 #endif /* THUMBNAILFACADE_H */ 0102 0103 // vi:expandtab:tabstop=4 shiftwidth=4: