File indexing completed on 2025-03-09 03:58:43
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2012-26-07 0007 * Description : Main view for import tool 0008 * 0009 * SPDX-FileCopyrightText: 2012 by Islam Wazery <wazery at ubuntu dot com> 0010 * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #ifndef DIGIKAM_IMPORTVIEW_H 0017 #define DIGIKAM_IMPORTVIEW_H 0018 0019 // Local includes 0020 0021 #include "dlayoutbox.h" 0022 #include "camiteminfo.h" 0023 #include "sidebarwidget.h" 0024 #include "importui.h" 0025 #include "importstackedview.h" 0026 0027 namespace Digikam 0028 { 0029 0030 class ImportUI; 0031 0032 class ImportView : public DHBox 0033 { 0034 Q_OBJECT 0035 0036 public: 0037 0038 ImportView(Digikam::ImportUI* const ui, QWidget* const parent); 0039 ~ImportView() override; 0040 0041 void applySettings(); 0042 void refreshView(); 0043 void clearHistory(); 0044 void getForwardHistory(QStringList& titles); 0045 void getBackwardHistory(QStringList& titles); 0046 void showSideBars(); 0047 void hideSideBars(); 0048 void setThumbSize(int size); 0049 void toggleShowBar(bool b); 0050 void toggleFullScreen(bool set); 0051 void updateIconView(); 0052 0053 void scrollTo(const QString& folder, const QString& file); 0054 0055 CamItemInfo camItemInfo(const QString& folder, const QString& file) const; 0056 CamItemInfo& camItemInfoRef(const QString& folder, const QString& file) const; 0057 bool hasImage(const CamItemInfo& info) const; 0058 0059 QList<QUrl> allUrls() const; 0060 QList<QUrl> selectedUrls() const; 0061 QList<CamItemInfo> selectedCamItemInfos() const; 0062 QList<CamItemInfo> allItems() const; 0063 void setSelectedCamItemInfos(const CamItemInfoList& infos) const; 0064 int downloadedCamItemInfos() const; 0065 bool hasCurrentItem() const; 0066 bool isSelected(const QUrl& url) const; 0067 0068 double zoomMin() const; 0069 double zoomMax() const; 0070 ThumbnailSize thumbnailSize() const; 0071 ImportStackedView::StackedViewMode viewMode() const; 0072 ImportFilterModel* importFilterModel() const; 0073 0074 Q_SIGNALS: 0075 0076 void signalImageSelected(const CamItemInfoList& selectedImage, const CamItemInfoList& allImages); 0077 void signalNewSelection(bool hasSelection); 0078 void signalNoCurrentItem(); 0079 void signalSelectionChanged(int numberOfSelectedItems); 0080 void signalThumbSizeChanged(int); 0081 void signalZoomChanged(double); 0082 void signalSwitchedToPreview(); 0083 void signalSwitchedToIconView(); 0084 void signalSwitchedToMapView(); 0085 0086 public Q_SLOTS: 0087 0088 void setZoomFactor(double zoom); 0089 0090 /// View Action slots 0091 void slotZoomIn(); 0092 void slotZoomOut(); 0093 void slotZoomTo100Percents(); 0094 void slotFitToWindow(); 0095 0096 void slotImagePreview(); 0097 void slotMapWidgetView(); 0098 void slotIconView(); 0099 0100 void slotSelectAll(); 0101 void slotSelectNone(); 0102 void slotSelectInvert(); 0103 0104 void slotImageRename(); 0105 0106 void slotSortImagesBy(int sortBy); 0107 void slotSortImagesOrder(int order); 0108 void slotSeparateImages(int mode); 0109 0110 private Q_SLOTS: 0111 0112 void slotImageSelected(); 0113 void slotTogglePreviewMode(const CamItemInfo& info, bool downloadPreview); 0114 void slotDispatchImageSelected(); 0115 0116 void slotFirstItem(); 0117 void slotPrevItem(); 0118 void slotNextItem(); 0119 void slotLastItem(); 0120 void slotSelectItemByUrl(const QUrl&); 0121 0122 void slotViewModeChanged(); 0123 void slotEscapePreview(); 0124 0125 void slotThumbSizeEffect(); 0126 void slotZoomFactorChanged(double); 0127 0128 void slotImageChangeFailed(const QString& message, const QStringList& fileNames); 0129 0130 private: 0131 0132 void toggleZoomActions(); 0133 void setupConnections(); 0134 void loadViewState(); 0135 void saveViewState(); 0136 0137 private: 0138 0139 class Private; 0140 Private* const d; 0141 }; 0142 0143 } // namespace Digikam 0144 0145 #endif // DIGIKAM_IMPORTVIEW_H