1/*
2 SPDX-FileCopyrightText: 2014 Montel Laurent <montel@kde.org>
3 based on code:
4 SPDX-FileCopyrightText: 2009 Aurélien Gâteau <agateau@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7*/
8#ifndef KSPLITTERCOLLAPSERBUTTON_H
9#define KSPLITTERCOLLAPSERBUTTON_H
10
11// Qt
12#include <QToolButton>
13#include <kwidgetsaddons_export.h>
14#include <memory>
15
16class QSplitter;
17
18/**
19 * @class KSplitterCollapserButton ksplittercollapserbutton.h KSplitterCollapserButton
20 *
21 * A button which appears on the side of a splitter handle and allows easy
22 * collapsing of the widget on the opposite side
23 * @since 5.5
24 */
25class KWIDGETSADDONS_EXPORT KSplitterCollapserButton : public QToolButton
26{
27 Q_OBJECT
28public:
29 /**
30 * @brief KSplitterCollapserButton create a splitter collapser
31 * @param childWidget the widget, child of the splitter, whose size is controlled by this collapser
32 * @param splitter the splitter which this collapser should be associated with.
33 */
34 explicit KSplitterCollapserButton(QWidget *childWidget, QSplitter *splitter);
35
36 /**
37 * Destructor
38 */
39 ~KSplitterCollapserButton() override;
40
41 /**
42 * @brief isWidgetCollapsed
43 * @return true if splitter is collapsed.
44 */
45 bool isWidgetCollapsed() const;
46
47 QSize sizeHint() const override;
48
49public Q_SLOTS:
50 /**
51 * @brief collapse, this function collapses the splitter if splitter is not collapsed.
52 */
53 void collapse();
54 /**
55 * @brief restore, call this function to restore previous splitter position.
56 */
57 void restore();
58 /**
59 * @brief setCollapsed, this function allows to collapse or not the splitter.
60 * @param collapsed if the splitter should be collapsed
61 */
62 void setCollapsed(bool collapsed);
63
64private Q_SLOTS:
65 KWIDGETSADDONS_NO_EXPORT void slotClicked();
66
67protected:
68 bool eventFilter(QObject *, QEvent *) override;
69 void paintEvent(QPaintEvent *) override;
70 void enterEvent(QEnterEvent *event) override;
71 void leaveEvent(QEvent *event) override;
72 void showEvent(QShowEvent *event) override;
73
74private:
75 std::unique_ptr<class KSplitterCollapserButtonPrivate> const d;
76};
77
78#endif /* KSPLITTERCOLLAPSERBUTTON_H */
79

source code of kwidgetsaddons/src/ksplittercollapserbutton.h