Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
copyright :
original : (C) 2005 by Brendan Morley email : morb at ozemail dot com dot au
wms search : (C) 2009 Mathias Walker <mwa at sourcepole.ch>, Sourcepole AG
wmts/wms-c support : (C) 2010-2012 Juergen E. Fischer < jef at norbit dot de >, norBIT GmbH
wms-c support : (C) 2010 Juergen E. Fischer < jef at norbit dot de >, norBIT GmbH
***************************************************************************/

Expand All @@ -19,24 +19,22 @@
***************************************************************************/
/* $Id$ */

#include "qgswmsprovider.h"
#include "../providers/wms/qgswmsprovider.h"
#include "qgis.h" // GEO_EPSG_CRS_ID
#include "qgisapp.h" //for getThemeIcon
#include "qgscontexthelp.h"
#include "qgscoordinatereferencesystem.h"
#include "qgsgenericprojectionselector.h"
#include "qgslogger.h"
#include "qgsmanageconnectionsdialog.h"
#include "qgsmessageviewer.h"
#include "qgsnewhttpconnection.h"
#include "qgsnumericsortlistviewitem.h"
#include "qgsproject.h"
#include "qgsproviderregistry.h"
#include "qgswmssourceselect.h"
#include "qgswmtsdimensions.h"
#include "qgsnetworkaccessmanager.h"

#include "../../gui/qgsgenericprojectionselector.h"

#include "../../app/qgsnewhttpconnection.h"
#include "../../app/qgsnumericsortlistviewitem.h"
#include "../../app/qgsmanageconnectionsdialog.h"

#include <QButtonGroup>
#include <QFileDialog>
#include <QRadioButton>
Expand Down Expand Up @@ -64,8 +62,8 @@ QgsWMSSourceSelect::QgsWMSSourceSelect( QWidget * parent, Qt::WFlags fl )
buttonBox->addButton( mAddButton, QDialogButtonBox::ActionRole );
connect( mAddButton, SIGNAL( clicked() ), this, SLOT( addClicked() ) );

// mLayerUpButton->setIcon( QgisApp::getThemeIcon( "/mActionArrowUp.png" ) );
// mLayerDownButton->setIcon( QgisApp::getThemeIcon( "/mActionArrowDown.png" ) );
mLayerUpButton->setIcon( QgisApp::getThemeIcon( "/mActionArrowUp.png" ) );
mLayerDownButton->setIcon( QgisApp::getThemeIcon( "/mActionArrowDown.png" ) );

mAddButton->setEnabled( false );
populateConnectionList();
Expand Down Expand Up @@ -349,68 +347,57 @@ bool QgsWMSSourceSelect::populateLayerList( QgsWmsProvider *wmsProvider )

lstLayers->sortByColumn( 0, Qt::AscendingOrder );

wmsProvider->supportedTileLayers( mTileLayers );
QVector<QgsWmsTileSetProfile> tilesets;
wmsProvider->supportedTileSets( tilesets );

tabServers->setTabEnabled( tabServers->indexOf( tabTilesets ), mTileLayers.size() > 0 );
tabServers->setTabEnabled( tabServers->indexOf( tabTilesets ), tilesets.size() > 0 );
if ( tabServers->isTabEnabled( tabServers->indexOf( tabTilesets ) ) )
tabServers->setCurrentWidget( tabTilesets );

