File indexing completed on 2024-05-12 04:19:42

0001 // vim: set tabstop=4 shiftwidth=4 expandtab:
0002 /*
0003 Gwenview: an image viewer
0004 Copyright 2008 Aurélien Gâteau <agateau@kde.org>
0005 
0006 This program is free software; you can redistribute it and/or
0007 modify it under the terms of the GNU General Public License
0008 as published by the Free Software Foundation; either version 2
0009 of the License, or (at your option) any later version.
0010 
0011 This program is distributed in the hope that it will be useful,
0012 but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 GNU General Public License for more details.
0015 
0016 You should have received a copy of the GNU General Public License
0017 along with this program; if not, write to the Free Software
0018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA.
0019 
0020 */
0021 #ifndef HUDWIDGET_H
0022 #define HUDWIDGET_H
0023 
0024 #include <lib/gwenviewlib_export.h>
0025 
0026 // Qt
0027 #include <QGraphicsWidget>
0028 #include <QWidget>
0029 
0030 // KF
0031 
0032 // Local
0033 
0034 namespace Gwenview
0035 {
0036 struct HudWidgetPrivate;
0037 class GWENVIEWLIB_EXPORT HudWidget : public QGraphicsWidget
0038 {
0039     Q_OBJECT
0040 public:
0041     enum Option {
0042         OptionNone = 0,
0043         OptionCloseButton = 1 << 1,
0044         OptionOpaque = 1 << 2,
0045     };
0046     Q_DECLARE_FLAGS(Options, Option)
0047 
0048     explicit HudWidget(QGraphicsWidget *parent = nullptr);
0049     ~HudWidget() override;
0050 
0051     void init(QWidget *, Options options);
0052     void init(QGraphicsWidget *, Options options);
0053 
0054     void setAutoDeleteOnFadeout(bool autoDelete);
0055 
0056     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
0057 
0058 public Q_SLOTS:
0059     void fadeIn();
0060     void fadeOut();
0061 
0062 Q_SIGNALS:
0063     void closed();
0064     void fadedIn();
0065     void fadedOut();
0066 
0067 private Q_SLOTS:
0068     void slotCloseButtonClicked();
0069     void slotFadeAnimationFinished();
0070 
0071 private:
0072     HudWidgetPrivate *const d;
0073 };
0074 
0075 } // namespace
0076 
0077 Q_DECLARE_OPERATORS_FOR_FLAGS(Gwenview::HudWidget::Options)
0078 
0079 #endif /* HUDWIDGET_H */