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_BRACKET_STACK_H
0017 #define DIGIKAM_BRACKET_STACK_H
0018 
0019 // Qt includes
0020 
0021 #include <QTreeWidget>
0022 #include <QString>
0023 #include <QPixmap>
0024 #include <QUrl>
0025 
0026 // Local includes
0027 
0028 #include "loadingdescription.h"
0029 
0030 using namespace Digikam;
0031 
0032 namespace DigikamGenericExpoBlendingPlugin
0033 {
0034 
0035 class BracketStackItem : public QTreeWidgetItem
0036 {
0037 public:
0038 
0039     explicit BracketStackItem(QTreeWidget* const parent);
0040     ~BracketStackItem()                                 override = default;
0041 
0042     void setUrl(const QUrl& url);
0043     const QUrl& url() const;
0044 
0045     void setOn(bool b);
0046     bool isOn() const;
0047 
0048     void setThumbnail(const QPixmap& pix);
0049     void setExposure(const QString& exp);
0050 
0051 private:
0052 
0053     bool operator< (const QTreeWidgetItem& other) const override;
0054 
0055 private:
0056 
0057     QUrl m_url;
0058 
0059 private:
0060 
0061     Q_DISABLE_COPY(BracketStackItem)
0062 };
0063 
0064 // ---------------------------------------------------------------------
0065 
0066 class BracketStackList : public QTreeWidget
0067 {
0068     Q_OBJECT
0069 
0070 public:
0071 
0072     explicit BracketStackList(QWidget* const parent);
0073     ~BracketStackList() override = default;
0074 
0075     void addItems(const QList<QUrl>& list);
0076 
0077     QList<QUrl> urls();
0078     BracketStackItem* findItem(const QUrl& url);
0079 
0080 Q_SIGNALS:
0081 
0082     void signalAddItems(const QList<QUrl>&);
0083     void signalItemClicked(const QUrl& url);
0084 
0085 private Q_SLOTS:
0086 
0087     void slotThumbnail(const LoadingDescription&, const QPixmap& pix);
0088     void slotItemClicked(QTreeWidgetItem* item, int column);
0089 };
0090 
0091 } // namespace DigikamGenericExpoBlendingPlugin
0092 
0093 #endif // DIGIKAM_BRACKET_STACK_H