4 changes: 2 additions & 2 deletions src/core/qgscoordinatereferencesystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,11 +201,11 @@ class CORE_EXPORT QgsCoordinateReferenceSystem
/*! Overloaded == operator used to compare to CRS's.
* Internally it will delegate to the equals method described below
*/
bool operator==( const QgsCoordinateReferenceSystem &theSrs );
bool operator==( const QgsCoordinateReferenceSystem &theSrs ) const;
/*! Overloaded != operator used to compare to CRS's.
* Returns opposite bool value to operator ==
*/
bool operator!=( const QgsCoordinateReferenceSystem &theSrs );
bool operator!=( const QgsCoordinateReferenceSystem &theSrs ) const;
/*! Overloaded == operator used to compare to CRS's.
* Internally it will use OGR isSameCRS() or isSameGeoCRS() methods as appropriate.
* Additionally logic may also be applied if the result from the OGR methods
Expand Down
7 changes: 7 additions & 0 deletions src/core/qgsmaplayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,13 @@ const QgsCoordinateReferenceSystem& QgsMapLayer::srs()
void QgsMapLayer::setCrs( const QgsCoordinateReferenceSystem& srs, bool emitSignal )
{
*mCRS = srs;

if ( !mCRS->isValid() )
{
mCRS->setValidationHint( tr( "Specify CRS for layer %1" ).arg( name() ) );
mCRS->validate();
}

if ( emitSignal )
emit layerCrsChanged();
}
Expand Down
7 changes: 3 additions & 4 deletions src/core/qgsmaplayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ class CORE_EXPORT QgsMapLayer : public QObject
@note emitSignal added in 1.4 */
void setCrs( const QgsCoordinateReferenceSystem& srs, bool emitSignal = true );


/** A convenience function to capitalise the layer name */
static QString capitaliseLayerName( const QString name );

Expand Down Expand Up @@ -418,15 +417,15 @@ class CORE_EXPORT QgsMapLayer : public QObject
/** Name of the layer - used for display */
QString mLayerName;

/** layer's Spatial reference system */
QgsCoordinateReferenceSystem* mCRS;

QString mTitle;

/**Description of the layer*/
QString mAbstract;

private:
/** layer's spatial reference system.
private to make sure setCrs must be used and layerCrsChanged() is emitted */
QgsCoordinateReferenceSystem* mCRS;

