1 // SPDX-License-Identifier: LGPL-2.1-or-later 2 // 3 // SPDX-FileCopyrightText: 2016 Akshat Tandon <akshat.tandon@research.iiit.ac.in> 4 // 5 6 7 #ifndef MARBLE_TAGSFILTER_H 8 #define MARBLE_TAGSFILTER_H 9 10 #include "OsmPlacemarkData.h" 11 12 #include <QMap> 13 #include <QString> 14 15 namespace Marble { 16 17 class GeoDataDocument; 18 class GeoDataFeature; 19 20 class TagsFilter 21 { 22 public: 23 typedef QPair<QString, QString> Tag; 24 using Tags = QVector<Tag>; 25 26 enum FilterFlag { 27 NoFlag = 0, 28 FilterRailwayService 29 }; 30 31 //Filters placemarks which have tags in the hash 32 TagsFilter(GeoDataDocument* document, const Tags& tagsList, FilterFlag filterFlag = NoFlag); 33 ~TagsFilter(); 34 35 QVector<GeoDataFeature*>::const_iterator rejectedObjectsBegin() const; 36 QVector<GeoDataFeature*>::const_iterator rejectedObjectsEnd() const; 37 38 GeoDataDocument* accepted(); 39 40 static void removeAnnotationTags(GeoDataDocument* document); 41 42 private: 43 static void removeAnnotationTags(OsmPlacemarkData &osmData); 44 45 GeoDataDocument* m_accepted; 46 QVector<GeoDataFeature*> m_rejectedObjects; 47 }; 48 49 } 50 51 #endif 52