Skip to content
Permalink
Browse files

[bugfix] Prevent expansion of WMS connection layers when restoring th…

…e browser

This was causing unwanted connections to WMS when QGIS starts.
  • Loading branch information
elpaso committed Jun 16, 2017
1 parent d9d6872 commit cf0ffefc1a4092224e43434e82841e084b991eed
@@ -176,7 +176,8 @@ Create new data item.
NoCapabilities,
SetCrs,
Fertile,
Fast
Fast,
Collapse
};
typedef QFlags<QgsDataItem::Capability> Capabilities;

@@ -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 );

@@ -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 )

@@ -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 );
@@ -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
@@ -22,6 +22,7 @@
QgsBrowserTreeView::QgsBrowserTreeView( QWidget *parent )
: QTreeView( parent )
, mSettingsSection( QStringLiteral( "browser" ) )
, mBrowserModel( nullptr )
{
}

@@ -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 );
@@ -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 );
@@ -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.
@@ -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;

@@ -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
@@ -35,6 +35,7 @@ QgsWMSConnectionItem::QgsWMSConnectionItem( QgsDataItem *parent, QString name, Q
, mCapabilitiesDownload( nullptr )
{
mIconName = QStringLiteral( "mIconConnect.png" );
mCapabilities |= Collapse;
mCapabilitiesDownload = new QgsWmsCapabilitiesDownload( false );
}

0 comments on commit cf0ffef

Please sign in to comment.
You can’t perform that action at this time.