Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgsdataprovider.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsdataprovider.h - DataProvider Interface class
3  --------------------------------------
4  Date : 09-Sep-2003
5  Copyright : (C) 2003 by Gary E.Sherman
6  email : sherman at mrcc.com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 /* $Id$ */
16 
17 #ifndef QQGSDATAPROVIDER_H
18 #define QQGSDATAPROVIDER_H
19 
20 #include <QDateTime>
21 #include <QObject>
22 #include <QString>
23 #include <QStringList>
24 
25 class QgsRectangle;
27 
28 
42 class CORE_EXPORT QgsDataProvider : public QObject
43 {
44  Q_OBJECT
45 
46  public:
47 
48  QgsDataProvider( QString const & uri = "" )
49  : mDataSourceURI( uri )
50  {}
51 
55  virtual ~QgsDataProvider() {};
56 
57 
63  virtual QgsCoordinateReferenceSystem crs() = 0;
64 
65 
71  virtual void setDataSourceUri( QString const & uri )
72  {
73  mDataSourceURI = uri;
74  }
75 
81  virtual QString dataSourceUri() const
82  {
83  return mDataSourceURI;
84  }
85 
86 
91  virtual QgsRectangle extent() = 0;
92 
93 
98  virtual bool isValid() = 0;
99 
100 
104  virtual void updateExtents()
105  {
106  // NOP by default
107  }
108 
109 
116  virtual bool setSubsetString( QString subset, bool updateFeatureCount = true )
117  {
118  // NOP by default
119  Q_UNUSED( subset );
120  return false;
121  }
122 
123 
128  virtual bool supportsSubsetString() { return false; }
129 
136  virtual QString subsetString()
137  {
138  return QString::null;
139  }
140 
141 
148  virtual QStringList subLayers() const
149  {
150  return QStringList(); // Empty
151  }
152 
153 
161  virtual QStringList subLayerStyles() const
162  {
163  return QStringList(); // Empty
164  }
165 
166 
170  virtual uint subLayerCount() const
171  {
172  return 0;
173  }
174 
175 
181  virtual void setLayerOrder( QStringList layers )
182  {
183  //prevent unused var warnings
184  if ( layers.count() < 1 )
185  {
186  return;
187  }
188  // NOOP
189  }
190 
191 
195  virtual void setSubLayerVisibility( QString name, bool vis )
196  {
197  //prevent unused var warnings
198  if ( name.isEmpty() || !vis )
199  {
200  return;
201  }
202  // NOOP
203  }
204 
205 
220  virtual QString name() const = 0;
221 
222 
234  virtual QString description() const = 0;
235 
236 
248  virtual QString fileVectorFilters() const
249  {
250  return "";
251  }
252 
253 
265  virtual QString fileRasterFilters() const
266  {
267  return "";
268  }
269 
272  virtual void reloadData() {}
273 
275  virtual QDateTime timestamp() const { return mTimestamp; }
276 
278  virtual QDateTime dataTimestamp() const { return QDateTime(); }
279 
280  signals:
281 
287  void fullExtentCalculated();
288 
294  void dataChanged();
295 
301  void dataChanged( int changed );
302 
303  protected:
307  QDateTime mTimestamp;
308  private:
309 
314  QString mDataSourceURI;
315 };
316 
317 
318 #endif