/** private copy constructor - QgsMapLayer not copyable */
QgsMapLayer( QgsMapLayer const & );
Expand Down
24 changes: 24 additions & 0 deletions src/core/qgsmaprenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,7 @@ void QgsMapRenderer::setDestinationCrs( const QgsCoordinateReferenceSystem& crs
QgsDebugMsg( "* DestCRS.srsid() = " + QString::number( crs.srsid() ) );
if ( *mDestCRS != crs )
{
invalidateCachedLayerCrs();
QgsDebugMsg( "Setting DistArea CRS to " + QString::number( crs.srsid() ) );
mDistArea->setSourceCrs( crs.srsid() );
*mDestCRS = crs;
Expand Down Expand Up @@ -754,6 +755,9 @@ bool QgsMapRenderer::splitLayersExtent( QgsMapLayer* layer, QgsRectangle& extent

QgsRectangle QgsMapRenderer::layerExtentToOutputExtent( QgsMapLayer* theLayer, QgsRectangle extent )
{
QgsDebugMsg( QString( "sourceCrs = " + tr( theLayer )->sourceCrs().authid() ) );
QgsDebugMsg( QString( "destCRS = " + tr( theLayer )->destCRS().authid() ) );
QgsDebugMsg( QString( "extent = " + extent.toString() ) );
if ( hasCrsTransformEnabled() )
{
try
Expand All @@ -770,6 +774,7 @@ QgsRectangle QgsMapRenderer::layerExtentToOutputExtent( QgsMapLayer* theLayer, Q
{
// leave extent unchanged
}
QgsDebugMsg( QString( "proj extent = " + extent.toString() ) );

return extent;
}
Expand Down Expand Up @@ -1104,12 +1109,31 @@ QgsCoordinateTransform *QgsMapRenderer::tr( QgsMapLayer *layer )
{
if ( mCachedTrForLayer != layer )
{
invalidateCachedLayerCrs();

delete mCachedTr;
mCachedTr = new QgsCoordinateTransform( layer->crs(), *mDestCRS );
mCachedTrForLayer = layer;

connect( layer, SIGNAL( layerCrsChanged() ), this, SLOT( invalidateCachedLayerCrs() ) );
connect( layer, SIGNAL( destroyed() ), this, SLOT( cachedLayerDestroyed() ) );
}

return mCachedTr;
}

void QgsMapRenderer::cachedLayerDestroyed()
{
if ( mCachedTrForLayer == sender() )
mCachedTrForLayer = 0;
}

void QgsMapRenderer::invalidateCachedLayerCrs()
{
if ( mCachedTrForLayer )
disconnect( mCachedTrForLayer, SIGNAL( layerCrsChanged() ), this, SLOT( invalidateCachedLayerCrs() ) );

mCachedTrForLayer = 0;
}

bool QgsMapRenderer::mDrawing = false;
6 changes: 6 additions & 0 deletions src/core/qgsmaprenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,12 @@ class CORE_EXPORT QgsMapRenderer : public QObject
//! called by signal from layer current being drawn
void onDrawingProgress( int current, int total );

//! invalidate cached layer CRS
void invalidateCachedLayerCrs();

//! cached layer was destroyed
void cachedLayerDestroyed();

protected:

//! adjust extent to fit the pixmap size
Expand Down
6 changes: 3 additions & 3 deletions src/core/qgspoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ QString QgsPoint::toString() const

QString QgsPoint::toString( int thePrecision ) const
{
QString rep = QString::number( m_x, 'f', thePrecision ) + QString( "," ) +
QString::number( m_y, 'f', thePrecision );
return rep;
QString x = qIsFinite( m_x ) ? QString::number( m_x, 'f', thePrecision ) : QObject::tr( "infinite" );
QString y = qIsFinite( m_y ) ? QString::number( m_y, 'f', thePrecision ) : QObject::tr( "infinite" );
return QString( "%1,%2" ).arg( x ).arg( y );
}

QString QgsPoint::toDegreesMinutesSeconds( int thePrecision ) const
Expand Down
41 changes: 12 additions & 29 deletions src/core/qgsvectorlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,7 @@
* *
***************************************************************************/

#include <cfloat>
#include <cstring>
#include <climits>
#include <cmath>
#include <iosfwd>
#include <limits>
#include <memory>
#include <set>
#include <sstream>
#include <utility>

#include <QImage>
#include <QPainter>
Expand Down Expand Up @@ -59,6 +50,7 @@
#include "qgsgeometry.h"
#include "qgslabel.h"
#include "qgslogger.h"
#include "qgsmessagelog.h"
#include "qgsmaptopixel.h"
#include "qgspoint.h"
#include "qgsproviderregistry.h"
Expand Down Expand Up @@ -2588,11 +2580,11 @@ int QgsVectorLayer::addTopologicalPoints( const QgsPoint& p )

//work with a tolerance because coordinate projection may introduce some rounding
double threshold = 0.0000001;
if ( mCRS && mCRS->mapUnits() == QGis::Meters )
if ( crs().mapUnits() == QGis::Meters )
{
threshold = 0.001;
}
else if ( mCRS && mCRS->mapUnits() == QGis::Feet )
else if ( crs().mapUnits() == QGis::Feet )
{
threshold = 0.0001;
}
Expand Down Expand Up @@ -3874,7 +3866,8 @@ bool QgsVectorLayer::commitChanges()

updateFieldMap();
mDataProvider->updateExtents();
QgsDebugMsg( "result:\n " + mCommitErrors.join( "\n " ) );

QgsMessageLog::logMessage( tr( "Commit errors:\n%1" ).arg( mCommitErrors.join( "\n" ) ) );

return success;
}
Expand Down Expand Up @@ -4478,24 +4471,14 @@ void QgsVectorLayer::setCoordinateSystem()
// for this layer
//

// get CRS directly from provider
*mCRS = mDataProvider->crs();

//QgsCoordinateReferenceSystem provides a mechanism for FORCE a srs to be valid
//which is inolves falling back to system, project or user selected
//defaults if the srs is not properly intialised.
//we only nee to do that if the srs is not alreay valid
if ( !mCRS->isValid() )
if ( hasGeometryType() )
{
if ( hasGeometryType() )
{
mCRS->setValidationHint( tr( "Specify CRS for layer %1" ).arg( name() ) );
mCRS->validate();
}
else
{
mCRS->createFromOgcWmsCrs( GEO_EPSG_CRS_AUTHID );
}
// get CRS directly from provider
setCrs( mDataProvider->crs() );
}
else
{
setCrs( QgsCoordinateReferenceSystem( GEO_EPSG_CRS_AUTHID ) );
}
}

Expand Down
35 changes: 16 additions & 19 deletions src/core/raster/qgsrasterlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1797,7 +1797,7 @@ QString QgsRasterLayer::metadata()
myMetadata += tr( "Layer Spatial Reference System: " );
myMetadata += "</p>\n";
myMetadata += "<p>";
myMetadata += mCRS->toProj4();
myMetadata += crs().toProj4();
myMetadata += "</p>\n";

myMetadata += "<p class=\"glossy\">";
Expand Down Expand Up @@ -2224,7 +2224,7 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
QStringList const & layers,
QStringList const & styles,
QString const & format,
QString const & crs,
QString const & theCrs,
bool loadDefaultStyleFlag )
{
Q_UNUSED( loadDefaultStyleFlag );
Expand All @@ -2251,13 +2251,15 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
}


QgsDebugMsg( "Instantiated the data provider plugin"
+ QString( " with layer list of " ) + layers.join( ", " )
+ " and style list of " + styles.join( ", " )
+ " and format of " + format + " and CRS of " + crs );
QgsDebugMsg( QString( "Instantiated the data provider plugin with layer list of %1 and style list of %2 and format of %3 and CRS of %4" )
.arg( layers.join( ", " ) )
.arg( styles.join( ", " ) )
.arg( format )
.arg( theCrs )
);
if ( !mDataProvider->isValid() )
{
if ( provider != "gdal" || !layers.isEmpty() || !styles.isEmpty() || !format.isNull() || !crs.isNull() )
if ( provider != "gdal" || !layers.isEmpty() || !styles.isEmpty() || !format.isNull() || !theCrs.isNull() )
{
QgsMessageLog::logMessage( tr( "Data provider is invalid (layers %1, styles %2, formats: %3)" )
.arg( layers.join( ", " ) )
Expand All @@ -2270,7 +2272,7 @@ void QgsRasterLayer::setDataProvider( QString const & provider,

mDataProvider->addLayers( layers, styles );
mDataProvider->setImageEncoding( format );
mDataProvider->setImageCrs( crs );
mDataProvider->setImageCrs( theCrs );

setNoDataValue( mDataProvider->noDataValue() );

Expand Down Expand Up @@ -2299,21 +2301,16 @@ void QgsRasterLayer::setDataProvider( QString const & provider,
// Setup source CRS
if ( mProviderKey == "wms" )
{
*mCRS = QgsCoordinateReferenceSystem();
mCRS->createFromOgcWmsCrs( crs );
QgsCoordinateReferenceSystem crs;
crs.createFromOgcWmsCrs( theCrs );
setCrs( crs );
}
else
{
*mCRS = QgsCoordinateReferenceSystem( mDataProvider->crs() );
setCrs( QgsCoordinateReferenceSystem( mDataProvider->crs() ) );
}
//get the project projection, defaulting to this layer's projection
//if none exists....
if ( !mCRS->isValid() )
{
mCRS->setValidationHint( tr( "Specify CRS for layer %1" ).arg( name() ) );
mCRS->validate();
}
QString mySourceWkt = mCRS->toWkt();

QString mySourceWkt = crs().toWkt();

QgsDebugMsg( "using wkt:\n" + mySourceWkt );

Expand Down
8 changes: 7 additions & 1 deletion src/gui/attributetable/qgsattributetablememorymodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,15 @@ void QgsAttributeTableMemoryModel::loadLayer()
mIdRowMap.insert( f.id(), n );
mRowIdMap.insert( n, f.id() );
mFeatureMap.insert( f.id(), f );
n++;

bool cancel = false;
emit progress( n++, cancel );
if ( cancel )
break;
}

emit finished();

mFieldCount = mAttributes.size();
}

Expand Down
1 change: 1 addition & 0 deletions src/gui/attributetable/qgsattributetablemodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ class GUI_EXPORT QgsAttributeTableModel: public QAbstractTableModel
* @parem inOperation guard insertion with beginInsertRows() / endInsertRows()
*/
virtual void featureAdded( QgsFeatureId fid, bool inOperation = true );

/**
* Launched when layer has been deleted
*/
Expand Down
16 changes: 13 additions & 3 deletions src/gui/attributetable/qgsattributetableview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,24 @@ void QgsAttributeTableView::setCanvasAndLayer( QgsMapCanvas *canvas, QgsVectorLa
mModel = new QgsAttributeTableMemoryModel( canvas, layer );
}

mFilterModel = new QgsAttributeTableFilterModel( layer );
mFilterModel->setSourceModel( mModel );
setModel( mFilterModel );
connect( mModel, SIGNAL( finished() ), this, SLOT( setFilterModel() ) );

connect( mModel, SIGNAL( progress(int, bool&) ), this, SIGNAL( progress(int, bool&) ) );
connect( mModel, SIGNAL( finished() ), this, SIGNAL( finished() ) );
mModel->loadLayer();

delete oldModel;
delete filterModel;
}

void QgsAttributeTableView::setFilterModel()
{
disconnect( mModel, SIGNAL( finished() ), this, SLOT( setFilterModel() ) );
mFilterModel = new QgsAttributeTableFilterModel( mModel->layer() );
mFilterModel->setSourceModel( mModel );
setModel( mFilterModel );
}

QgsAttributeTableView::~QgsAttributeTableView()
{
delete mModel;
Expand Down
6 changes: 6 additions & 0 deletions src/gui/attributetable/qgsattributetableview.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,15 @@ class GUI_EXPORT QgsAttributeTableView : public QTableView

void contextMenuEvent( QContextMenuEvent* );

public slots:
void setFilterModel();

signals:
void willShowContextMenu( QMenu* menu, QModelIndex atIndex );

void finished();
void progress( int i, bool &cancel );

private:
QgsMapCanvas *mCanvas;
QgsAttributeTableModel* mModel;
Expand Down
4 changes: 2 additions & 2 deletions src/gui/qgsexpressionbuilderwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ void QgsExpressionBuilderWidget::on_txtExpressionString_textChanged()
lblPreview->setStyleSheet( "" );
txtExpressionString->setToolTip( "" );
lblPreview->setToolTip( "" );
// Return false for isVaild because a null expression is still invaild.
// Return false for isValid because a null expression is still invalid.
emit expressionParsed( false );
return;
}
Expand All @@ -260,7 +260,7 @@ void QgsExpressionBuilderWidget::on_txtExpressionString_textChanged()
}
else
{
// The feautre is invaild because we don't have one but that doesn't mean user can't
// The feature is invalid because we don't have one but that doesn't mean user can't
// build a expression string. They just get no preview.
lblPreview->setText( "" );
}
Expand Down
4 changes: 2 additions & 2 deletions src/gui/qgsexpressionbuilderwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,9 @@ class GUI_EXPORT QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExp
/** Emited when the user changes the expression in the widget.
* Users of this widget should connect to this signal to decide if to let the user
* continue.
* @param isVaild Is true if the expression the user has typed is vaild.
* @param isValid Is true if the expression the user has typed is valid.
*/
void expressionParsed( bool isVaild );
void expressionParsed( bool isValid );

private:
void fillFieldValues( int fieldIndex, int countLimit );
Expand Down
44 changes: 32 additions & 12 deletions src/mapserver/qgswmsserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,9 @@ QImage* QgsWMSServer::getLegendGraphics()
//get icon size, spaces between legend items and font from config parser
double boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight;
QFont layerFont, itemFont;
QColor layerFontColor, itemFontColor;
legendParameters( mmToPixelFactor, fontOversamplingFactor, boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight,
layerFont, itemFont );
layerFont, itemFont, layerFontColor, itemFontColor );

//first find out image dimensions without painting
QStandardItem* rootItem = legendModel.invisibleRootItem();
Expand All @@ -340,8 +341,9 @@ QImage* QgsWMSServer::getLegendGraphics()
if ( layerItem )
{

drawLegendLayerItem( layerItem, 0, maxTextWidth, maxSymbolWidth, currentY, layerFont, itemFont, boxSpace, layerSpace, symbolSpace,
iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor, theImage->dotsPerMeterX() * 0.0254 );
drawLegendLayerItem( layerItem, 0, maxTextWidth, maxSymbolWidth, currentY, layerFont, layerFontColor, itemFont, itemFontColor,
boxSpace, layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
theImage->dotsPerMeterX() * 0.0254 );
}
}
currentY += boxSpace;
Expand All @@ -359,8 +361,9 @@ QImage* QgsWMSServer::getLegendGraphics()
QgsComposerLayerItem* layerItem = dynamic_cast<QgsComposerLayerItem*>( rootItem->child( i ) );
if ( layerItem )
{
drawLegendLayerItem( layerItem, &p, maxTextWidth, maxSymbolWidth, currentY, layerFont, itemFont, boxSpace, layerSpace, symbolSpace,
iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor, theImage->dotsPerMeterX() * 0.0254 );
drawLegendLayerItem( layerItem, &p, maxTextWidth, maxSymbolWidth, currentY, layerFont, layerFontColor, itemFont, itemFontColor, boxSpace,
layerSpace, symbolSpace, iconLabelSpace, symbolWidth, symbolHeight, fontOversamplingFactor,
theImage->dotsPerMeterX() * 0.0254 );
}
}

