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