Skip to content

Commit

Permalink
[bugfix] Prevent expansion of WMS connection layers when restoring th…
Browse files Browse the repository at this point in the history
…e browser

This was causing unwanted connections to WMS when QGIS starts.
  • Loading branch information
elpaso committed Jun 16, 2017
1 parent d9d6872 commit cf0ffef
Show file tree
Hide file tree
Showing 8 changed files with 44 additions and 7 deletions.
3 changes: 2 additions & 1 deletion python/core/qgsdataitem.sip
Expand Up @@ -176,7 +176,8 @@ Create new data item.
NoCapabilities,
SetCrs,
Fertile,
Fast
Fast,
Collapse
};
typedef QFlags<QgsDataItem::Capability> Capabilities;

Expand Down
5 changes: 5 additions & 0 deletions python/gui/qgsbrowsertreeview.sip
Expand Up @@ -25,6 +25,11 @@ class QgsBrowserTreeView : QTreeView
QgsBrowserTreeView( QWidget *parent /TransferThis/ = 0 );

virtual void setModel( QAbstractItemModel *model );
void setBrowserModel( QgsBrowserModel *model );
QgsBrowserModel *browserModel( );
%Docstring
:rtype: QgsBrowserModel
%End
virtual void showEvent( QShowEvent *e );
virtual void hideEvent( QHideEvent *e );

Expand Down
9 changes: 5 additions & 4 deletions src/core/qgsdataitem.h
Expand Up @@ -169,10 +169,11 @@ class CORE_EXPORT QgsDataItem : public QObject

enum Capability
{
NoCapabilities = 0,
SetCrs = 1 << 0, //!< Can set CRS on layer or group of layers
Fertile = 1 << 1, //!< Can create children. Even items without this capability may have children, but cannot create them, it means that children are created by item ancestors.
Fast = 1 << 2 //!< CreateChildren() is fast enough to be run in main thread when refreshing items, most root items (wms,wfs,wcs,postgres...) are considered fast because they are reading data only from QgsSettings
NoCapabilities = 0,
SetCrs = 1 << 0, //!< Can set CRS on layer or group of layers
Fertile = 1 << 1, //!< Can create children. Even items without this capability may have children, but cannot create them, it means that children are created by item ancestors.
Fast = 1 << 2, //!< CreateChildren() is fast enough to be run in main thread when refreshing items, most root items (wms,wfs,wcs,postgres...) are considered fast because they are reading data only from QgsSettings
Collapse = 1 << 3 //!< The collapse/expand status for this items children should be ignored in order to avoid undesired network connections (wms etc.)
};
Q_DECLARE_FLAGS( Capabilities, Capability )

Expand Down
1 change: 1 addition & 0 deletions src/gui/qgsbrowserdockwidget.cpp
Expand Up @@ -118,6 +118,7 @@ void QgsBrowserDockWidget::showEvent( QShowEvent *e )
mProxyModel = new QgsBrowserTreeFilterProxyModel( this );
mProxyModel->setBrowserModel( mModel );
mBrowserView->setSettingsSection( objectName().toLower() ); // to distinguish 2 instances ow browser
mBrowserView->setBrowserModel( mModel );
mBrowserView->setModel( mProxyModel );
// provide a horizontal scroll bar instead of using ellipse (...) for longer items
mBrowserView->setTextElideMode( Qt::ElideNone );
Expand Down
2 changes: 2 additions & 0 deletions src/gui/qgsbrowserdockwidget_p.h
Expand Up @@ -212,6 +212,8 @@ class QgsBrowserTreeFilterProxyModel : public QSortFilterProxyModel
explicit QgsBrowserTreeFilterProxyModel( QObject *parent );
//! Set the browser model
void setBrowserModel( QgsBrowserModel *model );
//! Get the browser model
QgsBrowserModel *browserModel( ) { return mModel; }
//! Set the filter syntax
void setFilterSyntax( const QString &syntax );
//! Set the filter
Expand Down
25 changes: 24 additions & 1 deletion src/gui/qgsbrowsertreeview.cpp
Expand Up @@ -22,6 +22,7 @@
QgsBrowserTreeView::QgsBrowserTreeView( QWidget *parent )
: QTreeView( parent )
, mSettingsSection( QStringLiteral( "browser" ) )
, mBrowserModel( nullptr )
{
}

Expand All @@ -33,6 +34,11 @@ void QgsBrowserTreeView::setModel( QAbstractItemModel *model )
restoreState();
}

void QgsBrowserTreeView::setBrowserModel( QgsBrowserModel *model )
{
mBrowserModel = model;
}

void QgsBrowserTreeView::showEvent( QShowEvent *e )
{
Q_UNUSED( e );
Expand Down Expand Up @@ -72,7 +78,24 @@ void QgsBrowserTreeView::restoreState()
{
QModelIndex expandIndex = QgsBrowserModel::findPath( model(), path, Qt::MatchStartsWith );
if ( expandIndex.isValid() )
expandIndexSet.insert( expandIndex );
{
QModelIndex modelIndex = browserModel()->findPath( path, Qt::MatchExactly );
if ( modelIndex.isValid() )
{
QgsDataItem *ptr = browserModel()->dataItem( modelIndex );
if ( ptr && ( ptr->capabilities2() & QgsDataItem::Capability::Collapse ) )
{
QgsDebugMsgLevel( "do not expand index for path " + path, 4 );
QModelIndex parentIndex = model()->parent( expandIndex );
if ( parentIndex.isValid() )
expandIndexSet.insert( parentIndex );
}
else
{
expandIndexSet.insert( expandIndex );
}
}
}
else
{
QgsDebugMsgLevel( "index for path " + path + " not found", 4 );
Expand Down
5 changes: 4 additions & 1 deletion src/gui/qgsbrowsertreeview.h
Expand Up @@ -20,7 +20,7 @@
#include "qgis.h"
#include "qgis_gui.h"

//class QgsBrowserModel;
class QgsBrowserModel;

/** \ingroup gui
* The QgsBrowserTreeView class extends QTreeView with save/restore tree state functionality.
Expand All @@ -35,6 +35,8 @@ class GUI_EXPORT QgsBrowserTreeView : public QTreeView
QgsBrowserTreeView( QWidget *parent SIP_TRANSFERTHIS = 0 );

virtual void setModel( QAbstractItemModel *model ) override;
void setBrowserModel( QgsBrowserModel *model );
QgsBrowserModel *browserModel( ) { return mBrowserModel; }
virtual void showEvent( QShowEvent *e ) override;
virtual void hideEvent( QHideEvent *e ) override;

Expand Down Expand Up @@ -64,6 +66,7 @@ class GUI_EXPORT QgsBrowserTreeView : public QTreeView

// returns true if expanded from root to item
bool treeExpanded( const QModelIndex &index );
QgsBrowserModel *mBrowserModel;
};

#endif // QGSBROWSERTREEVIEW_H
1 change: 1 addition & 0 deletions src/providers/wms/qgswmsdataitems.cpp
Expand Up @@ -35,6 +35,7 @@ QgsWMSConnectionItem::QgsWMSConnectionItem( QgsDataItem *parent, QString name, Q
, mCapabilitiesDownload( nullptr )
{
mIconName = QStringLiteral( "mIconConnect.png" );
mCapabilities |= Collapse;
mCapabilitiesDownload = new QgsWmsCapabilitiesDownload( false );
}

Expand Down

0 comments on commit cf0ffef

Please sign in to comment.