File indexing completed on 2024-05-19 04:29:52

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2023 Halla Rempt <halla@valdyas.org>
0003  * SPDX-FileCopyrightText: 2023 Alvin Wong <alvin@alvinhc.com>
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 #ifndef KISCLICKABLELABEL_H
0007 #define KISCLICKABLELABEL_H
0008 
0009 #include <QPixmap>
0010 #include <QLabel>
0011 #include <QObject>
0012 #include <QWidget>
0013 #include <QPushButton>
0014 
0015 #include <kritawidgetutils_export.h>
0016 
0017 class KRITAWIDGETUTILS_EXPORT KisClickableLabel : public QLabel
0018 {
0019     Q_OBJECT
0020 public:
0021 
0022     explicit KisClickableLabel(QWidget *parent = nullptr);
0023     ~KisClickableLabel() override;
0024 
0025     bool hasHeightForWidth() const override;
0026     int heightForWidth(int w) const override;
0027     QSize minimumSizeHint() const override;
0028     QSize sizeHint() const override;
0029 
0030     void setUnscaledPixmap(QPixmap pixmap);
0031     void updatePixmap();
0032 
0033     void setDismissable(bool value = true);
0034     bool isDismissable();
0035 
0036 Q_SIGNALS:
0037     void clicked();
0038     void dismissed();
0039 
0040 protected:
0041     void mousePressEvent(QMouseEvent* event) override;
0042     void resizeEvent(QResizeEvent *event) override;
0043 
0044 private:
0045     QPixmap m_pixmap;
0046 
0047     bool m_dismissable = false;
0048     QPushButton *m_closeButton;
0049 };
0050 
0051 #endif // KISCLICKABLELABEL_H