Quantum GIS API Documentation  1.8
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 
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines