1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#ifndef SHORTCUTSETTINGWIDGET_H
6#define SHORTCUTSETTINGWIDGET_H
7
8#include <QWidget>
9#include <QAbstractTableModel>
10#include <common/widget/pagewidget.h>
11
12enum ColumnID
13{
14 kID,
15 kDescriptions,
16 kShortcut,
17 _KCount
18};
19
20class ShortcutTableModelPrivate;
21class ShortcutTableModel : public QAbstractTableModel
22{
23 Q_OBJECT
24public:
25 explicit ShortcutTableModel(QObject *parent = nullptr);
26 virtual ~ShortcutTableModel();
27
28 int rowCount(const QModelIndex &parent = QModelIndex()) const;
29 int columnCount(const QModelIndex &parent = QModelIndex()) const;
30 QVariant data(const QModelIndex &index, int role) const;
31 QVariant headerData(int section, Qt::Orientation orientation, int role) const;
32
33 void updateShortcut(QString id, QString shortcut);
34 void resetShortcut(QString id);
35 void resetAllShortcut();
36 void saveShortcut();
37 void readShortcut();
38 void importExternalJson(const QString &filePath);
39 void exportExternalJson(const QString &filePath);
40 bool shortcutRepeat(const QString &text) const;
41 bool keySequenceIsInvalid(const QKeySequence &sequence) const;
42
43signals:
44
45private:
46 ShortcutTableModelPrivate *d;
47};
48
49class ShortcutSettingWidgetPrivate;
50class ShortcutSettingWidget : public PageWidget
51{
52 Q_OBJECT
53public:
54 explicit ShortcutSettingWidget(QWidget *parent = nullptr);
55 virtual ~ShortcutSettingWidget();
56 void saveConfig();
57 void readConfig();
58 void checkShortcutValidity(const int row, const QString &shortcut);
59 bool shortcutIsRepeat(const int row, const QString &text);
60
61signals:
62
63public slots:
64 void onTableViewClicked(const QModelIndex &);
65 void onShortcutEditTextChanged(const QString &);
66 void onBtnResetAllClicked();
67 void onBtnImportClicked();
68 void onBtnExportClicked();
69 void onBtnResetClicked();
70 void onBtnRecordClicked();
71private:
72 void setupUi();
73 void setSelectedShortcut();
74 ShortcutSettingWidgetPrivate *const d;
75};
76
77#endif // SHORTCUTSETTINGWIDGET_H
78