|
@@ -29,6 +29,7 @@ |
|
|
#include "qgsvectorlayer.h" |
|
|
|
|
|
#include <QAbstractListModel> |
|
|
#include <QSortFilterProxyModel> |
|
|
#include <QCheckBox> |
|
|
#include <QDir> |
|
|
#include <QFileDialog> |
|
@@ -216,19 +217,25 @@ void QgsSvgGroupLoader::loadGroup( const QString &parentPath ) |
|
|
|
|
|
///@endcond |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QgsSvgSelectorFilterModel::QgsSvgSelectorFilterModel( QObject *parent, const QString &path, int iconSize ) |
|
|
: QSortFilterProxyModel( parent ) |
|
|
{ |
|
|
mModel = new QgsSvgSelectorListModel( parent, path, iconSize ); |
|
|
setFilterCaseSensitivity( Qt::CaseInsensitive ); |
|
|
setSourceModel( mModel ); |
|
|
setFilterRole( Qt::UserRole ); |
|
|
} |
|
|
|
|
|
//, |
|
|
// QgsSvgSelectorListModel |
|
|
// |
|
|
|
|
|
QgsSvgSelectorListModel::QgsSvgSelectorListModel( QObject *parent, int iconSize ) |
|
|
: QAbstractListModel( parent ) |
|
|
, mSvgLoader( new QgsSvgSelectorLoader( this ) ) |
|
|
, mIconSize( iconSize ) |
|
|
{ |
|
|
mSvgLoader->setPath( QString() ); |
|
|
connect( mSvgLoader, &QgsSvgSelectorLoader::foundSvgs, this, &QgsSvgSelectorListModel::addSvgs ); |
|
|
mSvgLoader->start(); |
|
|
} |
|
|
: QgsSvgSelectorListModel( parent, QString(), iconSize ) |
|
|
{} |
|
|
|
|
|
QgsSvgSelectorListModel::QgsSvgSelectorListModel( QObject *parent, const QString &path, int iconSize ) |
|
|
: QAbstractListModel( parent ) |
|
@@ -395,6 +402,18 @@ QgsSvgSelectorWidget::QgsSvgSelectorWidget( QWidget *parent ) |
|
|
mGroupsTreeView->setHeaderHidden( true ); |
|
|
populateList(); |
|
|
|
|
|
connect( mSvgFilterLineEdit, &QgsFilterLineEdit::textChanged, this, [ = ]( const QString & filterText ) |
|
|
{ |
|
|
if ( !mImagesListView->selectionModel()->selectedIndexes().isEmpty() ) |
|
|
{ |
|
|
disconnect( mImagesListView->selectionModel(), &QItemSelectionModel::currentChanged, this, &QgsSvgSelectorWidget::svgSelectionChanged ); |
|
|
mImagesListView->selectionModel()->clearSelection(); |
|
|
connect( mImagesListView->selectionModel(), &QItemSelectionModel::currentChanged, this, &QgsSvgSelectorWidget::svgSelectionChanged ); |
|
|
} |
|
|
qobject_cast<QgsSvgSelectorFilterModel *>( mImagesListView->model() )->setFilterFixedString( filterText ); |
|
|
} ); |
|
|
|
|
|
|
|
|
mParametersModel = new QgsSvgParametersModel( this ); |
|
|
mParametersTreeView->setModel( mParametersModel ); |
|
|
mParametersGroupBox->setVisible( mAllowParameters ); |
|
@@ -484,8 +503,9 @@ void QgsSvgSelectorWidget::populateIcons( const QModelIndex &idx ) |
|
|
QString path = idx.data( Qt::UserRole + 1 ).toString(); |
|
|
|
|
|
QAbstractItemModel *oldModel = mImagesListView->model(); |
|
|
QgsSvgSelectorListModel *m = new QgsSvgSelectorListModel( mImagesListView, path, mIconSize ); |
|
|
QgsSvgSelectorFilterModel *m = new QgsSvgSelectorFilterModel( mImagesListView, path, mIconSize ); |
|
|
mImagesListView->setModel( m ); |
|
|
connect( mSvgFilterLineEdit, &QgsFilterLineEdit::textChanged, m, &QSortFilterProxyModel::setFilterFixedString ); |
|
|
delete oldModel; //explicitly delete old model to force any background threads to stop |
|
|
|
|
|
connect( mImagesListView->selectionModel(), &QItemSelectionModel::currentChanged, |
|
@@ -513,7 +533,7 @@ void QgsSvgSelectorWidget::populateList() |
|
|
|
|
|
// Initially load the icons in the List view without any grouping |
|
|
QAbstractItemModel *oldModel = mImagesListView->model(); |
|
|
QgsSvgSelectorListModel *m = new QgsSvgSelectorListModel( mImagesListView ); |
|
|
QgsSvgSelectorFilterModel *m = new QgsSvgSelectorFilterModel( mImagesListView ); |
|
|
mImagesListView->setModel( m ); |
|
|
delete oldModel; //explicitly delete old model to force any background threads to stop |
|
|
} |
|
@@ -737,3 +757,5 @@ void QgsSvgParameterValueDelegate::updateEditorGeometry( QWidget *editor, const |
|
|
} |
|
|
|
|
|
///@endcond |
|
|
|
|
|
|