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