|
QGIS API Documentation
master-3f58142
|
00001 /*************************************************************************** 00002 qgsdataprovider.h - DataProvider Interface class 00003 -------------------------------------- 00004 Date : 09-Sep-2003 00005 Copyright : (C) 2003 by Gary E.Sherman 00006 email : sherman at mrcc.com 00007 *************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 00016 #ifndef QQGSDATAPROVIDER_H 00017 #define QQGSDATAPROVIDER_H 00018 00019 #include <QDateTime> 00020 #include <QObject> 00021 #include <QString> 00022 #include <QStringList> 00023 00024 //#include "qgsdataitem.h" 00025 #include "qgserror.h" 00026 00027 class QgsRectangle; 00028 class QgsCoordinateReferenceSystem; 00029 00030 00044 class CORE_EXPORT QgsDataProvider : public QObject 00045 { 00046 Q_OBJECT 00047 00048 public: 00049 00050 Q_ENUMS( DataCapability ) 00051 00052 enum DataCapability 00053 { 00054 NoDataCapabilities = 0, 00055 File = 1, 00056 Dir = 1 << 1, 00057 Database = 1 << 2, 00058 Net = 1 << 3 // Internet source 00059 }; 00060 00061 QgsDataProvider( QString const & uri = "" ) 00062 : mDataSourceURI( uri ) 00063 {} 00064 00068 virtual ~QgsDataProvider() {}; 00069 00070 00076 virtual QgsCoordinateReferenceSystem crs() = 0; 00077 00078 00084 virtual void setDataSourceUri( const QString & uri ) 00085 { 00086 mDataSourceURI = uri; 00087 } 00088 00094 virtual QString dataSourceUri() const 00095 { 00096 return mDataSourceURI; 00097 } 00098 00099 00104 virtual QgsRectangle extent() = 0; 00105 00106 00111 virtual bool isValid() = 0; 00112 00113 00117 virtual void updateExtents() 00118 { 00119 // NOP by default 00120 } 00121 00122 00129 virtual bool setSubsetString( QString subset, bool updateFeatureCount = true ) 00130 { 00131 // NOP by default 00132 Q_UNUSED( subset ); 00133 Q_UNUSED( updateFeatureCount ); 00134 return false; 00135 } 00136 00137 00142 virtual bool supportsSubsetString() { return false; } 00143 00150 virtual QString subsetString() 00151 { 00152 return QString::null; 00153 } 00154 00155 00162 virtual QStringList subLayers() const 00163 { 00164 return QStringList(); // Empty 00165 } 00166 00167 00175 virtual QStringList subLayerStyles() const 00176 { 00177 return QStringList(); // Empty 00178 } 00179 00180 00184 virtual uint subLayerCount() const 00185 { 00186 return 0; 00187 } 00188 00189 00195 virtual void setLayerOrder( const QStringList &layers ) 00196 { 00197 //prevent unused var warnings 00198 if ( layers.count() < 1 ) 00199 { 00200 return; 00201 } 00202 // NOOP 00203 } 00204 00205 00209 virtual void setSubLayerVisibility( const QString &name, bool vis ) 00210 { 00211 //prevent unused var warnings 00212 if ( name.isEmpty() || !vis ) 00213 { 00214 return; 00215 } 00216 // NOOP 00217 } 00218 00219 00234 virtual QString name() const = 0; 00235 00236 00248 virtual QString description() const = 0; 00249 00250 00262 virtual QString fileVectorFilters() const 00263 { 00264 return ""; 00265 } 00266 00267 00279 virtual QString fileRasterFilters() const 00280 { 00281 return ""; 00282 } 00283 00286 virtual void reloadData() {} 00287 00289 virtual QDateTime timestamp() const { return mTimestamp; } 00290 00292 virtual QDateTime dataTimestamp() const { return QDateTime(); } 00293 00298 virtual QgsError error() const { return mError; } 00299 00300 signals: 00301 00307 void fullExtentCalculated(); 00308 00314 void dataChanged(); 00315 00321 void dataChanged( int changed ); 00322 00323 protected: 00327 QDateTime mTimestamp; 00328 00330 QgsError mError; 00331 00333 void appendError( const QgsErrorMessage & theMessage ) { mError.append( theMessage );} 00334 00336 void setError( const QgsError & theError ) { mError = theError;} 00337 00338 private: 00339 00344 QString mDataSourceURI; 00345 }; 00346 00347 00348 #endif