File indexing completed on 2024-12-01 13:08:32
0001 // SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org> 0002 // SPDX-License-Identifier: GPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include <QSortFilterProxyModel> 0007 0008 /** 0009 * @class EmoticonFilterModel 0010 * 0011 * This class creates a custom QSortFilterProxyModel for filtering a emoticon by type 0012 * (Sticker or Emoji). 0013 */ 0014 class EmoticonFilterModel : public QSortFilterProxyModel 0015 { 0016 Q_OBJECT 0017 0018 /** 0019 * @brief Whether stickers should be shown 0020 */ 0021 Q_PROPERTY(bool showStickers READ showStickers WRITE setShowStickers NOTIFY showStickersChanged) 0022 0023 /** 0024 * @brief Whether emojis show be shown 0025 */ 0026 Q_PROPERTY(bool showEmojis READ showEmojis WRITE setShowEmojis NOTIFY showEmojisChanged) 0027 0028 public: 0029 explicit EmoticonFilterModel(QObject *parent = nullptr); 0030 0031 /** 0032 * @brief Custom filter function checking the type of emoticon 0033 * 0034 * @note The filter cannot be modified and will always use the same filter properties. 0035 */ 0036 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0037 0038 [[nodiscard]] bool showStickers() const; 0039 void setShowStickers(bool showStickers); 0040 0041 [[nodiscard]] bool showEmojis() const; 0042 void setShowEmojis(bool showEmojis); 0043 0044 Q_SIGNALS: 0045 void showStickersChanged(); 0046 void showEmojisChanged(); 0047 0048 private: 0049 bool m_showStickers = false; 0050 bool m_showEmojis = false; 0051 int m_stickerRole = 0; 0052 int m_emojiRole = 0; 0053 };