QGIS/src/providers/wms/qgswmsdataitems.h

184 lines
5.2 KiB
C
Raw Normal View History

/***************************************************************************
qgswmsdataitems.h
---------------------
begin : October 2011
copyright : (C) 2011 by Martin Dobias
2012-10-08 00:29:13 +02:00
email : wonder dot sk at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
2011-10-13 21:17:05 -03:00
#ifndef QGSWMSDATAITEMS_H
#define QGSWMSDATAITEMS_H
#include "qgsdataitem.h"
#include "qgsdataitemprovider.h"
#include "qgsdatasourceuri.h"
2011-10-13 21:17:05 -03:00
#include "qgswmsprovider.h"
class QgsWmsCapabilitiesDownload;
2011-10-13 21:17:05 -03:00
class QgsWMSConnectionItem : public QgsDataCollectionItem
{
Q_OBJECT
2011-10-13 21:17:05 -03:00
public:
2017-03-03 08:42:00 +01:00
QgsWMSConnectionItem( QgsDataItem *parent, QString name, QString path, QString uri );
2011-10-13 21:17:05 -03:00
~QgsWMSConnectionItem();
2017-03-03 08:42:00 +01:00
QVector<QgsDataItem *> createChildren() override;
virtual bool equal( const QgsDataItem *other ) override;
2011-10-13 21:17:05 -03:00
#ifdef HAVE_GUI
2017-03-03 08:42:00 +01:00
virtual QList<QAction *> actions() override;
#endif
public slots:
#ifdef HAVE_GUI
void editConnection();
void deleteConnection();
#endif
virtual void deleteLater() override;
private:
QString mUri;
QgsWmsCapabilitiesDownload *mCapabilitiesDownload = nullptr;
2011-10-13 21:17:05 -03:00
};
// WMS Layers may be nested, so that they may be both QgsDataCollectionItem and QgsLayerItem
// We have to use QgsDataCollectionItem and support layer methods if necessary
class QgsWMSLayerItem : public QgsLayerItem
{
Q_OBJECT
public:
2017-03-03 08:42:00 +01:00
QgsWMSLayerItem( QgsDataItem *parent, QString name, QString path,
const QgsWmsCapabilitiesProperty &capabilitiesProperty,
const QgsDataSourceUri &dataSourceUri,
const QgsWmsLayerProperty &layerProperty );
2011-10-13 21:17:05 -03:00
~QgsWMSLayerItem();
QString createUri();
QgsWmsCapabilitiesProperty mCapabilitiesProperty;
QgsDataSourceUri mDataSourceUri;
2011-10-13 21:17:05 -03:00
QgsWmsLayerProperty mLayerProperty;
};
class QgsWMTSLayerItem : public QgsLayerItem
{
Q_OBJECT
public:
2017-03-03 08:42:00 +01:00
QgsWMTSLayerItem( QgsDataItem *parent,
const QString &name,
const QString &path,
const QgsDataSourceUri &dataSourceUri,
const QString &id,
const QString &format,
const QString &style,
const QString &tileMatrixSet,
const QString &crs,
const QString &title );
~QgsWMTSLayerItem();
QString createUri();
QString layerName() const override { return mTitle; }
private:
QgsDataSourceUri mDataSourceUri;
QString mId, mFormat, mStyle, mTileMatrixSet, mCrs, mTitle;
};
2011-10-13 21:17:05 -03:00
class QgsWMSRootItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
2017-03-03 08:42:00 +01:00
QgsWMSRootItem( QgsDataItem *parent, QString name, QString path );
2011-10-13 21:17:05 -03:00
~QgsWMSRootItem();
2017-03-03 08:42:00 +01:00
QVector<QgsDataItem *> createChildren() override;
2011-10-13 21:17:05 -03:00
#ifdef HAVE_GUI
2017-03-03 08:42:00 +01:00
virtual QList<QAction *> actions() override;
virtual QWidget *paramWidget() override;
#endif
2011-10-13 21:17:05 -03:00
public slots:
#ifdef HAVE_GUI
2011-10-13 21:17:05 -03:00
void connectionsChanged();
void newConnection();
#endif
2011-10-13 21:17:05 -03:00
};
//! Provider for WMS root data item
class QgsWmsDataItemProvider : public QgsDataItemProvider
{
public:
virtual QString name() override { return QStringLiteral( "WMS" ); }
virtual int capabilities() override { return QgsDataProvider::Net; }
2017-03-03 08:42:00 +01:00
virtual QgsDataItem *createDataItem( const QString &path, QgsDataItem *parentItem ) override;
};
//! Root item for XYZ tile layers
class QgsXyzTileRootItem : public QgsDataCollectionItem
{
Q_OBJECT
public:
2017-03-03 08:42:00 +01:00
QgsXyzTileRootItem( QgsDataItem *parent, QString name, QString path );
2017-03-03 08:42:00 +01:00
QVector<QgsDataItem *> createChildren() override;
#ifdef HAVE_GUI
2017-03-03 08:42:00 +01:00
virtual QList<QAction *> actions() override;
#endif
private slots:
#ifdef HAVE_GUI
void newConnection();
#endif
};
//! Item implementation for XYZ tile layers
class QgsXyzLayerItem : public QgsLayerItem
{
Q_OBJECT
public:
2017-03-03 08:42:00 +01:00
QgsXyzLayerItem( QgsDataItem *parent, QString name, QString path, const QString &encodedUri );
#ifdef HAVE_GUI
2017-03-03 08:42:00 +01:00
virtual QList<QAction *> actions() override;
#endif
public slots:
#ifdef HAVE_GUI
void editConnection();
void deleteConnection();
#endif
};
//! Provider for XYZ root data item
class QgsXyzTileDataItemProvider : public QgsDataItemProvider
{
public:
virtual QString name() override { return QStringLiteral( "XYZ Tiles" ); }
virtual int capabilities() override { return QgsDataProvider::Net; }
2017-03-03 08:42:00 +01:00
virtual QgsDataItem *createDataItem( const QString &path, QgsDataItem *parentItem ) override
{
if ( path.isEmpty() )
return new QgsXyzTileRootItem( parentItem, QStringLiteral( "XYZ Tiles" ), QStringLiteral( "xyz:" ) );
return nullptr;
}
};
2011-10-13 21:17:05 -03:00
#endif // QGSWMSDATAITEMS_H