38
38
#include " qgslogger.h"
39
39
#include " qgsproviderregistry.h"
40
40
41
+ // shared icons
42
+ QIcon QgsLayerItem::sIconPoint , QgsLayerItem::sIconLine , QgsLayerItem::sIconPolygon , QgsLayerItem::sIconTable , QgsLayerItem::sIconDefault ;
43
+ QIcon QgsDataCollectionItem::sDirIcon ;
44
+
45
+
41
46
QgsDataItem::QgsDataItem (QgsDataItem::Type type, QgsDataItem* parent, QString name, QString path)
42
47
: QObject(parent), mType(type), mParent(parent), mPopulated(false ), mName(name), mPath(path)
43
48
{
44
49
}
45
50
46
51
QIcon QgsDataItem::icon ()
47
52
{
48
- if ( !mIcon .isNull () ) return mIcon ;
49
- return mDefaultIcon ;
53
+ return mIcon ;
50
54
}
51
55
52
56
// TODO: This is copy from QgisApp, bad
@@ -197,47 +201,27 @@ void QgsDataItem::refresh()
197
201
198
202
// ---------------------------------------------------------------------
199
203
200
- QgsLayerItem::QgsLayerItem (QgsDataItem* parent, QString name, QString path)
201
- : QgsDataItem(Layer, parent, name, path)
202
- {
203
- }
204
-
205
- QgsLayerItem::QgsLayerItem (QgsDataItem* parent, QgsDataItem::Type type, QString name, QString path, QString uri)
206
- : QgsDataItem(type, parent, name, path), mUri(uri)
207
- {
208
-
209
- }
210
- QIcon QgsLayerItem::icon ()
204
+ QgsLayerItem::QgsLayerItem (QgsDataItem* parent, QString name, QString path, QString uri, LayerType layerType)
205
+ : QgsDataItem(Layer, parent, name, path), mUri(uri), mLayerType(layerType)
211
206
{
212
- if ( !mIcon .isNull () ) return mIcon ;
213
-
214
- QString name;
215
- switch ( mType )
207
+ if (sIconPoint .isNull ())
216
208
{
217
- case QgsDataItem::Point :
218
- name = " /mIconPointLayer.png" ;
219
- break ;
220
- case QgsDataItem::Line:
221
- name = " /mIconLineLayer.png" ;
222
- break ;
223
- case QgsDataItem::Polygon:
224
- name = " /mIconPolygonLayer.png" ;
225
- break ;
226
- case QgsDataItem::TableLayer:
227
- name = " /mIconTableLayer.png" ;
228
- break ;
229
- default :
230
- name = " /mIconLayer.png" ;
231
- break ;
209
+ // initialize shared icons
210
+ sIconPoint = QIcon ( getThemePixmap ( " /mIconPointLayer.png" ) );
211
+ sIconLine = QIcon ( getThemePixmap ( " /mIconLineLayer.png" ) );
212
+ sIconPolygon = QIcon ( getThemePixmap ( " /mIconPolygonLayer.png" ) );
213
+ sIconTable = QIcon ( getThemePixmap ( " /mIconTableLayer.png" ) );
214
+ sIconDefault = QIcon ( getThemePixmap ( " /mIconLayer.png" ) );
232
215
}
233
- // QgsDebugMsg( QString ( "mType = %1 name = %2").arg ( mType).arg (name ) );
234
- if ( !name. isEmpty () )
216
+
217
+ switch (layerType )
235
218
{
236
- QPixmap pixmap = getThemePixmap ( name );
237
- // QgsDebugMsg( QString ( "pixmap.isNull = %1").arg(pixmap.isNull() ) );
238
- return QIcon ( pixmap );
219
+ case Point : mIcon = sIconPoint ; break ;
220
+ case Line: mIcon = sIconLine ; break ;
221
+ case Polygon: mIcon = sIconPolygon ; break ;
222
+ case TableLayer: mIcon = sIconTable ; break ;
223
+ default : mIcon = sIconDefault ; break ;
239
224
}
240
- return mDefaultIcon ;
241
225
}
242
226
243
227
bool QgsLayerItem::equal (const QgsDataItem *other)
@@ -257,10 +241,15 @@ bool QgsLayerItem::equal(const QgsDataItem *other)
257
241
QgsDataCollectionItem::QgsDataCollectionItem ( QgsDataItem::Type type, QgsDataItem* parent, QString name, QString path)
258
242
: QgsDataItem( type, parent, name, path)
259
243
{
260
- QStyle *style = QApplication::style ();
261
- mDefaultIcon = QIcon ( style->standardPixmap ( QStyle::SP_DirClosedIcon ) );
262
- mDefaultIcon .addPixmap ( style->standardPixmap ( QStyle::SP_DirOpenIcon ),
263
- QIcon::Normal, QIcon::On );
244
+
245
+ if (sDirIcon .isNull ())
246
+ {
247
+ // initialize shared icons
248
+ QStyle *style = QApplication::style ();
249
+ sDirIcon = QIcon ( style->standardPixmap ( QStyle::SP_DirClosedIcon ) );
250
+ sDirIcon .addPixmap ( style->standardPixmap ( QStyle::SP_DirOpenIcon ),
251
+ QIcon::Normal, QIcon::On );
252
+ }
264
253
}
265
254
QgsDataCollectionItem::~QgsDataCollectionItem ()
266
255
{
@@ -279,6 +268,8 @@ typedef QgsDataItem * dataItem_t(QString);
279
268
QgsDirectoryItem::QgsDirectoryItem (QgsDataItem* parent, QString name, QString path)
280
269
: QgsDataCollectionItem(Directory, parent, name, path)
281
270
{
271
+ mIcon = sDirIcon ;
272
+
282
273
if ( mLibraries .size () == 0 ) {
283
274
QStringList keys = QgsProviderRegistry::instance ()->providerList ();
284
275
QStringList::const_iterator i;
0 commit comments