1/*
2 This file is part of the KDE Libraries
3 SPDX-FileCopyrightText: 2006 Tobias Koenig <tokoe@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KPAGEWIDGET_H
9#define KPAGEWIDGET_H
10
11#include <kpagewidgetmodel.h>
12
13#include "kpageview.h"
14
15class KPageWidgetPrivate;
16/*!
17 * \class KPageWidget
18 * \inmodule KWidgetsAddons
19 *
20 * \brief Page widget with many layouts (faces).
21 *
22 * A KPageView with hierarchical page model.
23 */
24class KWIDGETSADDONS_EXPORT KPageWidget : public KPageView
25{
26 Q_OBJECT
27 Q_DECLARE_PRIVATE(KPageWidget)
28
29public:
30 /*!
31 * Creates a new page widget.
32 *
33 * \a parent The parent widget.
34 */
35 explicit KPageWidget(QWidget *parent = nullptr);
36
37 ~KPageWidget() override;
38
39 /*!
40 * Adds a new top level page to the widget.
41 *
42 * \a widget The widget of the page.
43 *
44 * \a name The name which is displayed in the navigation view.
45 *
46 * Returns The associated KPageWidgetItem.
47 */
48 KPageWidgetItem *addPage(QWidget *widget, const QString &name);
49
50 /*!
51 * Adds a new top level page to the widget.
52 *
53 * \a item The KPageWidgetItem which describes the page.
54 */
55 void addPage(KPageWidgetItem *item);
56
57 /*!
58 * Inserts a new page in the widget.
59 *
60 * \a before The new page will be insert before this KPageWidgetItem
61 * on the same level in hierarchy.
62 *
63 * \a widget The widget of the page.
64 *
65 * \a name The name which is displayed in the navigation view.
66 *
67 * Returns the associated KPageWidgetItem.
68 */
69 KPageWidgetItem *insertPage(KPageWidgetItem *before, QWidget *widget, const QString &name);
70
71 /*!
72 * Inserts a new page in the widget.
73 *
74 * \a before The new page will be insert before this KPageWidgetItem
75 * on the same level in hierarchy.
76 *
77 * \a item The KPageWidgetItem which describes the page.
78 */
79 void insertPage(KPageWidgetItem *before, KPageWidgetItem *item);
80
81 /*!
82 * Inserts a new sub page in the widget.
83 *
84 * \a parent The new page will be insert as child of this KPageWidgetItem.
85 *
86 * \a widget The widget of the page.
87 *
88 * \a name The name which is displayed in the navigation view.
89 *
90 * Returns the associated KPageWidgetItem.
91 */
92 KPageWidgetItem *addSubPage(KPageWidgetItem *parent, QWidget *widget, const QString &name);
93
94 /*!
95 * Inserts a new sub page in the widget.
96 *
97 * \a parent The new page will be insert as child of this KPageWidgetItem.
98 *
99 * \a item The KPageWidgetItem which describes the page.
100 */
101 void addSubPage(KPageWidgetItem *parent, KPageWidgetItem *item);
102
103 /*!
104 * Removes the page associated with the given KPageWidgetItem.
105 */
106 void removePage(KPageWidgetItem *item);
107
108 /*!
109 * Sets the page which is associated with the given KPageWidgetItem to
110 * be the current page and emits the currentPageChanged() signal.
111 */
112 void setCurrentPage(KPageWidgetItem *item);
113
114 /*!
115 * Returns the KPageWidgetItem for the current page or a null pointer if there is no
116 * current page.
117 */
118 KPageWidgetItem *currentPage() const;
119
120Q_SIGNALS:
121 /*!
122 * This signal is emitted whenever the current page has changed.
123 *
124 * \a current The new current page or a null pointer if no current page is available.
125 *
126 * \a before The page that was current before the new current page has changed.
127 */
128 void currentPageChanged(KPageWidgetItem *current, KPageWidgetItem *before);
129
130 /*!
131 * This signal is emitted whenever a checkable page changes its state. \a checked is true
132 * when the \a page is checked, or false if the \a page is unchecked.
133 */
134 void pageToggled(KPageWidgetItem *page, bool checked);
135
136 /*!
137 * This signal is emitted when a page is removed.
138 *
139 * \a page The page which is removed
140 **/
141 void pageRemoved(KPageWidgetItem *page);
142
143protected:
144 KWIDGETSADDONS_NO_EXPORT KPageWidget(KPageWidgetPrivate &dd, QWidget *parent);
145};
146
147#endif
148

source code of kwidgetsaddons/src/kpagewidget.h