Skip to content

Commit 107df1f

Browse files
committedJun 2, 2011
browser changes:
- use empty string as default wms style - update wms preview when render caching is enabled - some cleanups
1 parent 9ae32d3 commit 107df1f

File tree

4 files changed

+174
-179
lines changed

4 files changed

+174
-179
lines changed
 

‎src/browser/qgsbrowser.cpp

Lines changed: 75 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,12 @@
3434

3535

3636
QgsBrowser::QgsBrowser( QWidget *parent, Qt::WFlags flags )
37-
: QMainWindow( parent, flags ),
38-
mDirtyMetadata( true ), mDirtyPreview( true ), mDirtyAttributes( true ),
39-
mLayer( 0 ), mParamWidget( 0 )
37+
: QMainWindow( parent, flags )
38+
, mDirtyMetadata( true )
39+
, mDirtyPreview( true )
40+
, mDirtyAttributes( true )
41+
, mLayer( 0 )
42+
, mParamWidget( 0 )
4043
{
4144
setupUi( this );
4245

@@ -86,9 +89,9 @@ void QgsBrowser::expand( QString path, const QModelIndex& index )
8689
for ( int i = 0; i < mModel->rowCount( index ); i++ )
8790
{
8891
QModelIndex idx = mModel->index( i, 0, index );
89-
QgsDataItem* ptr = ( QgsDataItem* ) idx.internalPointer();
92+
QgsDataItem *item = mModel->dataItem( idx );
9093

91-
if ( path.indexOf( ptr->path() ) == 0 )
94+
if ( item && path.indexOf( item->path() ) == 0 )
9295
{
9396
treeView->expand( idx );
9497
treeView->scrollTo( idx, QAbstractItemView::PositionAtTop );
@@ -102,7 +105,9 @@ void QgsBrowser::itemClicked( const QModelIndex& index )
102105
{
103106
mIndex = index;
104107

105-
QgsDataItem* ptr = ( QgsDataItem* ) index.internalPointer();
108+
QgsDataItem *item = mModel->dataItem( index );
109+
if ( !item )
110+
return;
106111

107112
// Disable preview, attributes tab
108113

@@ -135,20 +140,18 @@ void QgsBrowser::itemClicked( const QModelIndex& index )
135140
mLayer = 0;
136141

137142
// this should probably go to the model and only emit signal when a layer is clicked
138-
139-
140-
mParamWidget = ptr->paramWidget();
143+
mParamWidget = item->paramWidget();
141144
if ( mParamWidget )
142145
{
143146
paramLayout->addWidget( mParamWidget );
144147
mParamWidget->show();
145148
paramEnable = true;
146149
}
147150

148-
if ( ptr->type() == QgsDataItem::Layer )
151+
QgsLayerItem *layerItem = qobject_cast<QgsLayerItem*>( mModel->dataItem( index ) );
152+
if ( layerItem )
149153
{
150-
QgsLayerItem* item = static_cast<QgsLayerItem*>( ptr );
151-
bool res = layerClicked( item );
154+
bool res = layerClicked( layerItem );
152155

153156
if ( res )
154157
{
@@ -169,9 +172,9 @@ void QgsBrowser::itemClicked( const QModelIndex& index )
169172
updateCurrentTab();
170173

171174
int selected = -1;
172-
if ( mLastTab.contains( ptr->metaObject()->className() ) )
175+
if ( mLastTab.contains( item->metaObject()->className() ) )
173176
{
174-
selected = mLastTab[ ptr->metaObject()->className() ];
177+
selected = mLastTab[ item->metaObject()->className()];
175178
}
176179

177180
// Enabling tabs call tabChanged !
@@ -183,22 +186,25 @@ void QgsBrowser::itemClicked( const QModelIndex& index )
183186
// select tab according last selection for this data item
184187
if ( selected >= 0 )
185188
{
186-
qDebug( "set tab %s %d", ptr->metaObject()->className(), selected );
189+
QgsDebugMsg( QString( "set tab %1 %2" ).arg( item->metaObject()->className() ).arg( selected ) );
187190
tabWidget->setCurrentIndex( selected );
188191
}
189192

190-
qDebug( "clicked: %d %d %s", index.row(), index.column(), ptr->name().toAscii().data() );
193+
QgsDebugMsg( QString( "clicked: %1 %2 %3" ).arg( index.row() ).arg( index.column() ).arg( item->name() ) );
191194
}
192195

193-
bool QgsBrowser::layerClicked( QgsLayerItem* ptr )
196+
bool QgsBrowser::layerClicked( QgsLayerItem *item )
194197
{
195-
mActionSetProjection->setEnabled( ptr->capabilities() & QgsLayerItem::SetCrs );
198+
if ( !item )
199+
return false;
200+
201+
mActionSetProjection->setEnabled( item->capabilities() & QgsLayerItem::SetCrs );
196202

197-
QString uri = ptr->uri();
203+
QString uri = item->uri();
198204
if ( !uri.isEmpty() )
199205
{
200-
QgsMapLayer::LayerType type = ptr->mapLayerType();
201-
QString providerKey = ptr->providerKey();
206+
QgsMapLayer::LayerType type = item->mapLayerType();
207+
QString providerKey = item->providerKey();
202208

203209
QgsDebugMsg( providerKey + " : " + uri );
204210
if ( type == QgsMapLayer::VectorLayer )
@@ -253,26 +259,32 @@ bool QgsBrowser::layerClicked( QgsLayerItem* ptr )
253259

254260
void QgsBrowser::itemDoubleClicked( const QModelIndex& index )
255261
{
256-
QgsDataItem* ptr = ( QgsDataItem* ) index.internalPointer();
262+
QgsDataItem *item = mModel->dataItem( index );
263+
if ( !item )
264+
return;
257265

258266
// Currently doing nothing
259-
qDebug( "doubleclicked: %d %d %s", index.row(), index.column(), ptr->name().toAscii().data() );
267+
QgsDebugMsg( QString( "%1 %2 %3" ).arg( index.row() ).arg( index.column() ).arg( item->name() ) );
260268
}
261269

262270
void QgsBrowser::itemExpanded( const QModelIndex& index )
263271
{
264272
QSettings settings;
265-
QgsDataItem* ptr = ( QgsDataItem* ) index.internalPointer();
266-
/*
267-
if (ptr->mType == QgsDataItem::Directory || ptr->mType == QgsDataItem::Collection )
268-
{
269-
QgsDirectoryItem* i = (QgsDirectoryItem*) ptr;
270-
settings.setValue ( "/Browser/lastExpandedDir", i->mPath );
271-
}
272-
*/
273+
QgsDataItem *item = mModel->dataItem( index );
274+
if ( !item )
275+
return;
276+
277+
#if 0
278+
if ( item->mType == QgsDataItem::Directory || item->mType == QgsDataItem::Collection )
279+
{
280+
QgsDirectoryItem *i = qobject_cast<QgsDirectoryItem*>( item );
281+
settings.setValue( "/Browser/lastExpandedDir", i->mPath );
282+
}
283+
#endif
284+
273285
// TODO: save separately each type (FS, WMS)
274-
settings.setValue( "/Browser/lastExpanded", ptr->path() );
275-
QgsDebugMsg( "last expanded: " + ptr->path() );
286+
settings.setValue( "/Browser/lastExpanded", item->path() );
287+
QgsDebugMsg( "last expanded: " + item->path() );
276288
}
277289

278290
void QgsBrowser::newVectorLayer()
@@ -315,22 +327,26 @@ void QgsBrowser::on_mActionSetProjection_triggered()
315327
{
316328
if ( !mLayer )
317329
return;
330+
318331
QgsGenericProjectionSelector * mySelector = new QgsGenericProjectionSelector( this );
319332
mySelector->setMessage();
320333
mySelector->setSelectedCrsId( mLayer->crs().srsid() );
321334
if ( mySelector->exec() )
322335
{
323336
QgsCoordinateReferenceSystem srs( mySelector->selectedCrsId(), QgsCoordinateReferenceSystem::InternalCrsId );
337+
324338
// TODO: open data source in write mode set crs and save
325-
//mLayer->setCrs( srs );
339+
#if 0
340+
mLayer->setCrs( srs );
326341
// Is this safe?
327342
// selectedIndexes() is protected
343+
#endif
328344

329-
QgsDataItem* ptr = ( QgsDataItem* ) mIndex.internalPointer();
330-
if ( ptr->type() == QgsDataItem::Layer )
345+
QgsDataItem *item = mModel->dataItem( mIndex );
346+
QgsLayerItem *layerItem = qobject_cast<QgsLayerItem*>( item );
347+
if ( layerItem )
331348
{
332-
QgsLayerItem* layerItem = static_cast<QgsLayerItem*>( ptr );
333-
if ( ! layerItem->setCrs( srs ) )
349+
if ( !layerItem->setCrs( srs ) )
334350
{
335351
QMessageBox::critical( this, tr( "CRS" ), tr( "Cannot set layer CRS" ) );
336352
}
@@ -341,6 +357,7 @@ void QgsBrowser::on_mActionSetProjection_triggered()
341357
{
342358
QApplication::restoreOverrideCursor();
343359
}
360+
344361
delete mySelector;
345362
}
346363

@@ -452,6 +469,13 @@ void QgsBrowser::updateCurrentTab()
452469
fullExtent.scale( 1.05 ); // add some border
453470
mapCanvas->setExtent( fullExtent );
454471
mapCanvas->refresh();
472+
473+
QgsRasterLayer *rlayer = qobject_cast< QgsRasterLayer * >( mLayer );
474+
if ( rlayer )
475+
{
476+
connect( rlayer->dataProvider(), SIGNAL( dataChanged() ), rlayer, SLOT( clearCacheImage() ) );
477+
connect( rlayer->dataProvider(), SIGNAL( dataChanged() ), mapCanvas, SLOT( refresh() ) );
478+
}
455479
}
456480
mDirtyPreview = false;
457481
}
@@ -479,9 +503,12 @@ void QgsBrowser::tabChanged()
479503
// Store last selected tab for selected data item
480504
if ( mIndex.isValid() )
481505
{
482-
QObject* ptr = ( QObject* ) mIndex.internalPointer();
483-
QgsDebugMsg( QString( "save last tab %1 : %2" ).arg( ptr->metaObject()->className() ).arg( tabWidget->currentIndex() ) );
484-
mLastTab[ ptr->metaObject()->className() ] = tabWidget->currentIndex();
506+
QgsDataItem *item = mModel->dataItem( mIndex );
507+
if ( !item )
508+
return;
509+
510+
QgsDebugMsg( QString( "save last tab %1 : %2" ).arg( item->metaObject()->className() ).arg( tabWidget->currentIndex() ) );
511+
mLastTab[ item->metaObject()->className()] = tabWidget->currentIndex();
485512
}
486513
}
487514

@@ -496,10 +523,15 @@ void QgsBrowser::refresh( const QModelIndex& index )
496523
QgsDebugMsg( "Entered" );
497524
if ( index.isValid() )
498525
{
499-
QgsDataItem* item = ( QgsDataItem* ) index.internalPointer();
500-
QgsDebugMsg( "path = " + item->path() );
526+
QgsDataItem *item = mModel->dataItem( index );
527+
if ( item )
528+
QgsDebugMsg( "path = " + item->path() );
529+
else
530+
QgsDebugMsg( "invalid item" );
501531
}
532+
502533
mModel->refresh( index );
534+
503535
for ( int i = 0 ; i < mModel->rowCount( index ); i++ )
504536
{
505537
QModelIndex idx = mModel->index( i, 0, index );

0 commit comments

Comments
 (0)
Please sign in to comment.