PolkitQt-1

polkitqt1-gui-actionbutton.h
1 /*
2  This file is part of the Polkit-qt project
3  SPDX-FileCopyrightText: 2009 Daniel Nicoletti <[email protected]>
4  SPDX-FileCopyrightText: 2009 Dario Freddi <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 */
8 
9 #ifndef POLKITQT1_GUI_ACTIONBUTTON_H
10 #define POLKITQT1_GUI_ACTIONBUTTON_H
11 
12 #include "polkitqt1-gui-action.h"
13 
14 class QAbstractButton;
15 
16 namespace PolkitQt1
17 {
18 
19 namespace Gui
20 {
21 
22 class ActionButtonPrivate;
23 /**
24  * \class ActionButton polkitqt1-gui-actionbutton.h ActionButton
25  * \author Daniel Nicoletti <[email protected]>
26  * \author Dario Freddi <[email protected]>
27  *
28  * \brief Class used to hold and update a QAbstractButton
29  *
30  * This class allows you to associate QAbstractButtons
31  * (i.e. QPushButton) to a PolicyKit Action. It will update the
32  * button properties according to the PolicyKit Action automatically.
33  *
34  * \note You should connect the activated() signal to receive
35  * a notification when the user clicked the button and gets
36  * permission to perform the given action. If you set 'noEnabled'
37  * to \c true it will be emitted when PolKitResult is NO.
38  */
39 class POLKITQT1_GUI_EXPORT ActionButton : public Action
40 {
41  Q_OBJECT
42  Q_DECLARE_PRIVATE(ActionButton)
43  Q_DISABLE_COPY(ActionButton)
44 
45 public:
46  /**
47  * Constructs a new ActionButton. You need to pass this
48  * constructor an existing QAbstractButton, whose properties
49  * will be modified according to the underlying Action
50  * object. As ActionButton inherits from Action, you can
51  * define your button's behavior right through this wrapper.
52  *
53  * \see Action
54  *
55  * \param button the QAbstractButton to associate to this ActionButton
56  * \param actionId the action Id to create the underlying Action
57  * \param parent the parent object
58  */
59  explicit ActionButton(QAbstractButton *button, const QString &actionId = QString(), QObject *parent = nullptr);
60  ~ActionButton() override;
61 
62  /**
63  * Sets the button associated to the underlying action.
64  *
65  * \note If you are calling this function, you're probably
66  * changing the button the action is referring to. If this
67  * is the case, please note that Polkit-Qt does not handle
68  * the previous button's memory, so you should take care of
69  * deleting it yourself (if needed). You can retrieve it by
70  * using button()
71  *
72  * \see button
73  *
74  * \param button the new button associated with the underlying action
75  */
76  void setButton(QAbstractButton *button);
77 
78  /**
79  * Returns the current button
80  *
81  * \return the button currently associated with the underlying action
82  */
83  QAbstractButton *button() const;
84 
85 public Q_SLOTS:
86  /**
87  * Connect clicked() signals to this slot. This should be
88  * manually done, as in some cases we might want
89  * to manually call this. Calling this will emit authorized().
90  *
91  * \note This slot is reentrant which is likely to only be a problem
92  * if you are creating an interface to setup PolicyKit policies.
93  * \note If you have a checkbox, connect to its' clicked() signal
94  * to avoid an infinite loop as this function internally calls setChecked().
95  * You can always use the clicked(bool) signal in this class to
96  * connect to here.
97  * \warning if you use this class take care to not call Action::activate
98  * otherwise your checkable buttons won't be properly updated.
99  */
100  bool activate();
101 
102 Q_SIGNALS:
103  /**
104  * Emitted when the abstract button clicked(bool) signal
105  * is emitted. This allows you to use qobject_cast<ActionButton *>(sender())
106  * in a slot connected to this signal and call activate() on it.
107  *
108  * \note you will normally want to connect this signal
109  * to the activate slot.
110  *
111  * \param button the button that has been clicked
112  * \param checked the checked state, if applicable. Otherwise \c false
113  *
114  */
115  void clicked(QAbstractButton *button, bool checked = false);
116 
117 protected:
118  ActionButton(ActionButtonPrivate &dd, const QString &actionId, QObject *parent = nullptr);
119 
120  ActionButtonPrivate * const d_ptr;
121 
122 private:
123  Q_PRIVATE_SLOT(d_func(), void updateButton())
124  Q_PRIVATE_SLOT(d_func(), void streamClicked(bool))
125 };
126 
127 }
128 
129 }
130 
131 #endif
Class used to hold and update a QAbstractButton.
Class used to manage actions.
Namespace wrapping Polkit-Qt classes.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sun Jun 26 2022 04:06:09 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.