Akonadi

agentactionmanager.h
1 /*
2  SPDX-FileCopyrightText: 2010 Tobias Koenig <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "akonadiwidgets_export.h"
10 // AkonadiCore
11 #include <akonadi/agentinstance.h>
12 
13 #include <QObject>
14 
15 #include <memory>
16 
17 class QAction;
18 class KActionCollection;
19 class KLocalizedString;
21 class QWidget;
22 
23 namespace Akonadi
24 {
25 class AgentActionManagerPrivate;
26 
27 /**
28  * @short Manages generic actions for agent and agent instance views.
29  *
30  * @author Tobias Koenig <[email protected]>
31  * @since 4.6
32  */
33 class AKONADIWIDGETS_EXPORT AgentActionManager : public QObject
34 {
35  Q_OBJECT
36 public:
37  /**
38  * Describes the supported actions.
39  */
40  enum Type {
41  CreateAgentInstance, ///< Creates an agent instance
42  DeleteAgentInstance, ///< Deletes the selected agent instance
43  ConfigureAgentInstance, ///< Configures the selected agent instance
44  LastType ///< Marks last action
45  };
46 
47  /**
48  * Describes the text context that can be customized.
49  */
50  enum TextContext {
51  DialogTitle, ///< The window title of a dialog
52  DialogText, ///< The text of a dialog
53  MessageBoxTitle, ///< The window title of a message box
54  MessageBoxText, ///< The text of a message box
55  MessageBoxAlternativeText, ///< An alternative text of a message box
56  ErrorMessageTitle, ///< The window title of an error message
57  ErrorMessageText ///< The text of an error message
58  };
59 
60  /**
61  * Creates a new agent action manager.
62  *
63  * @param actionCollection The action collection to operate on.
64  * @param parent The parent widget.
65  */
66  explicit AgentActionManager(KActionCollection *actionCollection, QWidget *parent = nullptr);
67 
68  /**
69  * Destroys the agent action manager.
70  */
71  ~AgentActionManager() override;
72 
73  /**
74  * Sets the agent selection @p model based on which the actions should operate.
75  * If none is set, all actions will be disabled.
76  * @param model model based on which actions should operate
77  */
78  void setSelectionModel(QItemSelectionModel *model);
79 
80  /**
81  * Sets the mime type filter that will be used when creating new agent instances.
82  */
83  void setMimeTypeFilter(const QStringList &mimeTypes);
84 
85  /**
86  * Sets the capability filter that will be used when creating new agent instances.
87  */
88  void setCapabilityFilter(const QStringList &capabilities);
89 
90  /**
91  * Creates the action of the given type and adds it to the action collection
92  * specified in the constructor if it does not exist yet. The action is
93  * connected to its default implementation provided by this class.
94  * @param type action type
95  */
96  Q_REQUIRED_RESULT QAction *createAction(Type type);
97 
98  /**
99  * Convenience method to create all standard actions.
100  * @see createAction()
101  */
102  void createAllActions();
103 
104  /**
105  * Returns the action of the given type, 0 if it has not been created (yet).
106  */
107  Q_REQUIRED_RESULT QAction *action(Type type) const;
108 
109  /**
110  * Sets whether the default implementation for the given action @p type
111  * shall be executed when the action is triggered.
112  *
113  * @param intercept If @c false, the default implementation will be executed,
114  * if @c true no action is taken.
115  *
116  * @since 4.6
117  */
118  void interceptAction(Type type, bool intercept = true);
119 
120  /**
121  * Returns the list of agent instances that are currently selected.
122  * The list is empty if no agent instance is currently selected.
123  *
124  * @since 4.6
125  */
126  Q_REQUIRED_RESULT Akonadi::AgentInstance::List selectedAgentInstances() const;
127 
128  /**
129  * Sets the @p text of the action @p type for the given @p context.
130  *
131  * @param type action type
132  * @param context context of the given action
133  * @param text text for the given action type
134  *
135  * @since 4.6
136  */
137  void setContextText(Type type, TextContext context, const QString &text);
138 
139  /**
140  * Sets the @p text of the action @p type for the given @p context.
141  *
142  * @since 4.8
143  * @param type action type
144  * @param context context of the given action type
145  * @param text localized text for the given action type
146  */
147  void setContextText(Type type, TextContext context, const KLocalizedString &text);
148 
149 Q_SIGNALS:
150  /**
151  * This signal is emitted whenever the action state has been updated.
152  * In case you have special needs for changing the state of some actions,
153  * connect to this signal and adjust the action state.
154  */
155  void actionStateUpdated();
156 
157 private:
158  /// @cond PRIVATE
159  std::unique_ptr<AgentActionManagerPrivate> const d;
160 
161  Q_PRIVATE_SLOT(d, void updateActions())
162 
163  Q_PRIVATE_SLOT(d, void slotCreateAgentInstance())
164  Q_PRIVATE_SLOT(d, void slotDeleteAgentInstance())
165  Q_PRIVATE_SLOT(d, void slotConfigureAgentInstance())
166 
167  Q_PRIVATE_SLOT(d, void slotAgentInstanceCreationResult(KJob *))
168  /// @endcond
169 };
170 
171 }
172 
@ ErrorMessageTitle
The window title of an error message.
@ DeleteAgentInstance
Deletes the selected agent instance.
TextContext
Describes the text context that can be customized.
@ MessageBoxText
The text of a message box.
@ MessageBoxTitle
The window title of a message box.
Type
Describes the supported actions.
Manages generic actions for agent and agent instance views.
@ DialogTitle
The window title of a dialog.
@ MessageBoxAlternativeText
An alternative text of a message box.
@ DialogText
The text of a dialog.
@ CreateAgentInstance
Creates an agent instance.
@ ConfigureAgentInstance
Configures the selected agent instance.
Helper integration between Akonadi and Qt.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Thu Jun 30 2022 03:51:45 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.