Plasma-framework

action.h
1/*
2 SPDX-FileCopyrightText: 2023 Marco Martin <mart@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.0-or-later
5*/
6
7#ifndef PLASMAACTION_H
8#define PLASMAACTION_H
9
10#include <QAction>
11#include <QActionGroup>
12#include <QObject>
13#include <qqml.h>
14#include <qtclasshelpermacros.h>
15#include <qtmetamacros.h>
16
17class QQuickItem;
18
19namespace PlasmaQuick
20{
21class SharedQmlEngine;
22}
23
24class ActionExtension;
25
26class IconGroup : public QObject
27{
29 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
30 Q_PROPERTY(QIcon icon READ icon WRITE setIcon NOTIFY iconChanged)
31public:
32 explicit IconGroup(ActionExtension *parent = nullptr);
33 ~IconGroup();
34
35 void setName(const QString &name);
36 QString name() const;
37
38 QIcon icon() const;
39 void setIcon(const QIcon &icon);
40
42 void nameChanged();
43 void iconChanged();
44
45private:
46 QAction *m_action;
47 QString m_name;
48};
49
50class ActionExtension : public QObject
51{
53 Q_PROPERTY(IconGroup *icon MEMBER m_iconGroup CONSTANT)
54 Q_PROPERTY(bool isSeparator READ isSeparator WRITE setSeparator NOTIFY isSeparatorChanged)
55 Q_PROPERTY(QActionGroup *actionGroup READ actionGroup WRITE setActionGroup NOTIFY actionGroupChanged)
56 Q_PROPERTY(QVariant shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged)
57 Q_PROPERTY(QMenu *menu READ menu WRITE setMenu NOTIFY menuChanged)
58
59public:
60 explicit ActionExtension(QObject *parent = nullptr);
61 ~ActionExtension() override;
62
63 bool isSeparator() const;
64 void setSeparator(bool setSeparator);
65
66 void setActionGroup(QActionGroup *group);
67 QActionGroup *actionGroup() const;
68
69 void setShortcut(const QVariant &var);
70 QVariant shortcut() const;
71
72 void setMenu(QMenu *menu);
73 QMenu *menu();
74
75 QAction *action() const;
76
78 void isSeparatorChanged();
79 void actionGroupChanged();
80 void shortcutChanged();
81 void menuChanged();
82
83private:
84 QAction *m_action;
85 IconGroup *m_iconGroup;
86 QString m_icon;
87};
88
89class ActionGroup : public QActionGroup
90{
92public:
93 ActionGroup(QObject *parent = nullptr)
95 {
96 }
97};
98
99#endif
An object that instantiates an entire QML context, with its own declarative engine.
The EdgeEventForwarder class This class forwards edge events to be replayed within the given margin T...
Definition action.h:20
Q_OBJECTQ_OBJECT
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
QObject * parent() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri May 17 2024 11:54:11 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.