DtkWidget 5.6.0.2
DTK Widget module
dshortcutedit.h
1// SPDX-FileCopyrightText: 2015 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DSHORTCUTEDIT_H
6#define DSHORTCUTEDIT_H
7
8#include <QFrame>
9#include <QLabel>
10#include <QString>
11#include <QRegExp>
12#include <QColor>
13#include <QMap>
14
15#include <dtkwidget_global.h>
16
17DWIDGET_BEGIN_NAMESPACE
18
19class DShortcutEditLabel;
20class D_DECL_DEPRECATED_X("Use DKeySequenceEdit instead.") LIBDTKWIDGETSHARED_EXPORT DShortcutEdit : public QFrame
21{
22 Q_OBJECT
23
24public:
25 DShortcutEdit(QWidget *parent = Q_NULLPTR);
26
27 QSize sizeHint() const;
28 bool eventFilter(QObject *o, QEvent *e);
29 bool isValidShortcutKey(const QString & key);
30 const QMap<QString, QString> &getKeyMapping() const;
31 const QList<QRegExp> &getBlockShortcutKeysList() const;
32
33Q_SIGNALS:
34 void shortcutKeysChanged(const QString & shortcutKeys);
35 void shortcutKeysFinished(const QString & shortcutKeys);
36 void invalidShortcutKey(const QString & shortcutKeys);
37
38public Q_SLOTS:
39 void clearShortcutKey();
40 void setShortcutKey(const QString & key);
41 void setKeyMapping(const QMap<QString, QString> & mapping);
42 void setBlockShortcutKeysList(const QList<QRegExp> & kList);
43 void setInValidState() const;
44 void setNormalState() const;
45
46private Q_SLOTS:
47 void toEchoMode();
48 void toInputMode() const;
49 void shortcutKeyPress(QKeyEvent *e);
50
51private:
52 QString convertShortcutKeys(const QString & keys);
53
54private:
55 DShortcutEditLabel *m_keysLabel;
56 QLabel *m_keysEdit;
57
58 QString m_shortcutKeys;
59 QList<QRegExp> m_blockedShortcutKeys;
60 QMap<QString, QString> m_keyMapping;
61
62 static const QString DefaultTips;
63};
64
65class DShortcutEditLabel : public QLabel
66{
67 Q_OBJECT
68 Q_PROPERTY(QColor echoNormal MEMBER m_colorNormal NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true)
69 Q_PROPERTY(QColor echoHover MEMBER m_colorHover NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true)
70 Q_PROPERTY(QColor echoInvalid MEMBER m_colorInvalid NOTIFY colorSettingChange DESIGNABLE true SCRIPTABLE true)
71
72public:
73 enum EchoState {Normal = 1, Hover, Invalid};
74
75public:
76 DShortcutEditLabel(QWidget * parent = 0);
77
78 void setEchoState(const EchoState state);
79
80Q_SIGNALS:
81 void colorSettingChange();
82
83private:
84 void enterEvent(QEvent *);
85 void leaveEvent(QEvent *);
86
87private:
88 QColor m_colorNormal;
89 QColor m_colorHover;
90 QColor m_colorInvalid;
91
92 EchoState m_state = Normal;
93};
94
95DWIDGET_END_NAMESPACE
96
97#endif // DSHORTCUTEDIT_H
Definition: dkeysequenceedit.h:18
Definition: dshortcutedit.h:66
Definition: dshortcutedit.h:21