00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef QGSDATAITEM_H
00018 #define QGSDATAITEM_H
00019
00020 #include <QIcon>
00021 #include <QLibrary>
00022 #include <QObject>
00023 #include <QPixmap>
00024 #include <QString>
00025 #include <QVector>
00026 #include <QTreeWidget>
00027
00028 #include "qgsmaplayer.h"
00029 #include "qgscoordinatereferencesystem.h"
00030
00031 class QgsDataProvider;
00032 class QgsDataItem;
00033
00034
00035 typedef int dataCapabilities_t();
00036 typedef QgsDataItem * dataItem_t( QString, QgsDataItem* );
00037
00038
00040 class CORE_EXPORT QgsDataItem : public QObject
00041 {
00042 Q_OBJECT
00043 public:
00044 enum Type
00045 {
00046 Collection,
00047 Directory,
00048 Layer,
00049 Error,
00050 Favourites
00051 };
00052
00053 QgsDataItem( QgsDataItem::Type type, QgsDataItem* parent, QString name, QString path );
00054 virtual ~QgsDataItem() {}
00055
00056 bool hasChildren();
00057
00058 int rowCount();
00059
00060
00061
00062 virtual void refresh();
00063
00064
00065 virtual QVector<QgsDataItem*> createChildren();
00066
00067
00068 virtual void populate();
00069
00070
00071
00072 virtual void addChildItem( QgsDataItem * child, bool refresh = false );
00073
00074
00075 virtual void deleteChildItem( QgsDataItem * child );
00076
00077 virtual bool equal( const QgsDataItem *other );
00078
00079 virtual QWidget * paramWidget() { return 0; }
00080
00081
00082 virtual QList<QAction*> actions() { return QList<QAction*>(); }
00083
00084
00085 virtual bool acceptDrop() { return false; }
00086
00087
00088 virtual bool handleDrop( const QMimeData * , Qt::DropAction ) { return false; }
00089
00090
00091
00092 enum Capability
00093 {
00094 NoCapabilities = 0,
00095 SetCrs = 1
00096 };
00097
00098
00099 virtual bool setCrs( QgsCoordinateReferenceSystem crs )
00100 { Q_UNUSED( crs ); return false; }
00101
00102 virtual Capability capabilities() { return NoCapabilities; }
00103
00104
00105
00106 static QPixmap getThemePixmap( const QString theName );
00107
00108
00109 static int findItem( QVector<QgsDataItem*> items, QgsDataItem * item );
00110
00111
00112
00113 Type type() const { return mType; }
00114 QgsDataItem* parent() const { return mParent; }
00115 QVector<QgsDataItem*> children() const { return mChildren; }
00116 QIcon icon() const { return mIcon; }
00117 QString name() const { return mName; }
00118 QString path() const { return mPath; }
00119
00120 void setIcon( QIcon icon ) { mIcon = icon; }
00121
00122 void setToolTip( QString msg ) { mToolTip = msg; }
00123 QString toolTip() const { return mToolTip; }
00124
00125 protected:
00126
00127 Type mType;
00128 QgsDataItem* mParent;
00129 QVector<QgsDataItem*> mChildren;
00130 bool mPopulated;
00131 QString mName;
00132 QString mPath;
00133 QString mToolTip;
00134 QIcon mIcon;
00135
00136 public slots:
00137 void emitBeginInsertItems( QgsDataItem* parent, int first, int last );
00138 void emitEndInsertItems();
00139 void emitBeginRemoveItems( QgsDataItem* parent, int first, int last );
00140 void emitEndRemoveItems();
00141
00142 signals:
00143 void beginInsertItems( QgsDataItem* parent, int first, int last );
00144 void endInsertItems();
00145 void beginRemoveItems( QgsDataItem* parent, int first, int last );
00146 void endRemoveItems();
00147 };
00148
00150 class CORE_EXPORT QgsLayerItem : public QgsDataItem
00151 {
00152 Q_OBJECT
00153 public:
00154 enum LayerType
00155 {
00156 NoType,
00157 Vector,
00158 Raster,
00159 Point,
00160 Line,
00161 Polygon,
00162 TableLayer,
00163 Database,
00164 Table
00165 };
00166
00167 QgsLayerItem( QgsDataItem* parent, QString name, QString path, QString uri, LayerType layerType, QString providerKey );
00168
00169
00170
00171 virtual bool equal( const QgsDataItem *other );
00172
00173
00174
00175
00176 QgsMapLayer::LayerType mapLayerType();
00177
00178
00179 QString uri() { return mUri; }
00180
00181
00182 QString providerKey() { return mProviderKey; }
00183
00184 protected:
00185
00186 QString mProviderKey;
00187 QString mUri;
00188 LayerType mLayerType;
00189
00190 public:
00191 static const QIcon &iconPoint();
00192 static const QIcon &iconLine();
00193 static const QIcon &iconPolygon();
00194 static const QIcon &iconTable();
00195 static const QIcon &iconRaster();
00196 static const QIcon &iconDefault();
00197 };
00198
00199
00201 class CORE_EXPORT QgsDataCollectionItem : public QgsDataItem
00202 {
00203 Q_OBJECT
00204 public:
00205 QgsDataCollectionItem( QgsDataItem* parent, QString name, QString path = QString::null );
00206 ~QgsDataCollectionItem();
00207
00208 void setPopulated() { mPopulated = true; }
00209 void addChild( QgsDataItem *item ) { mChildren.append( item ); }
00210
00211 static const QIcon &iconDir();
00212 static const QIcon &iconDataCollection();
00213 };
00214
00216 class CORE_EXPORT QgsDirectoryItem : public QgsDataCollectionItem
00217 {
00218 Q_OBJECT
00219 public:
00220 enum Column
00221 {
00222 Name,
00223 Size,
00224 Date,
00225 Permissions,
00226 Owner,
00227 Group,
00228 Type
00229 };
00230 QgsDirectoryItem( QgsDataItem* parent, QString name, QString path );
00231 ~QgsDirectoryItem();
00232
00233 QVector<QgsDataItem*> createChildren();
00234
00235 virtual bool equal( const QgsDataItem *other );
00236
00237 virtual QWidget * paramWidget();
00238
00239
00240 static QVector<QLibrary*> mLibraries;
00241 };
00242
00246 class CORE_EXPORT QgsErrorItem : public QgsDataItem
00247 {
00248 Q_OBJECT
00249 public:
00250
00251 QgsErrorItem( QgsDataItem* parent, QString error, QString path );
00252 ~QgsErrorItem();
00253
00254
00255
00256 };
00257
00258
00259
00260
00261 class QgsDirectoryParamWidget : public QTreeWidget
00262 {
00263 Q_OBJECT
00264
00265 public:
00266 QgsDirectoryParamWidget( QString path, QWidget* parent = NULL );
00267
00268 protected:
00269 void mousePressEvent( QMouseEvent* event );
00270
00271 public slots:
00272 void showHideColumn();
00273 };
00274
00276 class CORE_EXPORT QgsFavouritesItem : public QgsDataCollectionItem
00277 {
00278 Q_OBJECT
00279 public:
00280 QgsFavouritesItem( QgsDataItem* parent, QString name, QString path = QString() );
00281 ~QgsFavouritesItem();
00282
00283 QVector<QgsDataItem*> createChildren();
00284
00285 static const QIcon &iconFavourites();
00286 };
00287
00289 class CORE_EXPORT QgsZipItem : public QgsDataCollectionItem
00290 {
00291 Q_OBJECT
00292
00293 protected:
00294 QStringList mZipFileList;
00295
00296 public:
00297 QgsZipItem( QgsDataItem* parent, QString name, QString path );
00298 ~QgsZipItem();
00299
00300 QVector<QgsDataItem*> createChildren();
00301 QStringList getFiles();
00302
00303 static QVector<dataItem_t *> mDataItemPtr;
00304 static QStringList mProviderNames;
00305
00306 static QgsDataItem* itemFromPath( QgsDataItem* parent, QString path, QString name );
00307
00308 static const QIcon &iconZip();
00309
00310 const QStringList & getZipFileList() const { return mZipFileList; }
00311
00312 };
00313
00314 #endif // QGSDATAITEM_H
00315