1 /* 2 classesiconsrepository.h 3 4 This file is part of GammaRay, the Qt application inspection and 5 manipulation tool. 6 7 Copyright (C) 2016-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_CLASSESICONSREPOSITORY_H 30 #define GAMMARAY_CLASSESICONSREPOSITORY_H 31 32 #include "gammaray_common_export.h" 33 34 #include <QObject> 35 #include <QVector> 36 37 namespace GammaRay { 38 39 /*! Collection of classes icons id/file path and on-demand client/server transfer of those. */ 40 class GAMMARAY_COMMON_EXPORT ClassesIconsRepository : public QObject 41 { 42 Q_OBJECT 43 44 public: 45 ~ClassesIconsRepository() override; 46 47 /*! Request the icon file path for the given icon id. 48 * On the client side the response can be invalid on first request, 49 * as transfer from the server is asynchronous. Listen to the 50 * indexReceived() signal to be notified for its availability 51 * in that case. 52 */ 53 virtual QString filePath(int id) const; 54 55 using ConstIterator = QVector<QString>::const_iterator; 56 57 ConstIterator constBegin(); 58 ConstIterator constEnd(); 59 60 signals: 61 /*! Notification of complete index availability. 62 * @see filePath() 63 */ 64 void indexChanged(); 65 66 //! @cond internal 67 void indexResponse(const QVector<QString> &index); 68 69 protected: 70 explicit ClassesIconsRepository(QObject *parent = nullptr); 71 72 QVector<QString> index() const; 73 void setIndex(const QVector<QString> &index); 74 75 protected slots: 76 virtual void requestIndex() = 0; 77 //! @endcond 78 79 private: 80 QVector<QString> m_iconsIndex; 81 }; 82 83 } 84 85 QT_BEGIN_NAMESPACE 86 Q_DECLARE_INTERFACE(GammaRay::ClassesIconsRepository, "com.kdab.GammaRay.ClassesIconsRepository/1.0") 87 QT_END_NAMESPACE 88 89 #endif // GAMMARAY_CLASSESICONSREPOSITORY_H 90