Quantum GIS API Documentation  master-693a1fe
src/core/qgsdataprovider.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines