File indexing completed on 2024-04-28 04:32:23
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Aurélien Gâteau <agateau@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef SPLITTERCOLLAPSER_H 0008 #define SPLITTERCOLLAPSER_H 0009 0010 // Qt 0011 #include <QToolButton> 0012 0013 // KDE 0014 0015 class QSplitter; 0016 0017 namespace KSaneIface 0018 { 0019 0020 struct SplitterCollapserPrivate; 0021 /** 0022 * A button which appears on the side of a splitter handle and allows easy 0023 * collapsing of the widget on the opposite side 0024 */ 0025 class SplitterCollapser : public QToolButton 0026 { 0027 Q_OBJECT 0028 public: 0029 SplitterCollapser(QSplitter *, QWidget *widget); 0030 ~SplitterCollapser() override; 0031 0032 QSize sizeHint() const override; 0033 0034 public Q_SLOTS: 0035 void slotCollapse(); 0036 void slotRestore(); 0037 void slotSetCollapsed(bool collapsed); 0038 0039 protected: 0040 bool eventFilter(QObject *, QEvent *) override; 0041 0042 void paintEvent(QPaintEvent *) override; 0043 0044 private: 0045 SplitterCollapserPrivate *const d; 0046 0047 private Q_SLOTS: 0048 void slotClicked(); 0049 }; 0050 0051 } // namespace 0052 0053 #endif /* SPLITTERCOLLAPSER_H */