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