KVIrc 5.2.0
Developer APIs
KviAction.h
Go to the documentation of this file.
1#ifndef _KVI_ACTION_H_
2#define _KVI_ACTION_H_
3//=============================================================================
4//
5// File : KviAction.h
6// Creation date : Sun 21 Nov 2004 03:36:34 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC Client distribution
9// Copyright (C) 2004-2010 Szymon Stefanek <pragma at kvirc dot net>
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
33#include "kvi_settings.h"
34#include "KviIconManager.h"
35
36#include <QObject>
37#include <QPointer>
38#include <QShortcut>
39#include <QString>
40
41#include <memory>
42#include <unordered_set>
43#include <utility>
44#include <vector>
45
47class QMenu;
48class QPixmap;
49
50#undef None
51
59{
60protected:
61 QString m_szName;
64
65public:
73 KviActionCategory(QString szName, QString szVisibleName, QString szDescription)
74 : m_szName(std::move(szName)),
75 m_szVisibleName(std::move(szVisibleName)),
76 m_szDescription(std::move(szDescription))
77 {
78 }
79
80public:
85 const QString & name() const { return m_szName; }
86
91 const QString & visibleName() const { return m_szVisibleName; }
92
97 const QString & description() const { return m_szDescription; }
98};
99
104class KVIRC_API KviAction : public QObject
105{
106 friend class KviActionManager;
107 Q_OBJECT
108public:
114 {
115 Enabled = 1,
116 SetupDone = 2
117 };
118
123 enum Flags
124 {
125 NeedsContext = 1,
126 NeedsConnection = 2,
127 WindowConsole = 4,
128 WindowChannel = 8,
129 WindowQuery = 16,
130 WindowDccChat = 32,
131 InternalWindowMask = WindowConsole | WindowChannel | WindowQuery | WindowDccChat,
132 EnableAtLogin = 64,
133 WindowOnlyIfUsersSelected = 128
134 };
135
154 KviAction(
155 QObject * pParent,
156 QString szName,
157 QString szVisibleName,
158 QString szDescription,
159 KviActionCategory * pCategory = nullptr,
160 QString szBigIconId = QString(),
161 QString szSmallIconId = QString(),
162 unsigned int uFlags = 0,
163 QString szKeySequence = QString());
164
183 KviAction(
184 QObject * pParent,
185 QString szName,
186 QString szVisibleName,
187 QString szDescription,
188 KviActionCategory * pCategory = nullptr,
189 QString szBigIconId = QString(),
191 unsigned int uFlags = 0,
192 QString szKeySequence = QString());
193
197 virtual ~KviAction();
198
199protected:
200 QString m_szName;
203 KviActionCategory * m_pCategory = nullptr;
205 QString m_szSmallIconId; // this is alternative to m_eSmallIcon
207 std::unordered_set<QAction *> m_pActionList;
208 unsigned short int m_uInternalFlags;
209 unsigned int m_uFlags;
211 QPointer<QShortcut> m_pAccel;
212
213public:
219 static int validateFlags(int iFlagsToValidate);
220
225 const QString & name() const { return m_szName; }
226
231 virtual const QString & visibleName();
232
237 virtual const QString & description();
238
243 const QString & keySequence() const { return m_szKeySequence; }
244
249 const QString & bigIconId() const { return m_szBigIconId; }
250
255 const QString & smallIconId() const { return m_szSmallIconId; }
256
261 KviActionCategory * category() const { return m_pCategory; }
262
267 bool isEnabled() const { return (m_uInternalFlags & KviAction::Enabled); }
268
273 unsigned int flags() const { return m_uFlags; }
274
280 virtual bool isKviUserActionNeverOverrideThis();
281
287 virtual void setEnabled(bool bEnabled);
288
293 QPixmap * smallIcon();
294
299 QPixmap * bigIcon();
300
306 virtual bool addToPopupMenu(QMenu * pMenu);
307
313 virtual QAction * addToCustomToolBar(KviCustomToolBar * pParentToolBar);
314
319 void suicide() { delete this; }
320protected:
326 bool setupDone() const { return (m_uInternalFlags & KviAction::SetupDone); }
327
332 virtual void setup();
333
338 std::unordered_set<QAction *> const & actionList() const { return m_pActionList; }
339
344 void registerAccelerator();
345
350 void unregisterAccelerator();
351
357 void registerAction(QAction * pAction);
358public slots:
366 virtual void activate();
367protected slots:
374 virtual void actionDestroyed();
375
382 virtual void reloadImages();
383
393 virtual void activeContextChanged();
394
401 virtual void activeContextStateChanged();
402
409 virtual void activeWindowChanged();
410
419 virtual void activeWindowSelectionStateChanged(bool bSelectedNow);
420signals:
425 void activated();
426};
427
428#endif // _KVI_ACTION_H_
Icon manager.
Holds the categories of an action.
Definition KviAction.h:59
const QString & visibleName() const
Returns the visible name of the category.
Definition KviAction.h:91
KviActionCategory(QString szName, QString szVisibleName, QString szDescription)
Constructs an action category object.
Definition KviAction.h:73
QString m_szDescription
Definition KviAction.h:63
const QString & description() const
Returns the description of the category.
Definition KviAction.h:97
QString m_szName
Definition KviAction.h:61
const QString & name() const
Returns the name of the category.
Definition KviAction.h:85
QString m_szVisibleName
Definition KviAction.h:62
Definition KviActionManager.h:37
Defines an action inside KVIrc.
Definition KviAction.h:105
void activated()
Emitted when the action is being activated.
unsigned int flags() const
Returns the flag associated to the action.
Definition KviAction.h:273
QString m_szKeySequence
Definition KviAction.h:210
Flags
Holds the flags of an action.
Definition KviAction.h:124
const QString & smallIconId() const
Returns the id of the small icon associated to the action.
Definition KviAction.h:255
unsigned short int m_uInternalFlags
Definition KviAction.h:208
std::unordered_set< QAction * > m_pActionList
Definition KviAction.h:207
const QString & keySequence() const
Returns the shortcut of the action.
Definition KviAction.h:243
QString m_szName
Definition KviAction.h:200
void suicide()
Destroys itself. Maybe the best function in the whole APIs :)
Definition KviAction.h:319
InternalFlags
Holds the internal flags of an action.
Definition KviAction.h:114
@ Enabled
Definition KviAction.h:115
@ SetupDone
Definition KviAction.h:116
bool setupDone() const
Returns true if the setup is finished.
Definition KviAction.h:326
const QString & name() const
Returns the name of the action.
Definition KviAction.h:225
QString m_szSmallIconId
Definition KviAction.h:205
KviActionCategory * category() const
Returns the category of the action.
Definition KviAction.h:261
const QString & bigIconId() const
Returns the id of the big icon associated to the action.
Definition KviAction.h:249
QString m_szDescription
Definition KviAction.h:202
bool isEnabled() const
Returns true if the action is enabled.
Definition KviAction.h:267
QPointer< QShortcut > m_pAccel
Definition KviAction.h:211
QString m_szBigIconId
Definition KviAction.h:204
unsigned int m_uFlags
Definition KviAction.h:209
std::unordered_set< QAction * > const & actionList() const
Returns the list of actions associated to the action.
Definition KviAction.h:338
KviIconManager::SmallIcon m_eSmallIcon
Definition KviAction.h:206
QString m_szVisibleName
Definition KviAction.h:201
Definition KviCustomToolBar.h:38
SmallIcon
Contains all KVIrc's small icons.
Definition KviIconManager.h:170
@ None
Definition KviIconManager.h:171
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127