Expand All @@ -370,7 +373,7 @@ QImage* QgsWMSServer::getLegendGraphics()
}

void QgsWMSServer::legendParameters( double mmToPixelFactor, double fontOversamplingFactor, double& boxSpace, double& layerSpace, double& symbolSpace, double& iconLabelSpace, double& symbolWidth, double& symbolHeight,
QFont& layerFont, QFont& itemFont )
QFont& layerFont, QFont& itemFont, QColor& layerFontColor, QColor& itemFontColor )
{
//spaces between legend elements
QMap<QString, QString>::const_iterator boxSpaceIt = mParameterMap.find( "BOXSPACE" );
Expand Down Expand Up @@ -418,6 +421,15 @@ void QgsWMSServer::legendParameters( double mmToPixelFactor, double fontOversamp
{
layerFont.setPixelSize( layerFont.pointSizeF() * 0.3528 * mmToPixelFactor * fontOversamplingFactor );
}
QMap<QString, QString>::const_iterator layerFontColorIt = mParameterMap.find( "LAYERFONTCOLOR" );
if ( layerFontColorIt != mParameterMap.constEnd() )
{
layerFontColor.setNamedColor( layerFontColorIt.value() );
}
else
{
layerFontColor = QColor( 0, 0, 0 );
}


itemFont = mConfigParser->legendItemFont();
Expand Down Expand Up @@ -445,6 +457,15 @@ void QgsWMSServer::legendParameters( double mmToPixelFactor, double fontOversamp
{
itemFont.setPixelSize( itemFont.pointSizeF() * 0.3528 * mmToPixelFactor * fontOversamplingFactor );
}
QMap<QString, QString>::const_iterator itemFontColorIt = mParameterMap.find( "ITEMFONTCOLOR" );
if ( itemFontColorIt != mParameterMap.constEnd() )
{
itemFontColor.setNamedColor( itemFontColorIt.value() );
}
else
{
itemFontColor = QColor( 0, 0, 0 );
}
}

QDomDocument QgsWMSServer::getStyle()
Expand Down Expand Up @@ -1395,8 +1416,8 @@ QStringList QgsWMSServer::layerSet( const QStringList &layersList,
}

void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p, double& maxTextWidth, double& maxSymbolWidth, double& currentY, const QFont& layerFont,
const QFont& itemFont, double boxSpace, double layerSpace, double symbolSpace,
double iconLabelSpace, double symbolWidth, double symbolHeight, double fontOversamplingFactor,
const QColor& layerFontColor, const QFont& itemFont, const QColor& itemFontColor, double boxSpace, double layerSpace,
double symbolSpace, double iconLabelSpace, double symbolWidth, double symbolHeight, double fontOversamplingFactor,
double dpi ) const
{
if ( !item )
Expand All @@ -1412,6 +1433,7 @@ void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p,
{
p->save();
p->scale( 1.0 / fontOversamplingFactor, 1.0 / fontOversamplingFactor );
p->setPen( layerFontColor );
p->setFont( layerFont );
p->drawText( boxSpace * fontOversamplingFactor, currentY * fontOversamplingFactor, item->text() );
p->restore();
Expand All @@ -1435,10 +1457,6 @@ void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p,
}

//then draw all the children
if ( p )
{
p->setFont( itemFont );
}
QFontMetricsF itemFontMetrics( itemFont );

int nChildItems = item->rowCount();
Expand Down Expand Up @@ -1491,6 +1509,8 @@ void QgsWMSServer::drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p,
{
p->save();
p->scale( 1.0 / fontOversamplingFactor, 1.0 / fontOversamplingFactor );
p->setPen( itemFontColor );
p->setFont( itemFont );
p->drawText( maxSymbolWidth * fontOversamplingFactor,
( currentY + symbolItemHeight / 2.0 ) * fontOversamplingFactor + itemFontMetrics.ascent() / 2.0, currentComposerItem->text() );
p->restore();
Expand Down
7 changes: 4 additions & 3 deletions src/mapserver/qgswmsserver.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class QgsRasterLayer;
class QgsRectangle;
class QgsVectorLayer;
class QgsSymbol;
class QColor;
class QFile;
class QFont;
class QImage;
Expand Down Expand Up @@ -127,8 +128,8 @@ class QgsWMSServer
@param maxSymbolWidth Includes boxSpace and iconLabelSpace. If p==0: maximum Symbol width is calculated, if p: maxSymbolWidth is input parameter
*/
void drawLegendLayerItem( QgsComposerLayerItem* item, QPainter* p, double& maxTextWidth, double& maxSymbolWidth, double& currentY, const QFont& layerFont,
const QFont& itemFont, double boxSpace, double layerSpace, double symbolSpace, double iconLabelSpace,
double symbolWidth, double symbolHeight, double fontOversamplingFactor, double dpi ) const;
const QColor& layerFontColor, const QFont& itemFont, const QColor& itemFontColor, double boxSpace, double layerSpace,
double symbolSpace, double iconLabelSpace, double symbolWidth, double symbolHeight, double fontOversamplingFactor, double dpi ) const;
/**Draws a (old generation) symbol. Optionally, maxHeight is adapted (e.g. for large point markers) */
void drawLegendSymbol( QgsComposerLegendItem* item, QPainter* p, double boxSpace, double currentY, double& symbolWidth, double& symbolHeight,
double layerOpacity, double dpi, double yDownShift ) const;
Expand All @@ -140,7 +141,7 @@ class QgsWMSServer

/**Read legend parameter from the request or from the first print composer in the project*/
void legendParameters( double mmToPixelFactor, double fontOversamplingFactor, double& boxSpace, double& layerSpace, double& symbolSpace, double& iconLabelSpace, double& symbolWidth, double& symbolHeight,
QFont& layerFont, QFont& itemFont );
QFont& layerFont, QFont& itemFont, QColor& layerFontColor, QColor& itemFontColor );

QImage* printCompositionToImage( QgsComposition* c ) const;

Expand Down
2 changes: 1 addition & 1 deletion src/providers/grass/qgsgrass.h
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ class QgsGrass
static GRASS_LIB_EXPORT QList<QgsGrass::Color> colors( QString gisdbase, QString location,
QString mapset, QString map );

// ! Get map value / feautre info
// ! Get map value / feature info
static GRASS_LIB_EXPORT QMap<QString, QString> query( QString gisdbase, QString location,
QString mapset, QString map, MapType type, double x, double y );

Expand Down
5 changes: 4 additions & 1 deletion src/providers/postgres/qgspostgresprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1398,9 +1398,12 @@ bool QgsPostgresProvider::determinePrimaryKey()
{
mPrimaryKeyType = pktTid;
}
else
{
QgsMessageLog::logMessage( tr( "The table has no column suitable for use as a key. Quantum GIS requires a primary key, a PostgreSQL oid column or a ctid for tables." ), tr( "PostGIS" ) );
}
}

