1 /* 2 objectidfilterproxymodel.h 3 4 This file is part of GammaRay, the Qt application inspection and 5 manipulation tool. 6 7 Copyright (C) 2010-2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com 8 Author: Filipe Azevedo <filipe.azevedo@kdab.com> 9 10 Licensees holding valid commercial KDAB GammaRay licenses may use this file in 11 accordance with GammaRay Commercial License Agreement provided with the Software. 12 13 Contact info@kdab.com if any conditions of this licensing are not clear to you. 14 15 This program is free software; you can redistribute it and/or modify 16 it under the terms of the GNU General Public License as published by 17 the Free Software Foundation, either version 2 of the License, or 18 (at your option) any later version. 19 20 This program is distributed in the hope that it will be useful, 21 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 GNU General Public License for more details. 24 25 You should have received a copy of the GNU General Public License 26 along with this program. If not, see <http://www.gnu.org/licenses/>. 27 */ 28 29 #ifndef GAMMARAY_OBJECTIDFILTERPROXYMODEL_H 30 #define GAMMARAY_OBJECTIDFILTERPROXYMODEL_H 31 32 #include "gammaray_common_export.h" 33 #include "3rdparty/kde/krecursivefilterproxymodel.h" 34 35 #include <common/objectid.h> 36 37 namespace GammaRay { 38 39 /** 40 * @brief A KRecursiveFilterProxyModel for ObjectIds. 41 * 42 * Filter in and sort according to the objects list. 43 */ 44 class GAMMARAY_COMMON_EXPORT ObjectIdsFilterProxyModel : public KRecursiveFilterProxyModel 45 { 46 Q_OBJECT 47 48 public: 49 /** 50 * Constructor. 51 * @param parent is the parent object for this instance. 52 */ 53 explicit ObjectIdsFilterProxyModel(QObject *parent = nullptr); 54 55 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; 56 57 GammaRay::ObjectIds ids() const; 58 void setIds(const GammaRay::ObjectIds &ids); 59 60 protected: 61 /** 62 * Determines if the item in the specified row can be included in the model. 63 * @param source_row is a non-zero integer representing the row of the item. 64 * @param source_parent is the parent QModelIndex for this model. 65 * @return true if the item in the row can be included in the model; 66 * otherwise returns false. 67 */ 68 bool acceptRow(int source_row, const QModelIndex &source_parent) const override; 69 70 /** 71 * Determines if the specified ObjectID can be included in the model. 72 * @param id is a ref to the ObjectId to test. 73 * @return true if the ObjectId can be included in the model; false otherwise. 74 */ 75 bool filterAcceptsObjectId(const GammaRay::ObjectId &id) const; 76 77 private: 78 GammaRay::ObjectIds m_ids; 79 }; 80 81 } 82 83 #endif // GAMMARAY_OBJECIDFILTERPROXYMODEL_H 84