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 | |
15 | class KPageWidgetPrivate; |
16 | /** |
17 | * @class KPageWidget kpagewidget.h KPageWidget |
18 | * |
19 | * @short Page widget with many layouts (faces). |
20 | * A KPageView with hierarchical page model. |
21 | * |
22 | * @author Tobias Koenig (tokoe@kde.org) |
23 | */ |
24 | class KWIDGETSADDONS_EXPORT KPageWidget : public KPageView |
25 | { |
26 | Q_OBJECT |
27 | Q_DECLARE_PRIVATE(KPageWidget) |
28 | |
29 | public: |
30 | /** |
31 | * Creates a new page widget. |
32 | * |
33 | * @param parent The parent widget. |
34 | */ |
35 | explicit KPageWidget(QWidget *parent = nullptr); |
36 | |
37 | /** |
38 | * Destroys the page widget. |
39 | */ |
40 | ~KPageWidget() override; |
41 | |
42 | /** |
43 | * Adds a new top level page to the widget. |
44 | * |
45 | * @param widget The widget of the page. |
46 | * @param name The name which is displayed in the navigation view. |
47 | * |
48 | * @returns The associated KPageWidgetItem. |
49 | */ |
50 | KPageWidgetItem *addPage(QWidget *widget, const QString &name); |
51 | |
52 | /** |
53 | * Adds a new top level page to the widget. |
54 | * |
55 | * @param item The KPageWidgetItem which describes the page. |
56 | */ |
57 | void addPage(KPageWidgetItem *item); |
58 | |
59 | /** |
60 | * Inserts a new page in the widget. |
61 | * |
62 | * @param before The new page will be insert before this KPageWidgetItem |
63 | * on the same level in hierarchy. |
64 | * @param widget The widget of the page. |
65 | * @param 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 | * @param before The new page will be insert before this KPageWidgetItem |
75 | * on the same level in hierarchy. |
76 | * |
77 | * @param 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 | * @param parent The new page will be insert as child of this KPageWidgetItem. |
85 | * @param widget The widget of the page. |
86 | * @param name The name which is displayed in the navigation view. |
87 | * |
88 | * @returns The associated KPageWidgetItem. |
89 | */ |
90 | KPageWidgetItem *addSubPage(KPageWidgetItem *parent, QWidget *widget, const QString &name); |
91 | |
92 | /** |
93 | * Inserts a new sub page in the widget. |
94 | * |
95 | * @param parent The new page will be insert as child of this KPageWidgetItem. |
96 | * |
97 | * @param item The KPageWidgetItem which describes the page. |
98 | */ |
99 | void addSubPage(KPageWidgetItem *parent, KPageWidgetItem *item); |
100 | |
101 | /** |
102 | * Removes the page associated with the given KPageWidgetItem. |
103 | */ |
104 | void removePage(KPageWidgetItem *item); |
105 | |
106 | /** |
107 | * Sets the page which is associated with the given KPageWidgetItem to |
108 | * be the current page and emits the currentPageChanged() signal. |
109 | */ |
110 | void setCurrentPage(KPageWidgetItem *item); |
111 | |
112 | /** |
113 | * Returns the KPageWidgetItem for the current page or a null pointer if there is no |
114 | * current page. |
115 | */ |
116 | KPageWidgetItem *currentPage() const; |
117 | |
118 | Q_SIGNALS: |
119 | /** |
120 | * This signal is emitted whenever the current page has changed. |
121 | * |
122 | * @param current The new current page or a null pointer if no current page is available. |
123 | * @param before The page that was current before the new current page has changed. |
124 | */ |
125 | void currentPageChanged(KPageWidgetItem *current, KPageWidgetItem *before); |
126 | |
127 | /** |
128 | * This signal is emitted whenever a checkable page changes its state. @param checked is true |
129 | * when the @p page is checked, or false if the @p page is unchecked. |
130 | */ |
131 | void pageToggled(KPageWidgetItem *page, bool checked); |
132 | |
133 | /** |
134 | * This signal is emitted when a page is removed. |
135 | * @param page The page which is removed |
136 | * */ |
137 | void (KPageWidgetItem *page); |
138 | |
139 | protected: |
140 | KWIDGETSADDONS_NO_EXPORT KPageWidget(KPageWidgetPrivate &dd, QWidget *parent); |
141 | }; |
142 | |
143 | #endif |
144 | |