Quantum GIS API Documentation
1.8
|
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 00026 class QgsRectangle; 00027 class QgsCoordinateReferenceSystem; 00028 00029 00043 class CORE_EXPORT QgsDataProvider : public QObject 00044 { 00045 Q_OBJECT 00046 00047 public: 00048 00049 Q_ENUMS( DataCapability ) 00050 00051 enum DataCapability 00052 { 00053 NoDataCapabilities = 0, 00054 File = 1, 00055 Dir = 1 << 1, 00056 Database = 1 << 2, 00057 Net = 1 << 3 // Internet source 00058 }; 00059 00060 QgsDataProvider( QString const & uri = "" ) 00061 : mDataSourceURI( uri ) 00062 {} 00063 00067 virtual ~QgsDataProvider() {}; 00068 00069 00075 virtual QgsCoordinateReferenceSystem crs() = 0; 00076 00077 00083 virtual void setDataSourceUri( QString const & uri ) 00084 { 00085 mDataSourceURI = uri; 00086 } 00087 00093 virtual QString dataSourceUri() const 00094 { 00095 return mDataSourceURI; 00096 } 00097 00098 00103 virtual QgsRectangle extent() = 0; 00104 00105 00110 virtual bool isValid() = 0; 00111 00112 00116 virtual void updateExtents() 00117 { 00118 // NOP by default 00119 } 00120 00121 00128 virtual bool setSubsetString( QString subset, bool updateFeatureCount = true ) 00129 { 00130 // NOP by default 00131 Q_UNUSED( subset ); 00132 Q_UNUSED( updateFeatureCount ); 00133 return false; 00134 } 00135 00136 00141 virtual bool supportsSubsetString() { return false; } 00142 00149 virtual QString subsetString() 00150 { 00151 return QString::null; 00152 } 00153 00154 00161 virtual QStringList subLayers() const 00162 { 00163 return QStringList(); // Empty 00164 } 00165 00166 00174 virtual QStringList subLayerStyles() const 00175 { 00176 return QStringList(); // Empty 00177 } 00178 00179 00183 virtual uint subLayerCount() const 00184 { 00185 return 0; 00186 } 00187 00188 00194 virtual void setLayerOrder( const QStringList &layers ) 00195 { 00196 //prevent unused var warnings 00197 if ( layers.count() < 1 ) 00198 { 00199 return; 00200 } 00201 // NOOP 00202 } 00203 00204 00208 virtual void setSubLayerVisibility( const QString &name, bool vis ) 00209 { 00210 //prevent unused var warnings 00211 if ( name.isEmpty() || !vis ) 00212 { 00213 return; 00214 } 00215 // NOOP 00216 } 00217 00218 00233 virtual QString name() const = 0; 00234 00235 00247 virtual QString description() const = 0; 00248 00249 00261 virtual QString fileVectorFilters() const 00262 { 00263 return ""; 00264 } 00265 00266 00278 virtual QString fileRasterFilters() const 00279 { 00280 return ""; 00281 } 00282 00285 virtual void reloadData() {} 00286 00288 virtual QDateTime timestamp() const { return mTimestamp; } 00289 00291 virtual QDateTime dataTimestamp() const { return QDateTime(); } 00292 00293 signals: 00294 00300 void fullExtentCalculated(); 00301 00307 void dataChanged(); 00308 00314 void dataChanged( int changed ); 00315 00316 protected: 00320 QDateTime mTimestamp; 00321 private: 00322 00327 QString mDataSourceURI; 00328 }; 00329 00330 00331 #endif