[QGIS Commit] r15752 - in trunk/qgis/src/core: . raster
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sun Apr 17 13:30:08 EDT 2011
Author: rblazek
Date: 2011-04-17 10:30:08 -0700 (Sun, 17 Apr 2011)
New Revision: 15752
Modified:
trunk/qgis/src/core/qgsmaplayer.cpp
trunk/qgis/src/core/qgsmaplayer.h
trunk/qgis/src/core/raster/qgsrasterlayer.cpp
trunk/qgis/src/core/raster/qgsrasterlayer.h
Log:
save timestamp in project file
Modified: trunk/qgis/src/core/qgsmaplayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsmaplayer.cpp 2011-04-17 17:26:44 UTC (rev 15751)
+++ trunk/qgis/src/core/qgsmaplayer.cpp 2011-04-17 17:30:08 UTC (rev 15752)
@@ -340,6 +340,17 @@
maplayer.appendChild( layerName );
+ // timestamp if supported
+ if ( timestamp() > QDateTime() )
+ {
+ QDomElement stamp = document.createElement( "timestamp" );
+ QDomText stampText = document.createTextNode( timestamp().toString( Qt::ISODate ) );
+ stamp.appendChild( stampText );
+ maplayer.appendChild( stamp );
+ }
+
+ maplayer.appendChild( layerName );
+
// zorder
// This is no longer stored in the project file. It is superfluous since the layers
// are written and read in the proper order.
Modified: trunk/qgis/src/core/qgsmaplayer.h
===================================================================
--- trunk/qgis/src/core/qgsmaplayer.h 2011-04-17 17:26:44 UTC (rev 15751)
+++ trunk/qgis/src/core/qgsmaplayer.h 2011-04-17 17:30:08 UTC (rev 15752)
@@ -19,7 +19,7 @@
#ifndef QGSMAPLAYER_H
#define QGSMAPLAYER_H
-
+#include <QDateTime>
#include <QObject>
#include <QUndoStack>
#include <QVariant>
@@ -95,7 +95,7 @@
/** This is the method that does the actual work of
* drawing the layer onto a paint device.
* @param rendererContext describes the extents,
- * resolution etc. that should be used when rendering the
+ * resolumon etc. that should be used when rendering the
* layer.
*/
virtual bool draw( QgsRenderContext& rendererContext );
@@ -332,6 +332,9 @@
* added in 1.5 */
void clearCacheImage();
+ /** Time stamp of data source in the moment when data/metadata were loaded by provider */
+ virtual QDateTime timestamp() const { return QDateTime() ; }
+
signals:
/** Emit a signal to notify of a progress event */
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.cpp
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-04-17 17:26:44 UTC (rev 15751)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-04-17 17:30:08 UTC (rev 15752)
@@ -3257,9 +3257,8 @@
QDomNode rpNode = layer_node.namedItem( "rasterproperties" );
// Collect sublayer names and styles
- QStringList layers;
- QStringList styles;
- QString format;
+ mLayers.clear();
+ mStyles.clear();
if ( mProviderKey == "wms" )
{
@@ -3269,20 +3268,21 @@
// TODO: sublayer visibility - post-0.8 release timeframe
// collect name for the sublayer
- layers += layerElement.namedItem( "name" ).toElement().text();
+ mLayers += layerElement.namedItem( "name" ).toElement().text();
// collect style for the sublayer
- styles += layerElement.namedItem( "style" ).toElement().text();
+ mStyles += layerElement.namedItem( "style" ).toElement().text();
layerElement = layerElement.nextSiblingElement( "wmsSublayer" );
}
// Collect format
- format = rpNode.namedItem( "wmsFormat" ).toElement().text();
+ mFormat = rpNode.namedItem( "wmsFormat" ).toElement().text();
}
+ mCrs = crs().authid();
// Collect CRS
- setDataProvider( mProviderKey, layers, styles, format, crs().authid() );
+ setDataProvider( mProviderKey, mLayers, mStyles, mFormat, mCrs );
QString theError;
bool res = readSymbology( layer_node, theError );
@@ -3299,6 +3299,21 @@
mGrayBandName = bandName( 1 );
}
+ // Check timestamp
+ QDomNode stampNode = layer_node.namedItem( "timestamp" );
+ if ( !stampNode.isNull() )
+ {
+ QDateTime stamp = QDateTime::fromString( stampNode.toElement().text(), Qt::ISODate );
+ // TODO: very bad, we have to load twice!!! Make QgsDataProvider::timestamp() static?
+ if ( stamp < mDataProvider->dataTimestamp() )
+ {
+ QgsDebugMsg( "data changed, reload provider" );
+ closeDataProvider();
+ init();
+ setDataProvider( mProviderKey, mLayers, mStyles, mFormat, mCrs );
+ }
+ }
+
return res;
} // QgsRasterLayer::readXml( QDomNode & layer_node )
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.h
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-04-17 17:26:44 UTC (rev 15751)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-04-17 17:30:08 UTC (rev 15752)
@@ -658,6 +658,9 @@
*/
virtual void setSubLayerVisibility( const QString & name, bool vis );
+ /** Time stamp of data source in the moment when data/metadata were loaded by provider */
+ virtual QDateTime timestamp() const { return mDataProvider->timestamp() ; }
+
public slots:
/** \brief Create GDAL pyramid overviews */
QString buildPyramids( const RasterPyramidList &,
More information about the QGIS-commit
mailing list