QgsMessageLog::logMessage( tr( "The table has no column suitable for use as a key. Quantum GIS requires a primary key, a PostgreSQL oid column or a ctid for tables." ), tr( "PostGIS" ) );
}
else if ( type == "v" ) // the relation is a view
{
Expand Down
65 changes: 31 additions & 34 deletions src/providers/spatialite/qgsspatialiteprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ email : a.furieri@lqt.it
#include <qgsmessageoutput.h>
#include <qgsrectangle.h>
#include <qgscoordinatereferencesystem.h>
#include "qgsvectorlayerimport.h"

#include "qgsvectorlayerimport.h"
#include "qgsspatialiteprovider.h"

#include "qgslogger.h"
#include "qgsmessagelog.h"

#include <QFileInfo>
#include <QDir>
Expand Down Expand Up @@ -443,7 +443,7 @@ QgsSpatiaLiteProvider::QgsSpatiaLiteProvider( QString const &uri )
return;
}
enabledCapabilities = QgsVectorDataProvider::SelectAtId | QgsVectorDataProvider::SelectGeometryAtId;
if (( mTableBased | mViewBased ) && !mReadOnly )
if (( mTableBased || mViewBased ) && !mReadOnly )
{
// enabling editing only for Tables [excluding Views and VirtualShapes]
enabledCapabilities |= QgsVectorDataProvider::DeleteFeatures;
Expand Down Expand Up @@ -572,9 +572,7 @@ void QgsSpatiaLiteProvider::loadFields()
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" )
.arg( sql )
.arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return;
}

