QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsvectortilebasiclabelingwidget.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectortilebasiclabelingwidget.h
3 --------------------------------------
4 Date : May 2020
5 Copyright : (C) 2020 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSVECTORTILEBASICLABELINGWIDGET_H
17#define QGSVECTORTILEBASICLABELINGWIDGET_H
18
20
21#include "ui_qgsvectortilebasiclabelingwidget.h"
22
23#include <memory>
24#include <QSortFilterProxyModel>
25
27#define SIP_NO_FILE
28
30class QgsVectorTileBasicLabelingListModel;
32class QgsMapCanvas;
33class QgsMessageBar;
34class QgsVectorTileBasicLabelingProxyModel;
35
42class GUI_EXPORT QgsVectorTileBasicLabelingWidget : public QgsMapLayerConfigWidget, private Ui::QgsVectorTileBasicLabelingWidget
43{
44 Q_OBJECT
45 public:
46 QgsVectorTileBasicLabelingWidget( QgsVectorTileLayer *layer, QgsMapCanvas *canvas, QgsMessageBar *messageBar, QWidget *parent = nullptr );
47 ~QgsVectorTileBasicLabelingWidget() override;
48
49 void setLayer( QgsVectorTileLayer *layer );
50
51 public slots:
53 void apply() override;
54
55 private slots:
56 void addStyle( Qgis::GeometryType geomType );
57 //void addStyle();
58 void editStyle();
59 void editStyleAtIndex( const QModelIndex &index );
60 void removeStyle();
61
62 void labelModeChanged();
63 void updateLabelingFromWidget();
64
65 private:
66 QPointer< QgsVectorTileLayer > mVTLayer;
67 std::unique_ptr<QgsVectorTileBasicLabeling> mLabeling;
68 QgsVectorTileBasicLabelingListModel *mModel = nullptr;
69 QgsVectorTileBasicLabelingProxyModel *mProxyModel = nullptr;
70 QgsMapCanvas *mMapCanvas = nullptr;
71 QgsMessageBar *mMessageBar = nullptr;
72};
73
74
76class QgsVectorLayer;
78class QgsLabelingGui;
79
86class QgsLabelingPanelWidget : public QgsPanelWidget
87{
88 Q_OBJECT
89 public:
90 QgsLabelingPanelWidget( const QgsPalLayerSettings &labelSettings, QgsVectorLayer *vectorLayer, QgsMapCanvas *mapCanvas, QWidget *parent = nullptr );
91
92 void setDockMode( bool dockMode ) override;
93
94 void setContext( const QgsSymbolWidgetContext &context );
95 QgsPalLayerSettings labelSettings();
96
97 private:
98 QgsLabelingGui *mLabelingGui = nullptr;
99};
100
101
103
104class QgsVectorTileBasicLabelingListModel : public QAbstractListModel
105{
106 Q_OBJECT
107 public:
108
109 enum Role
110 {
111 MinZoom = Qt::UserRole + 1,
112 MaxZoom,
113 Label,
114 Layer,
115 Filter
116 };
117
118 QgsVectorTileBasicLabelingListModel( QgsVectorTileBasicLabeling *r, QObject *parent = nullptr );
119
120 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
121 int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
122 QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
123 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
124 Qt::ItemFlags flags( const QModelIndex &index ) const override;
125 bool setData( const QModelIndex &index, const QVariant &value, int role ) override;
126
127 bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
128
129 void insertStyle( int row, const QgsVectorTileBasicLabelingStyle &style );
130
131 // drag'n'drop support
132 Qt::DropActions supportedDropActions() const override;
133 QStringList mimeTypes() const override;
134 QMimeData *mimeData( const QModelIndexList &indexes ) const override;
135 bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) override;
136
137 private:
138 QgsVectorTileBasicLabeling *mLabeling = nullptr;
139};
140
141class QgsVectorTileBasicLabelingProxyModel : public QSortFilterProxyModel
142{
143 Q_OBJECT
144 public:
145 QgsVectorTileBasicLabelingProxyModel( QgsVectorTileBasicLabelingListModel *source, QObject *parent = nullptr );
146
147 void setCurrentZoom( int zoom );
148 void setFilterVisible( bool enabled );
149 void setFilterString( const QString &string );
150
151 bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const override;
152
153 private:
154
155 bool mFilterVisible = false;
156 QString mFilterString;
157 int mCurrentZoom = -1;
158};
159
160
162
163#endif // QGSVECTORTILEBASICLABELINGWIDGET_H
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition: qgis.h:255
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:93
A panel widget that can be shown in the map style dock.
virtual void apply()=0
Called when changes to the layer need to be made.
A bar for displaying non-blocking messages to the user.
Definition: qgsmessagebar.h:61
Contains settings for how a map layer will be labeled.
Base class for any widget that can be shown as a inline panel.
virtual void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Represents a vector layer which manages a vector based data sets.
Configuration of a single style within QgsVectorTileBasicLabeling.
Basic labeling configuration for vector tile layers.
Implements a map layer that is dedicated to rendering of vector tiles.