File indexing completed on 2024-04-14 14:16:49

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2016 Akshat Tandon <akshat.tandon@research.iiit.ac.in>
0004 //
0005 
0006 
0007 #ifndef MARBLE_TAGSFILTER_H
0008 #define MARBLE_TAGSFILTER_H
0009 
0010 #include "OsmPlacemarkData.h"
0011 
0012 #include <QMap>
0013 #include <QString>
0014 
0015 namespace Marble {
0016 
0017 class GeoDataDocument;
0018 class GeoDataFeature;
0019 
0020 class TagsFilter
0021 {
0022 public:
0023     typedef QPair<QString, QString> Tag;
0024     using Tags = QVector<Tag>;
0025 
0026     enum FilterFlag {
0027         NoFlag = 0,
0028         FilterRailwayService
0029     };
0030 
0031     //Filters placemarks which have tags in the hash
0032     TagsFilter(GeoDataDocument* document, const Tags& tagsList, FilterFlag filterFlag = NoFlag);
0033     ~TagsFilter();
0034 
0035     QVector<GeoDataFeature*>::const_iterator rejectedObjectsBegin() const;
0036     QVector<GeoDataFeature*>::const_iterator rejectedObjectsEnd() const;
0037 
0038     GeoDataDocument* accepted();
0039 
0040     static void removeAnnotationTags(GeoDataDocument* document);
0041 
0042 private:
0043     static void removeAnnotationTags(OsmPlacemarkData &osmData);
0044 
0045     GeoDataDocument* m_accepted;
0046     QVector<GeoDataFeature*> m_rejectedObjects;
0047 };
0048 
0049 }
0050 
0051 #endif