Expand Down Expand Up @@ -642,10 +640,10 @@ void QgsSpatiaLiteProvider::loadFields()
return;

error:
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1" ).arg( QString::fromUtf8( errMsg ) ) );
sqlite3_free( errMsg );
}
}
Expand Down Expand Up @@ -840,7 +838,7 @@ bool QgsSpatiaLiteProvider::getFeature( sqlite3_stmt *stmt, bool fetchGeometry,
else
{
// some unexpected error occurred
QgsDebugMsg( QString( "sqlite3_step() error: %1" ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error getting feature: %1" ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ), tr( "SpatiaLite" ) );
return false;
}

Expand Down Expand Up @@ -3290,7 +3288,7 @@ bool QgsSpatiaLiteProvider::prepareStatement(
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" ).arg( sql ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return false;
}

Expand Down Expand Up @@ -3421,10 +3419,10 @@ QVariant QgsSpatiaLiteProvider::minimumValue( int index )
}

error:
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1" ).arg( QString::fromUtf8( errMsg ) ) );
sqlite3_free( errMsg );
}
return QVariant( QString::null );
Expand Down Expand Up @@ -3476,10 +3474,10 @@ QVariant QgsSpatiaLiteProvider::maximumValue( int index )
}

error:
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1" ).arg( QString::fromUtf8( errMsg ) ) );
sqlite3_free( errMsg );
}
return QVariant( QString::null );
Expand Down Expand Up @@ -3518,7 +3516,7 @@ void QgsSpatiaLiteProvider::uniqueValues( int index, QList < QVariant > &uniqueV
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" ).arg( sql ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return;
}

