1 | /*************************************************************************** |
2 | * Copyright 2012 Stefan Majewsky <majewsky@gmx.net> * |
3 | * * |
4 | * This program is free software; you can redistribute it and/or modify * |
5 | * it under the terms of the GNU Library General Public License * |
6 | * version 2 as published by the Free Software Foundation * |
7 | * * |
8 | * This program is distributed in the hope that it will be useful, * |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
11 | * GNU Library General Public License for more details. * |
12 | * * |
13 | * You should have received a copy of the GNU Library General Public * |
14 | * License along with this program; if not, write to the * |
15 | * Free Software Foundation, Inc., * |
16 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * |
17 | ***************************************************************************/ |
18 | |
19 | #ifndef KGTHEMESELECTOR_H |
20 | #define KGTHEMESELECTOR_H |
21 | |
22 | #include <QtGui/QWidget> |
23 | #include <kgthemeprovider.h> |
24 | |
25 | #include <libkdegames_export.h> |
26 | |
27 | /** |
28 | * @class KgThemeSelector kgthemeselector.h <KgThemeSelector> |
29 | * @brief Theme selection widget. |
30 | * |
31 | * This widget allows the user to change the theme selection of a |
32 | * KgThemeProvider. Selections are immediately applied to allow the user |
33 | * to quickly preview themes. In simple cases, the widget can be used |
34 | * standalone with the showAsDialog() method. |
35 | * |
36 | * @code |
37 | * K_GLOBAL_STATIC_WITH_ARGS(KgThemeSelector, selector, (provider)) |
38 | * ... |
39 | * selector->showAsDialog(); |
40 | * @endcode |
41 | */ |
42 | class KDEGAMES_EXPORT KgThemeSelector : public QWidget |
43 | { |
44 | Q_OBJECT |
45 | Q_DISABLE_COPY(KgThemeSelector) |
46 | public: |
47 | ///Flags which control the behavior of KgThemeSelector. |
48 | enum Option { |
49 | DefaultBehavior = 0, |
50 | ///Enable downloading of additional themes with KNewStuff3. |
51 | ///This requires a KNS3 config file to be installed for this app. |
52 | EnableNewStuffDownload = 1 << 0 |
53 | }; |
54 | Q_DECLARE_FLAGS(Options, Option) |
55 | |
56 | explicit KgThemeSelector(KgThemeProvider* provider, Options options = DefaultBehavior, QWidget* parent = 0); |
57 | virtual ~KgThemeSelector(); |
58 | public Q_SLOTS: |
59 | ///Create and show a non-modal dialog which displays this selector. |
60 | ///The dialog will be automatically cleaned up when it's closed, but it |
61 | ///is ensured that the selector is not deleted. |
62 | /// |
63 | ///This method does nothing if the selector widget is already visible. |
64 | void showAsDialog(const QString& caption = QString()); |
65 | private: |
66 | class Dialog; |
67 | class Private; |
68 | Private* const d; |
69 | |
70 | Q_PRIVATE_SLOT(d, void _k_updateListSelection(const KgTheme*)); |
71 | Q_PRIVATE_SLOT(d, void _k_updateProviderSelection()); |
72 | Q_PRIVATE_SLOT(d, void _k_showNewStuffDialog()); |
73 | }; |
74 | |
75 | Q_DECLARE_OPERATORS_FOR_FLAGS(KgThemeSelector::Options) |
76 | |
77 | #endif // KGTHEMESELECTOR_H |
78 | |