1 | /* |
2 | SPDX-FileCopyrightText: 2001-2014 Christoph Cullmann <cullmann@kde.org> |
3 | SPDX-FileCopyrightText: 2005-2014 Dominik Haumann <dhaumann@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef KTEXTEDITOR_CONFIGPAGE_H |
9 | #define KTEXTEDITOR_CONFIGPAGE_H |
10 | |
11 | #include <ktexteditor_export.h> |
12 | |
13 | #include <QWidget> |
14 | |
15 | namespace KTextEditor |
16 | { |
17 | /** |
18 | * \class ConfigPage configpage.h <KTextEditor/ConfigPage> |
19 | * |
20 | * \brief Config page interface for the Editor and Plugin%s. |
21 | * |
22 | * \section configpage_intro Introduction |
23 | * |
24 | * The class ConfigPage represents a config page. |
25 | * The config pages are usually embedded into a dialog that shows |
26 | * buttons like \e Defaults, \e Reset and \e Apply. If one of the buttons is |
27 | * clicked and the config page sent the signal changed() beforehand the |
28 | * Editor will call the corresponding slot, either defaults(), reset() or |
29 | * apply(). |
30 | * |
31 | * To obtain a useful navigation information for displaying to a user see name(), |
32 | * fullName() and icon() functions. |
33 | * |
34 | * \section configpage_config Saving and Loading Config Data |
35 | * |
36 | * Saving and loading the configuration data can either be achieved by using |
37 | * the host application's KSharedConfig::openConfig() object, or by using an |
38 | * own configuration file. |
39 | * |
40 | * \see KTextEditor::Editor, KTextEditor::Plugin |
41 | * \author Christoph Cullmann \<cullmann@kde.org\> |
42 | */ |
43 | class KTEXTEDITOR_EXPORT ConfigPage : public QWidget |
44 | { |
45 | Q_OBJECT |
46 | |
47 | public: |
48 | /** |
49 | * Constructor. |
50 | * |
51 | * Create a new config page with \p parent. |
52 | * \param parent parent widget |
53 | */ |
54 | ConfigPage(QWidget *parent); |
55 | /** |
56 | * Virtual destructor. |
57 | */ |
58 | ~ConfigPage() override; |
59 | |
60 | /** |
61 | * Get a readable name for the config page. The name should be translated. |
62 | * \return name of given page index |
63 | * \see fullName(), icon() |
64 | */ |
65 | virtual QString name() const = 0; |
66 | |
67 | /** |
68 | * Get a readable full name for the config page. The name |
69 | * should be translated. |
70 | * |
71 | * Example: If the name is "Filetypes", the full name could be |
72 | * "Filetype Specific Settings". For "Shortcuts" the full name would be |
73 | * something like "Shortcut Configuration". |
74 | * \return full name of given page index, default implementation returns name() |
75 | * \see name(), icon() |
76 | */ |
77 | virtual QString fullName() const; |
78 | |
79 | /** |
80 | * Get an icon for the config page. |
81 | * \return icon for the given page index |
82 | * \see name(), fullName() |
83 | */ |
84 | virtual QIcon icon() const; |
85 | |
86 | public Q_SLOTS: |
87 | /** |
88 | * This slot is called whenever the button \e Apply or \e OK was clicked. |
89 | * Apply the changed settings made in the config page now. |
90 | */ |
91 | virtual void apply() = 0; |
92 | |
93 | /** |
94 | * This slot is called whenever the button \e Reset was clicked. |
95 | * Reset the config page settings to the initial state. |
96 | */ |
97 | virtual void reset() = 0; |
98 | |
99 | /** |
100 | * Sets default options |
101 | * This slot is called whenever the button \e Defaults was clicked. |
102 | * Set the config page settings to the default values. |
103 | */ |
104 | virtual void defaults() = 0; |
105 | |
106 | Q_SIGNALS: |
107 | /** |
108 | * Emit this signal whenever a config option changed. |
109 | */ |
110 | void changed(); |
111 | |
112 | private: |
113 | class ConfigPagePrivate *const d; |
114 | }; |
115 | |
116 | } |
117 | |
118 | #endif |
119 | |