Expand Down Expand Up @@ -3554,7 +3552,7 @@ void QgsSpatiaLiteProvider::uniqueValues( int index, QList < QVariant > &uniqueV
}
else
{
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
sqlite3_finalize( stmt );
return;
}
Expand Down Expand Up @@ -3627,7 +3625,7 @@ bool QgsSpatiaLiteProvider::addFeatures( QgsFeatureList & flist )
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return false;
}

Expand Down Expand Up @@ -3727,7 +3725,7 @@ bool QgsSpatiaLiteProvider::addFeatures( QgsFeatureList & flist )
return true;

abort:
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
if ( errMsg )
{
sqlite3_free( errMsg );
Expand Down Expand Up @@ -3763,7 +3761,7 @@ bool QgsSpatiaLiteProvider::deleteFeatures( const QgsFeatureIds &id )
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" ).arg( sql ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return false;
}

Expand Down Expand Up @@ -3805,7 +3803,7 @@ bool QgsSpatiaLiteProvider::deleteFeatures( const QgsFeatureIds &id )
return true;

abort:
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
if ( errMsg )
{
sqlite3_free( errMsg );
Expand Down Expand Up @@ -3861,7 +3859,7 @@ bool QgsSpatiaLiteProvider::addAttributes( const QList<QgsField> &attributes )
return true;

abort:
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
if ( errMsg )
{
sqlite3_free( errMsg );
Expand Down Expand Up @@ -3956,7 +3954,7 @@ bool QgsSpatiaLiteProvider::changeAttributeValues( const QgsChangedAttributesMap
return true;

abort:
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
if ( errMsg )
{
sqlite3_free( errMsg );
Expand Down Expand Up @@ -3996,7 +3994,7 @@ bool QgsSpatiaLiteProvider::changeGeometryValues( QgsGeometryMap & geometry_map
if ( sqlite3_prepare_v2( sqliteHandle, sql.toUtf8().constData(), -1, &stmt, NULL ) != SQLITE_OK )
{
// some error occurred
QgsDebugMsg( QString( "SQLite error: %1\n\nSQL: %2" ).arg( sql ).arg( QString::fromUtf8( sqlite3_errmsg( sqliteHandle ) ) ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( sqlite3_errmsg( sqliteHandle ) ), tr( "SpatiaLite" ) );
return false;
}

Expand Down Expand Up @@ -4048,7 +4046,7 @@ bool QgsSpatiaLiteProvider::changeGeometryValues( QgsGeometryMap & geometry_map
return true;

abort:
QgsDebugMsg( QString( "SQL error:\n%1\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
if ( errMsg )
{
sqlite3_free( errMsg );
Expand All @@ -4063,7 +4061,6 @@ bool QgsSpatiaLiteProvider::changeGeometryValues( QgsGeometryMap & geometry_map
return false;
}


int QgsSpatiaLiteProvider::capabilities() const
{
return enabledCapabilities;
Expand Down Expand Up @@ -4240,7 +4237,7 @@ bool QgsSpatiaLiteProvider::checkLayerType()
}
if ( errMsg )
{
QgsDebugMsg( QString( "sqlite error %1 [%2]" ).arg( sql ).arg( errMsg ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
errMsg = 0;
}
Expand Down Expand Up @@ -4279,7 +4276,7 @@ bool QgsSpatiaLiteProvider::checkLayerType()
}
if ( errMsg )
{
QgsDebugMsg( QString( "sqlite error %1 [%2]" ).arg( sql ).arg( errMsg ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
errMsg = 0;
}
Expand Down Expand Up @@ -4323,7 +4320,7 @@ bool QgsSpatiaLiteProvider::checkLayerType()
}
if ( errMsg )
{
QgsDebugMsg( QString( "sqlite error %1 [%2]" ).arg( sql ).arg( errMsg ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
errMsg = 0;
}
Expand All @@ -4343,7 +4340,7 @@ bool QgsSpatiaLiteProvider::checkLayerType()
}
if ( errMsg )
{
QgsDebugMsg( QString( "sqlite error %1 [%2]" ).arg( sql ).arg( errMsg ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
errMsg = 0;
}
Expand All @@ -4363,7 +4360,7 @@ bool QgsSpatiaLiteProvider::checkLayerType()
}
if ( errMsg )
{
QgsDebugMsg( QString( "sqlite error %1 [%2]" ).arg( sql ).arg( errMsg ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
errMsg = 0;
}
Expand Down Expand Up @@ -4489,10 +4486,10 @@ bool QgsSpatiaLiteProvider::getTableGeometryDetails()
return getSridDetails();

error:
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ? errMsg : tr( "unknown cause" ) ), tr( "SpatiaLite" ) );
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4575,7 +4572,7 @@ bool QgsSpatiaLiteProvider::getViewGeometryDetails()
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4645,7 +4642,7 @@ bool QgsSpatiaLiteProvider::getVShapeGeometryDetails()
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4761,7 +4758,7 @@ bool QgsSpatiaLiteProvider::getQueryGeometryDetails()
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4798,7 +4795,7 @@ bool QgsSpatiaLiteProvider::getSridDetails()
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4849,7 +4846,7 @@ bool QgsSpatiaLiteProvider::getTableSummary()
// unexpected error
if ( errMsg != NULL )
{
QgsDebugMsg( QString( "SQL error: %1\n\n%2" ).arg( sql ).arg( errMsg ? QString::fromUtf8( errMsg ) : "unknown cause" ) );
QgsMessageLog::logMessage( tr( "SQLite error: %2\nSQL: %1" ).arg( sql ).arg( errMsg ), tr( "SpatiaLite" ) );
sqlite3_free( errMsg );
}
return false;
Expand Down Expand Up @@ -4993,7 +4990,7 @@ QGISEXTERN bool createDb( const QString& dbPath, QString& errCause )
ret = sqlite3_exec( sqlite_handle, "PRAGMA foreign_keys = 1", NULL, 0, &errMsg );
if ( ret != SQLITE_OK )
{
errCause = QObject::tr( "Unable to activate FOREIGN_KEY constraints" );
errCause = QObject::tr( "Unable to activate FOREIGN_KEY constraints [%1]" ).arg( errMsg );
sqlite3_free( errMsg );
sqlite3_close( sqlite_handle );
return false;
Expand Down