1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2005 Olivier Goffart <ogoffart at kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-only
6*/
7
8#ifndef KNOTIFYCONFIGWIDGET_H
9#define KNOTIFYCONFIGWIDGET_H
10
11#include <QString>
12#include <QWidget>
13#include <knotifyconfig_export.h>
14
15#include <memory>
16
17class KNotifyConfigElement;
18class KNotifyConfigWidgetPrivate;
19/*!
20 * \class KNotifyConfigWidget
21 * \inmodule KNotifyConfig
22 *
23 * \brief Configure the notification for a given application.
24 *
25 * You probably will want to use the static function configure
26 *
27 * If you create the widget yourself, you must call setApplication before showing it.
28 */
29class KNOTIFYCONFIG_EXPORT KNotifyConfigWidget : public QWidget
30{
31 Q_OBJECT
32public:
33 /*!
34 *
35 */
36 explicit KNotifyConfigWidget(QWidget *parent);
37 ~KNotifyConfigWidget() override;
38
39 /*!
40 * Show a dialog with the widget.
41 *
42 * \a parent the parent widget of the dialog
43 *
44 * \a appname the application name, if null, it is autodetected
45 *
46 * Returns the widget itself the topLevelWidget of it is probably a KDialog
47 */
48 static KNotifyConfigWidget *configure(QWidget *parent = nullptr, const QString &appname = QString());
49
50 /*!
51 * Change the application
52 *
53 * \a appname name of the application. If null QCoreApplication::instance()->applicationName() is used
54 */
55 void setApplication(const QString &appname = QString());
56
57 /*!
58 * Select a given notification in the current list
59 *
60 * \a id The id of the notification
61 * \since 5.18
62 */
63 void selectEvent(const QString &eventId);
64
65public Q_SLOTS:
66 /*!
67 * save to the config file
68 */
69 void save();
70
71 /*!
72 * Reset the UI to display the default values
73 * \sa KCModule::defaults
74 * \since 5.15
75 */
76 void revertToDefaults();
77
78 /*!
79 * Disable all sounds for the current application
80 * \since 5.23
81 */
82 void disableAllSounds();
83
84Q_SIGNALS:
85 /*!
86 * Indicate that the state of the modules contents has changed.
87 * This signal is emitted whenever the state of the configuration changes.
88 * \sa KCModule::changed
89 */
90 void changed(bool state);
91
92private Q_SLOTS:
93 KNOTIFYCONFIG_NO_EXPORT void slotEventSelected(KNotifyConfigElement *e);
94 KNOTIFYCONFIG_NO_EXPORT void slotActionChanged();
95
96private:
97 std::unique_ptr<KNotifyConfigWidgetPrivate> const d;
98};
99
100#endif
101

source code of knotifyconfig/src/knotifyconfigwidget.h