File indexing completed on 2025-03-09 03:58:45

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2007-03-05
0007  * Description : a widget to display 2 preview image on
0008  *               lightable to compare pictures.
0009  *
0010  * SPDX-FileCopyrightText: 2007-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_LIGHT_TABLE_VIEW_H
0017 #define DIGIKAM_LIGHT_TABLE_VIEW_H
0018 
0019 // Qt includes
0020 
0021 #include <QFrame>
0022 #include <QString>
0023 
0024 // Local includes
0025 
0026 #include "iteminfo.h"
0027 
0028 namespace Digikam
0029 {
0030 
0031 class PreviewSettings;
0032 
0033 class LightTableView : public QFrame
0034 {
0035     Q_OBJECT
0036 
0037 public:
0038 
0039     explicit LightTableView(QWidget* const parent = nullptr);
0040     ~LightTableView() override;
0041 
0042     void   setSyncPreview(bool sync);
0043     void   setNavigateByPair(bool b);
0044 
0045     void   setLeftItemInfo(const ItemInfo& info = ItemInfo());
0046     void   setRightItemInfo(const ItemInfo& info = ItemInfo());
0047 
0048     ItemInfo leftItemInfo()  const;
0049     ItemInfo rightItemInfo() const;
0050 
0051     void   setPreviewSettings(const PreviewSettings& settings);
0052 
0053     void   checkForSelection(const ItemInfo& info);
0054     void   toggleFullScreen(bool set);
0055 
0056     double leftZoomMax()     const;
0057     double leftZoomMin()     const;
0058 
0059     double rightZoomMax()    const;
0060     double rightZoomMin()    const;
0061 
0062     bool   leftMaxZoom()     const;
0063     bool   leftMinZoom()     const;
0064 
0065     bool   rightMaxZoom()    const;
0066     bool   rightMinZoom()    const;
0067 
0068     void   leftReload();
0069     void   rightReload();
0070 
0071 Q_SIGNALS:
0072 
0073     void signalLeftPreviewSelected(bool);
0074     void signalRightPreviewSelected(bool);
0075 
0076     void signalLeftPreviewLoaded(bool);
0077     void signalRightPreviewLoaded(bool);
0078 
0079     void signalLeftZoomFactorChanged(double);
0080     void signalRightZoomFactorChanged(double);
0081 
0082     void signalLeftDroppedItems(const ItemInfoList&);
0083     void signalRightDroppedItems(const ItemInfoList&);
0084 
0085     void signalLeftPanelLeftButtonClicked();
0086     void signalRightPanelLeftButtonClicked();
0087 
0088     void signalLeftPopupTagsView();
0089     void signalRightPopupTagsView();
0090 
0091     void signalLeftSlideShowCurrent();
0092     void signalRightSlideShowCurrent();
0093 
0094     void signalDeleteItem(const ItemInfo&);
0095     void signalEditItem(const ItemInfo&);
0096     void signalToggleOnSyncPreview(bool);
0097 
0098 public Q_SLOTS:
0099 
0100     void slotDecreaseLeftZoom();
0101     void slotIncreaseLeftZoom();
0102     void slotLeftZoomSliderChanged(int);
0103     void setLeftZoomFactor(double z);
0104     void slotLeftFitToWindow();
0105     void slotLeftZoomTo100();
0106 
0107     void slotDecreaseRightZoom();
0108     void slotIncreaseRightZoom();
0109     void slotRightZoomSliderChanged(int);
0110     void setRightZoomFactor(double z);
0111     void slotRightFitToWindow();
0112     void slotRightZoomTo100();
0113 
0114 private Q_SLOTS:
0115 
0116     void slotLeftContentsMoved(int, int);
0117     void slotRightContentsMoved(int, int);
0118     void slotLeftZoomFactorChanged(double);
0119     void slotRightZoomFactorChanged(double);
0120     void slotLeftPreviewLoaded(bool);
0121     void slotRightPreviewLoaded(bool);
0122     void slotDeleteLeftItem();
0123     void slotDeleteRightItem();
0124 
0125 private:
0126 
0127     void checkForSyncPreview();
0128 
0129     /// To not sync right panel during left loading
0130     bool leftPreviewLoading()  const;
0131 
0132     /// To not sync left panel during right loading.
0133     bool rightPreviewLoading() const;
0134 
0135 private:
0136 
0137     class Private;
0138     Private* const d;
0139 };
0140 
0141 } // namespace Digikam
0142 
0143 #endif // DIGIKAM_LIGHT_TABLE_VIEW_H