File indexing completed on 2025-03-09 03:50:50
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2009-12-13 0007 * Description : a tool to blend bracketed images. 0008 * 0009 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * SPDX-FileCopyrightText: 2015 by Benjamin Girault <benjamin dot girault at gmail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #ifndef DIGIKAM_ENFUSE_STACK_H 0017 #define DIGIKAM_ENFUSE_STACK_H 0018 0019 // Qt includes 0020 0021 #include <QTreeWidget> 0022 #include <QString> 0023 #include <QPixmap> 0024 #include <QPoint> 0025 #include <QList> 0026 #include <QIcon> 0027 0028 // Local includes 0029 0030 #include "enfusesettings.h" 0031 0032 namespace DigikamGenericExpoBlendingPlugin 0033 { 0034 0035 class EnfuseStackItem : public QTreeWidgetItem 0036 { 0037 public: 0038 0039 explicit EnfuseStackItem(QTreeWidget* const parent); 0040 ~EnfuseStackItem() override; 0041 0042 /** 0043 * Return the preview image url assigned to item. 0044 */ 0045 const QUrl& url() const; 0046 0047 void setEnfuseSettings(const EnfuseSettings& settings); 0048 EnfuseSettings enfuseSettings() const; 0049 0050 void setOn(bool b); 0051 bool isOn() const; 0052 0053 void setProgressAnimation(const QPixmap& pix); 0054 void setThumbnail(const QPixmap& pix); 0055 void setProcessedIcon(const QIcon& icon); 0056 bool asValidThumb() const; 0057 0058 private: 0059 0060 class Private; 0061 Private* const d; 0062 0063 private: 0064 0065 Q_DISABLE_COPY(EnfuseStackItem) 0066 }; 0067 0068 // --------------------------------------------------------------------- 0069 0070 class EnfuseStackList : public QTreeWidget 0071 { 0072 Q_OBJECT 0073 0074 public: 0075 0076 explicit EnfuseStackList(QWidget* const parent); 0077 ~EnfuseStackList() override; 0078 0079 void setTemplateFileName(DSaveSettingsWidget::OutputFormat, const QString&); 0080 0081 void setThumbnail(const QUrl& url, const QImage& img); 0082 void setOnItem(const QUrl& url, bool on); 0083 void removeItem(const QUrl& url); 0084 void clearSelected(); 0085 void addItem(const QUrl& url, const EnfuseSettings& settings); 0086 void processingItem(const QUrl& url, bool run); 0087 void processedItem(const QUrl& url, bool success); 0088 0089 QList<EnfuseSettings> settingsList(); 0090 0091 Q_SIGNALS: 0092 0093 void signalItemClicked(const QUrl&); 0094 0095 private: 0096 0097 EnfuseStackItem* findItemByUrl(const QUrl& url); 0098 0099 private Q_SLOTS: 0100 0101 void slotItemClicked(QTreeWidgetItem*); 0102 void slotContextMenu(const QPoint&); 0103 void slotRemoveItem(); 0104 void slotProgressTimerDone(); 0105 0106 private: 0107 0108 class Private; 0109 Private* const d; 0110 }; 0111 0112 } // namespace DigikamGenericExpoBlendingPlugin 0113 0114 #endif // DIGIKAM_ENFUSE_STACK_H