if ( mTileLayers.size() > 0 )
if ( tilesets.size() > 0 )
{
QHash<QString, QgsWmtsTileMatrixSet> tileMatrixSets;
wmsProvider->supportedTileMatrixSets( tileMatrixSets );

int rows = 0;
foreach( const QgsWmtsTileLayer &l, mTileLayers )
{
rows += l.styles.size() * l.setLinks.size();
}

lstTilesets->clearContents();
lstTilesets->setRowCount( rows );
lstTilesets->setRowCount( tilesets.size() );
lstTilesets->setSortingEnabled( true );

int row = 0;
foreach( const QgsWmtsTileLayer &l, mTileLayers )
for ( int i = 0; i < tilesets.size(); i++ )
{
foreach( const QgsWmtsStyle &style, l.styles )
QTableWidgetItem *item = new QTableWidgetItem( tilesets[i].layers.join( ", " ) );

item->setData( Qt::UserRole + 0, tilesets[i].layers.join( "," ) );
item->setData( Qt::UserRole + 1, tilesets[i].styles.join( "," ) );
item->setData( Qt::UserRole + 2, tilesets[i].format );
item->setData( Qt::UserRole + 3, tilesets[i].crs );
item->setData( Qt::UserRole + 4, tilesets[i].tileWidth );
item->setData( Qt::UserRole + 5, tilesets[i].tileHeight );
item->setData( Qt::UserRole + 6, tilesets[i].resolutions );

lstTilesets->setItem( i, 0, item );
lstTilesets->setItem( i, 1, new QTableWidgetItem( tilesets[i].styles.join( ", " ) ) );
lstTilesets->setItem( i, 2, new QTableWidgetItem( QString( "%1x%2" ).arg( tilesets[i].tileWidth ).arg( tilesets[i].tileHeight ) ) );
lstTilesets->setItem( i, 3, new QTableWidgetItem( tilesets[i].format ) );
lstTilesets->setItem( i, 4, new QTableWidgetItem( tilesets[i].crs ) );

for ( int j = 0; j < 5; j++ )
{
QTableWidgetItem *item = lstTilesets->item( i, j );
item->setFlags( item->flags() & ~Qt::ItemIsEditable );
}

if ( !mMimeMap.contains( tilesets[i].format ) )
{
foreach( const QgsWmtsTileMatrixSetLink &setLink, l.setLinks )
for ( int j = 0; j < 5; j++ )
{
foreach( QString format, l.formats )
{
QTableWidgetItem *item = new QTableWidgetItem( l.identifier );
item->setData( Qt::UserRole + 0, l.identifier );

item->setData( Qt::UserRole + 1, format );
item->setData( Qt::UserRole + 2, style.identifier );
item->setData( Qt::UserRole + 3, setLink.tileMatrixSet );
item->setData( Qt::UserRole + 4, tileMatrixSets[ setLink.tileMatrixSet ].crs );

lstTilesets->setItem( row, 0, item );
lstTilesets->setItem( row, 1, new QTableWidgetItem( format ) );
lstTilesets->setItem( row, 2, new QTableWidgetItem( style.identifier ) );
QTableWidgetItem *styleItem = new QTableWidgetItem( l.title );
if ( !l.abstract.isEmpty() )
styleItem->setToolTip( "<p>" + l.abstract + "</p>" );
lstTilesets->setItem( row, 3, styleItem );
lstTilesets->setItem( row, 4, new QTableWidgetItem( setLink.tileMatrixSet ) );
lstTilesets->setItem( row, 5, new QTableWidgetItem( tileMatrixSets[ setLink.tileMatrixSet ].crs ) );

if ( !mMimeMap.contains( format ) )
{
for ( int i = 0; i < lstTilesets->columnCount(); i++ )
{
QTableWidgetItem *item = lstTilesets->item( row, i );
item->setFlags( item->flags() & ~Qt::ItemIsEnabled );
item->setToolTip( tr( "encoding %1 not supported." ).arg( format ) );
}
}
}

row++;
QTableWidgetItem *item = lstTilesets->item( i, j );
item->setFlags( item->flags() & ~Qt::ItemIsEnabled );
item->setToolTip( tr( "encoding %1 not supported." ).arg( tilesets[i].format ) );
}
}

QString crsName = descriptionForAuthId( tilesets[i].crs );
if ( crsName.isEmpty() )
crsName = tr( "CRS %1 not supported." ).arg( tilesets[i].crs );
lstTilesets->item( i, 4 )->setToolTip( crsName );
}

lstTilesets->resizeColumnsToContents();
Expand Down Expand Up @@ -524,8 +511,6 @@ void QgsWMSSourceSelect::addClicked()
QString crs;
QString connInfo = connectionInfo();

QStringList connArgs;

if ( lstTilesets->selectedItems().isEmpty() )
{
collectSelectedLayers( layers, styles );
Expand All @@ -535,70 +520,26 @@ void QgsWMSSourceSelect::addClicked()
else
{
QTableWidgetItem *item = lstTilesets->selectedItems().first();
layers = item->data( Qt::UserRole + 0 ).toStringList();
styles = item->data( Qt::UserRole + 1 ).toStringList();
format = item->data( Qt::UserRole + 2 ).toString();
crs = item->data( Qt::UserRole + 3 ).toString();

layers = QStringList( item->data( Qt::UserRole + 0 ).toString() );
format = item->data( Qt::UserRole + 1 ).toString();
styles = QStringList( item->data( Qt::UserRole + 2 ).toString() );
crs = item->data( Qt::UserRole + 4 ).toString();

connArgs << QString( "tileMatrixSet=%1" ).arg( item->data( Qt::UserRole + 3 ).toStringList().join( ";" ) );

const QgsWmtsTileLayer *layer = 0;

foreach( const QgsWmtsTileLayer &l, mTileLayers )
{
if ( l.identifier == layers.join( "," ) )
{
layer = &l;
break;
}
}

Q_ASSERT( layer );
QString connArgs = QString( "tiled=%1;%2;%3" )
.arg( item->data( Qt::UserRole + 4 ).toInt() )
.arg( item->data( Qt::UserRole + 5 ).toInt() )
.arg( item->data( Qt::UserRole + 6 ).toStringList().join( ";" ) );

if ( !layer->dimensions.isEmpty() )
if ( connInfo.startsWith( "username=" ) || connInfo.startsWith( "ignoreUrl=" ) )
{
QgsWmtsDimensions *dlg = new QgsWmtsDimensions( *layer, this );
if ( dlg->exec() != QDialog::Accepted )
{
delete dlg;
return;
}

QHash<QString, QString> dims;
dlg->selectedDimensions( dims );

QString dimString = "tileDimensions=";
QString delim;

for ( QHash<QString, QString>::const_iterator it = dims.constBegin();
it != dims.constEnd();
++it )
{
dimString += delim + it.key() + "=" + it.value();
delim = ";";
}

delete dlg;

connArgs << dimString;
connInfo.prepend( connArgs + "," );
}
}

if ( !connArgs.isEmpty() )
{
if ( !connInfo.startsWith( "username=" ) && !connInfo.startsWith( "ignoreUrl=" ) )
else
{
connInfo.prepend( "url=" );
connInfo.prepend( connArgs + ",url=" );
}

connArgs << connInfo;

connInfo = connArgs.join( "," );
}

QgsDebugMsg( QString( "connInfo=%1 crs=%2 " ).arg( connInfo ).arg( crs ) );

QgisApp::instance()->addRasterLayer( connInfo,
leLayerName->text().isEmpty() ? layers.join( "/" ) : leLayerName->text(),
"wms", layers, styles, format, crs );
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/***************************************************************************
qgswmssourceselect.h - selector for WMS servers, etc.
qgserversourceselect.h - selector for WMS servers, etc.
-------------------
begin : 3 April 2005
original : (C) 2005 by Brendan Morley email : morb at ozemail dot com dot au
Expand All @@ -21,7 +21,6 @@
#include "ui_qgswmssourceselectbase.h"
#include "qgisgui.h"
#include "qgscontexthelp.h"
#include "qgswmsprovider.h"

#include <QStringList>
#include <QPushButton>
Expand Down Expand Up @@ -189,17 +188,6 @@ class QgsWMSSourceSelect : public QDialog, private Ui::QgsWMSSourceSelectBase
QList<QTreeWidgetItem*> mCurrentSelection;
QTableWidgetItem* mCurrentTileset;

QList<QgsWmtsTileLayer> mTileLayers;

signals:
void addRasterLayer( QString const & rasterLayerPath,
QString const & baseName,
QString const & providerKey,
QStringList const & layers,
QStringList const & styles,
QString const & format,
QString const & crs );
void connectionsChanged();
private slots:
void on_btnSearch_clicked();
void on_btnAddWMS_clicked();
Expand Down
35 changes: 4 additions & 31 deletions src/core/qgscoordinatereferencesystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,25 +128,16 @@ bool QgsCoordinateReferenceSystem::createFromString( const QString theDefinition

bool QgsCoordinateReferenceSystem::createFromOgcWmsCrs( QString theCrs )
{
QRegExp re( "urn:ogc:def:crs:([^:]+).+([^:]+)", Qt::CaseInsensitive );
if ( re.exactMatch( theCrs ) )
QRegExp re( "(user|custom|qgis):(\\d+)", Qt::CaseInsensitive );
if ( re.exactMatch( theCrs ) && createFromSrsId( re.cap( 2 ).toInt() ) )
{
theCrs = re.cap( 1 ) + ":" + re.cap( 2 );
}
else
{
re.setPattern( "(user|custom|qgis):(\\d+)" );
if ( re.exactMatch( theCrs ) && createFromSrsId( re.cap( 2 ).toInt() ) )
{
return true;
}
return true;
}

if ( loadFromDb( QgsApplication::srsDbFilePath(), "lower(auth_name||':'||auth_id)", theCrs.toLower() ) )
return true;

if ( theCrs.compare( "CRS:84", Qt::CaseInsensitive ) == 0 ||
theCrs.compare( "OGC:CRS84", Qt::CaseInsensitive ) == 0 )
if ( theCrs.compare( "CRS:84", Qt::CaseInsensitive ) == 0 )
{
createFromSrsId( GEOCRS_ID );
return true;
Expand All @@ -170,7 +161,6 @@ QgsCoordinateReferenceSystem& QgsCoordinateReferenceSystem::operator=( const Qgs
mDescription = srs.mDescription;
mProjectionAcronym = srs.mProjectionAcronym;
mEllipsoidAcronym = srs.mEllipsoidAcronym;
mAxisInverted = srs.mAxisInverted;
mGeoFlag = srs.mGeoFlag;
mMapUnits = srs.mMapUnits;
mSRID = srs.mSRID;
Expand Down Expand Up @@ -268,7 +258,6 @@ bool QgsCoordinateReferenceSystem::loadFromDb( QString db, QString expression, Q
mSRID = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 5 ) ).toLong();
mAuthId = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 6 ) );
mGeoFlag = QString::fromUtf8(( char * )sqlite3_column_text( myPreparedStatement, 7 ) ).toInt() != 0;
mAxisInverted = -1;

if ( mSrsId >= USER_CRS_START_ID && mAuthId.isEmpty() )
{
Expand Down Expand Up @@ -756,22 +745,6 @@ bool QgsCoordinateReferenceSystem::geographicFlag() const
return mGeoFlag;
}

bool QgsCoordinateReferenceSystem::axisInverted() const
{
if ( mAxisInverted == -1 )
{
OGRAxisOrientation orientation;
const char *axis0 = OSRGetAxis( mCRS, mGeoFlag ? "GEOGCS" : "PROJCS", 0, &orientation );
mAxisInverted = mGeoFlag
? ( orientation == OAO_East || orientation == OAO_West || orientation == OAO_Other )
: ( orientation == OAO_North || orientation == OAO_South );
QgsDebugMsg( QString( "srid:%1 axis0:%2 orientation:%3 inverted:%4" ).arg( mSRID ).arg( axis0 ).arg( OSRAxisEnumToName( orientation ) ).arg( mAxisInverted ) );
Q_UNUSED( axis0 );
}

return mAxisInverted != 0;
}

QGis::UnitType QgsCoordinateReferenceSystem::mapUnits() const
{
return mMapUnits;
Expand Down
9 changes: 0 additions & 9 deletions src/core/qgscoordinatereferencesystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -308,12 +308,6 @@ class CORE_EXPORT QgsCoordinateReferenceSystem
*/
bool geographicFlag() const;

/*! return if axis is inverted (eg. for WMS 1.3)
* @return bool Whether this is crs axis is inverted
* @note added in 1.9.90
*/
bool axisInverted() const;

/*! Get the units that the projection is in
* @return QGis::UnitType that gives the units for the coordinate system
*/
Expand Down Expand Up @@ -432,9 +426,6 @@ class CORE_EXPORT QgsCoordinateReferenceSystem

QString mValidationHint;

//!Whether this is a coordinate system has inverted axis
mutable int mAxisInverted;

static CUSTOM_CRS_VALIDATION mCustomSrsValidation;
};

Expand Down
2 changes: 0 additions & 2 deletions src/core/qgsproviderregistry.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@ class CORE_EXPORT QgsProviderRegistry
/** type for data provider metadata associative container */
typedef std::map<QString, QgsProviderMetadata*> Providers;

void registerGuis( QWidget *widget );

private:

/** ctor private since instance() creates it */
Expand Down
1 change: 0 additions & 1 deletion src/core/spatialindex/storagemanager/DiskStorageManager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
#include <cstring>

#ifdef WIN32
Expand Down
1 change: 0 additions & 1 deletion src/core/spatialindex/tools/TemporaryFile.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
// mhadji@gmail.com

#include <stdio.h>
#include <unistd.h>

#include <Tools.h>

Expand Down
1 change: 0 additions & 1 deletion src/gui/qgsmapcanvas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ QgsMapCanvas::QgsMapCanvas( QWidget * parent, const char *name )
, mPainting( false )
, mAntiAliasing( false )
{
setObjectName( name );
//disable the update that leads to the resize crash
if ( viewport() )
{
Expand Down
24 changes: 3 additions & 21 deletions src/providers/wms/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,37 +1,19 @@
SET (WMS_SRCS
qgswmsprovider.cpp
qgswmssourceselect.cpp
qgstilescalewidget.cpp
qgswmtsdimensions.cpp
../../app/qgsnewhttpconnection.cpp
../../app/qgsnumericsortlistviewitem.cpp
../../app/qgsmanageconnectionsdialog.cpp
)
SET (WMS_MOC_HDRS
qgswmsprovider.h
qgswmssourceselect.h
qgstilescalewidget.h
qgswmtsdimensions.h
../../app/qgsnewhttpconnection.h
../../app/qgsnumericsortlistviewitem.h
../../app/qgsmanageconnectionsdialog.h
)

SET (WMS_SRCS qgswmsprovider.cpp)
SET (WMS_MOC_HDRS qgswmsprovider.h)

QT4_WRAP_CPP (WMS_MOC_SRCS ${WMS_MOC_HDRS})

INCLUDE_DIRECTORIES( .
${CMAKE_CURRENT_BINARY_DIR}/../../ui
../../core
../../core/raster
../../gui
${GDAL_INCLUDE_DIR}
)

ADD_LIBRARY(wmsprovider MODULE ${WMS_SRCS} ${WMS_MOC_SRCS})

TARGET_LINK_LIBRARIES(wmsprovider
qgis_core
qgis_gui
)

INSTALL (TARGETS wmsprovider
Expand Down
2,285 changes: 742 additions & 1,543 deletions src/providers/wms/qgswmsprovider.cpp

Large diffs are not rendered by default.

250 changes: 55 additions & 195 deletions src/providers/wms/qgswmsprovider.h

Large diffs are not rendered by default.

74 changes: 0 additions & 74 deletions src/providers/wms/qgswmtsdimensions.cpp

This file was deleted.

50 changes: 0 additions & 50 deletions src/providers/wms/qgswmtsdimensions.h

This file was deleted.

6 changes: 6 additions & 0 deletions src/ui/qgisapp.ui
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
<addaction name="mActionNewBookmark"/>
<addaction name="mActionShowBookmarks"/>
<addaction name="mActionDraw"/>
<addaction name="mActionTileScale"/>
<addaction name="mActionGpsTool"/>
</widget>
<widget class="QMenu" name="mLayerMenu">
Expand Down Expand Up @@ -1213,6 +1214,11 @@
<string>Set Project CRS from Layer</string>
</property>
</action>
<action name="mActionTileScale">
<property name="text">
<string>Tile scale slider</string>
</property>
</action>
<action name="mActionGpsTool">
<property name="text">
<string>Live GPS tracking</string>
Expand Down
13 changes: 4 additions & 9 deletions src/ui/qgswmssourceselectbase.ui
Original file line number Diff line number Diff line change
Expand Up @@ -326,27 +326,22 @@
</attribute>
<column>
<property name="text">
<string>Layer</string>
<string>Layers</string>
</property>
</column>
<column>
<property name="text">
<string>Format</string>
<string>Styles</string>
</property>
</column>
<column>
<property name="text">
<string>Style</string>
<string>Size</string>
</property>
</column>
<column>
<property name="text">
<string>Title</string>
</property>
</column>
<column>
<property name="text">
<string>Tileset</string>
<string>Format</string>
</property>
</column>
<column>
Expand Down
93 changes: 0 additions & 93 deletions src/ui/qgswmtsdimensionsbase.ui

This file was deleted.