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