#ifndef SHORTCUT_TREEVIEW_H #define SHORTCUT_TREEVIEW_H #include #include #include #include /** * Custom implementation of QSortFilterProxyModel that also searches in the parent's string when filtering */ class ShortcutFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT public: explicit ShortcutFilterProxyModel(QObject *parent = nullptr); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; }; class ShortcutTreeView : public QTreeView { Q_OBJECT public: explicit ShortcutTreeView(QWidget *parent); void retranslateUi(); signals: void currentItemChanged(const QString &shortcut); public slots: void updateSearchString(const QString &searchString); private: QStandardItemModel *shortcutsModel; ShortcutFilterProxyModel *proxyModel; void populateShortcutsModel(); private slots: void refreshShortcuts(); protected: void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override; }; #endif // SHORTCUT_TREEVIEW_H