Quantum GIS API Documentation  1.7.4
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 /* $Id$ */
00016 
00017 #ifndef QQGSDATAPROVIDER_H
00018 #define QQGSDATAPROVIDER_H
00019 
00020 #include <QDateTime>
00021 #include <QObject>
00022 #include <QString>
00023 #include <QStringList>
00024 
00025 class QgsRectangle;
00026 class QgsCoordinateReferenceSystem;
00027 
00028 
00042 class CORE_EXPORT QgsDataProvider : public QObject
00043 {
00044     Q_OBJECT
00045 
00046   public:
00047 
00048     QgsDataProvider( QString const & uri = "" )
00049         : mDataSourceURI( uri )
00050     {}
00051 
00055     virtual ~QgsDataProvider() {};
00056 
00057 
00063     virtual QgsCoordinateReferenceSystem crs() = 0;
00064 
00065 
00071     virtual void setDataSourceUri( QString const & uri )
00072     {
00073       mDataSourceURI = uri;
00074     }
00075 
00081     virtual QString dataSourceUri() const
00082     {
00083       return mDataSourceURI;
00084     }
00085 
00086 
00091     virtual QgsRectangle extent() = 0;
00092 
00093 
00098     virtual bool isValid() = 0;
00099 
00100 
00104     virtual void updateExtents()
00105     {
00106       // NOP by default
00107     }
00108 
00109 
00116     virtual bool setSubsetString( QString subset, bool updateFeatureCount = true )
00117     {
00118       // NOP by default
00119       Q_UNUSED( subset );
00120       return false;
00121     }
00122 
00123 
00128     virtual bool supportsSubsetString() { return false; }
00129 
00136     virtual QString subsetString()
00137     {
00138       return QString::null;
00139     }
00140 
00141 
00148     virtual QStringList subLayers() const
00149     {
00150       return QStringList();  // Empty
00151     }
00152 
00153 
00161     virtual QStringList subLayerStyles() const
00162     {
00163       return QStringList();  // Empty
00164     }
00165 
00166 
00170     virtual uint subLayerCount() const
00171     {
00172       return 0;
00173     }
00174 
00175 
00181     virtual void setLayerOrder( QStringList layers )
00182     {
00183       //prevent unused var warnings
00184       if ( layers.count() < 1 )
00185       {
00186         return;
00187       }
00188       // NOOP
00189     }
00190 
00191 
00195     virtual void setSubLayerVisibility( QString name, bool vis )
00196     {
00197       //prevent unused var warnings
00198       if ( name.isEmpty() || !vis )
00199       {
00200         return;
00201       }
00202       // NOOP
00203     }
00204 
00205 
00220     virtual QString name() const = 0;
00221 
00222 
00234     virtual QString description() const = 0;
00235 
00236 
00248     virtual QString fileVectorFilters() const
00249     {
00250       return "";
00251     }
00252 
00253 
00265     virtual QString fileRasterFilters() const
00266     {
00267       return "";
00268     }
00269 
00272     virtual void reloadData() {}
00273 
00275     virtual QDateTime timestamp() const { return mTimestamp; }
00276 
00278     virtual QDateTime dataTimestamp() const { return QDateTime(); }
00279 
00280   signals:
00281 
00287     void fullExtentCalculated();
00288 
00294     void dataChanged();
00295 
00301     void dataChanged( int changed );
00302 
00303   protected:
00307     QDateTime mTimestamp;
00308   private:
00309 
00314     QString mDataSourceURI;
00315 };
00316 
00317 
00318 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines