[QGIS Commit] r15735 - in trunk/qgis/src: app core core/raster
providers/grass
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Apr 16 15:03:21 EDT 2011
Author: rblazek
Date: 2011-04-16 12:03:21 -0700 (Sat, 16 Apr 2011)
New Revision: 15735
Modified:
trunk/qgis/src/app/qgsrasterlayerproperties.cpp
trunk/qgis/src/app/qgsrasterlayerproperties.h
trunk/qgis/src/core/qgsdataprovider.h
trunk/qgis/src/core/qgsrasterdataprovider.h
trunk/qgis/src/core/raster/qgsrasterlayer.cpp
trunk/qgis/src/core/raster/qgsrasterlayer.h
trunk/qgis/src/providers/grass/qgsgrassrasterprovider.cpp
trunk/qgis/src/providers/grass/qgsgrassrasterprovider.h
Log:
raster layer update - first step
Modified: trunk/qgis/src/app/qgsrasterlayerproperties.cpp
===================================================================
--- trunk/qgis/src/app/qgsrasterlayerproperties.cpp 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/app/qgsrasterlayerproperties.cpp 2011-04-16 19:03:21 UTC (rev 15735)
@@ -92,6 +92,8 @@
connect( leBlueMax, SIGNAL( textEdited( QString ) ), this, SLOT( userDefinedMinMax_textEdited( QString ) ) );
connect( mColormapTreeWidget, SIGNAL( itemDoubleClicked( QTreeWidgetItem*, int ) ), this, SLOT( handleColormapTreeWidgetDoubleClick( QTreeWidgetItem*, int ) ) );
+ connect( mRasterLayer, SIGNAL( dataChanged( int ) ), this, SLOT( dataChanged( int ) ) );
+
// set up the scale based layer visibility stuff....
chkUseScaleDependentRendering->setChecked( lyr->hasScaleBasedVisibility() );
leMinimumScale->setText( QString::number( lyr->minimumScale(), 'f' ) );
@@ -3033,3 +3035,8 @@
leNoDataValue->clear();
}
}
+
+void QgsRasterLayerProperties::dataChanged( int change )
+{
+ QgsDebugMsg( "entered." );
+}
\ No newline at end of file
Modified: trunk/qgis/src/app/qgsrasterlayerproperties.h
===================================================================
--- trunk/qgis/src/app/qgsrasterlayerproperties.h 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/app/qgsrasterlayerproperties.h 2011-04-16 19:03:21 UTC (rev 15735)
@@ -99,6 +99,9 @@
/** \brief this slot sets StdDev switch box to 0.00 when user enters min max values */
void userDefinedMinMax_textEdited( QString );
+ /** \brief data changed reciever */
+ void dataChanged( int change );
+
private slots:
/** This slow handles necessary interface modifications (i.e. loading min max values) */
void on_cboBlue_currentIndexChanged( const QString& );
Modified: trunk/qgis/src/core/qgsdataprovider.h
===================================================================
--- trunk/qgis/src/core/qgsdataprovider.h 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/core/qgsdataprovider.h 2011-04-16 19:03:21 UTC (rev 15735)
@@ -17,7 +17,7 @@
#ifndef QQGSDATAPROVIDER_H
#define QQGSDATAPROVIDER_H
-
+#include <QDateTime>
#include <QObject>
#include <QString>
#include <QStringList>
@@ -271,6 +271,15 @@
synchronize with changes in the data source*/
virtual void reloadData() {}
+ /** Time stamp of data source in the moment when data/metadata were loaded by provider */
+ virtual QDateTime timestamp() const { return mTimestamp; }
+
+ /** Current time stamp of data source */
+ virtual QDateTime dataTimestamp() const { return QDateTime(); }
+
+ /** test if at least one of specified data/metadata changed since provider was loaded */
+ virtual bool changed( int change ) { return false; }
+
signals:
/**
@@ -287,6 +296,13 @@
*/
void dataChanged();
+ /**
+ * This is emitted whenever data or metadata (e.g. color table, extent) has changed
+ * @param changed binary combination of changes
+ * @note added in 1.7
+ */
+ void dataChanged( int change );
+
private:
/**
@@ -295,6 +311,10 @@
*/
QString mDataSourceURI;
+ /**
+ * Timestamp of data in the moment when the data were loaded by provider.
+ */
+ QDateTime mTimestamp;
};
Modified: trunk/qgis/src/core/qgsrasterdataprovider.h
===================================================================
--- trunk/qgis/src/core/qgsrasterdataprovider.h 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/core/qgsrasterdataprovider.h 2011-04-16 19:03:21 UTC (rev 15735)
@@ -21,6 +21,8 @@
#ifndef QGSRASTERDATAPROVIDER_H
#define QGSRASTERDATAPROVIDER_H
+#include <QDateTime>
+
#include "qgslogger.h"
#include "qgsrectangle.h"
#include "qgsdataprovider.h"
@@ -114,6 +116,17 @@
ProgressPyramids = 1
};
+ enum Change
+ {
+ NoChange = 0,
+ ValuesChange = 1,
+ ExtentChange = 1 << 1,
+ CrsChange = 1 << 2,
+ DataTypeChange = 1 << 3,
+ ColorTableChange = 1 << 4,
+ SizeChange = 1 << 5
+ };
+
QgsRasterDataProvider();
QgsRasterDataProvider( QString const & uri );
@@ -467,11 +480,24 @@
/** \brief Set null value in char */
QByteArray noValueBytes( int theBandNo );
+ /** Current time stamp of data source */
+ virtual QDateTime dataTimestamp() const { return QDateTime(); }
+
+ /** Give list of changed data/metadata since provider was loaded */
+ virtual int changed( ) { return NoChange; }
+
signals:
/** Emit a signal to notify of the progress event.
* Emited theProgress is in percents (0.0-100.0) */
void progress( int theType, double theProgress, QString theMessage );
+ /**
+ * This is emitted whenever data or metadata (e.g. color table, extent) has changed
+ * @param changed binary combination of changes
+ * @note added in 1.7
+ */
+ void dataChanged( int change );
+
protected:
/**Dots per intch. Extended WMS (e.g. QGIS mapserver) support DPI dependent output and therefore
are suited for printing. A value of -1 means it has not been set
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.cpp
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-04-16 19:03:21 UTC (rev 15735)
@@ -2479,7 +2479,7 @@
// read standard deviations
if ( mContrastEnhancementAlgorithm == QgsContrastEnhancement::StretchToMinimumMaximum )
{
- setStandardDeviations( myQSettings.value( "/Raster/defaultStandardDeviation", 1.0 ).toInt() );
+ setStandardDeviations( myQSettings.value( "/Raster/defaultStandardDeviation", 1.0 ).toInt() );
}
}
// Debug
@@ -4414,18 +4414,41 @@
bool QgsRasterLayer::update()
{
QgsDebugMsg( "entered." );
-
- if ( mLastModified < QgsRasterLayer::lastModified( source() ) )
+ // Check if data changed
+ //if ( mLastModified < QgsRasterLayer::lastModified( source() ) )
+ //{
+ // TODO: lastModified to provider -> outdated
+ // TODO: check what has to be cleard, rebuild
+ int change = mDataProvider->changed();
+ if ( change != QgsRasterDataProvider::NoChange )
{
- // TODO: lastModified to provider -> outdated
- // TODO: check what has to be cleard, rebuild
- mHasPyramids = false;
- mPyramidList.clear();
+ QgsDebugMsg( "reload data" );
+ //mHasPyramids = false;
+ //mPyramidList.clear();
- mRasterStatsList.clear();
+ //mRasterStatsList.clear();
mValid = mDataProvider->reload();
+
+ for ( int i = 1; i <= mBandCount; i++ )
+ {
+ // TODO : refresh all data, move to separate method from constructor
+ // Reload color table
+ if ( i - 1 < mRasterStatsList.size() )
+ {
+ QList<QgsColorRampShader::ColorRampItem> ct;
+ ct = mDataProvider->colorTable( i );
+
+ mRasterStatsList[i-1].colorTable = ct;
+ if ( mRasterType == Palette )
+ {
+ QgsColorRampShader* myColorRampShader = ( QgsColorRampShader* ) mRasterShader->rasterShaderFunction();
+ myColorRampShader->setColorRampItemList( *colorTable( 1 ) );
+ }
+ }
+ }
+ emit dataChanged( change );
}
- return true;
+ return mValid;
}
bool QgsRasterLayer::usesProvider()
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.h
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-04-16 19:03:21 UTC (rev 15735)
@@ -681,6 +681,13 @@
/** \brief Signal for notifying listeners of long running processes */
void progressUpdate( int theValue );
+ /**
+ * This is emitted whenever data or metadata (e.g. color table, extent) has changed
+ * @param changed binary combination of changes, defined in QgsRasterDataProvider
+ * @note added in 1.7
+ */
+ void dataChanged( int change );
+
protected:
/** \brief Read the symbology for the current layer from the Dom node supplied */
Modified: trunk/qgis/src/providers/grass/qgsgrassrasterprovider.cpp
===================================================================
--- trunk/qgis/src/providers/grass/qgsgrassrasterprovider.cpp 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/providers/grass/qgsgrassrasterprovider.cpp 2011-04-16 19:03:21 UTC (rev 15735)
@@ -275,6 +275,7 @@
QList<QgsColorRampShader::ColorRampItem> QgsGrassRasterProvider::colorTable( int bandNo )const
{
+ QgsDebugMsg( "Entered" );
QList<QgsColorRampShader::ColorRampItem> ct;
// TODO: check if color can be realy discontinuous in GRASS,
@@ -484,6 +485,18 @@
return PROVIDER_DESCRIPTION;
}
+int QgsGrassRasterProvider::changed()
+{
+ QgsDebugMsg( "Entered" );
+ // TODO
+ return ValuesChange | ExtentChange | CrsChange | DataTypeChange | ColorTableChange | SizeChange;
+}
+
+bool QgsGrassRasterProvider::reload()
+{
+ QgsDebugMsg( "Entered" );
+ return true;
+}
//void QgsGrassRasterProvider::buildSupportedRasterFileFilter( QString & theFileFiltersString )
//{
//}
Modified: trunk/qgis/src/providers/grass/qgsgrassrasterprovider.h
===================================================================
--- trunk/qgis/src/providers/grass/qgsgrassrasterprovider.h 2011-04-16 18:48:02 UTC (rev 15734)
+++ trunk/qgis/src/providers/grass/qgsgrassrasterprovider.h 2011-04-16 19:03:21 UTC (rev 15735)
@@ -244,7 +244,8 @@
bool theThoroughBandScanFlag = false
);
-
+ int changed( );
+ bool reload( );
private:
/**
More information about the QGIS-commit
mailing list