diff --git a/python/gui/qgsmaplayercombobox.sip b/python/gui/qgsmaplayercombobox.sip index 475cee12c78..c14b53e927b 100644 --- a/python/gui/qgsmaplayercombobox.sip +++ b/python/gui/qgsmaplayercombobox.sip @@ -23,7 +23,7 @@ class QgsMapLayerComboBox : QComboBox QgsMapLayerProxyModel::Filters filters() const; //! currentLayer returns the current layer selected in the combo box - QgsMapLayer* currentLayer(); + QgsMapLayer* currentLayer() const; public slots: //! setLayer set the current layer selected in the combo diff --git a/python/gui/qgsmaplayermodel.sip b/python/gui/qgsmaplayermodel.sip index d7f7d0a02ad..4f5e98ebdd2 100644 --- a/python/gui/qgsmaplayermodel.sip +++ b/python/gui/qgsmaplayermodel.sip @@ -37,12 +37,12 @@ class QgsMapLayerModel : QAbstractItemModel */ QList layersChecked( Qt::CheckState checkState = Qt::Checked ); //! returns if the items can be checked or not - bool itemsCheckable(); + bool itemsCheckable() const; /** * @brief indexFromLayer returns the model index for a given layer */ - QModelIndex indexFromLayer( QgsMapLayer* layer ); + QModelIndex indexFromLayer( QgsMapLayer* layer ) const; protected slots: diff --git a/python/gui/qgsmaplayerproxymodel.sip b/python/gui/qgsmaplayerproxymodel.sip index 9660f612e21..2f423dae0c5 100644 --- a/python/gui/qgsmaplayerproxymodel.sip +++ b/python/gui/qgsmaplayerproxymodel.sip @@ -33,7 +33,7 @@ class QgsMapLayerProxyModel : QSortFilterProxyModel /** * @brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel */ - QgsMapLayerModel* sourceLayerModel(); + QgsMapLayerModel* sourceLayerModel() const; /** * @brief setFilters set flags that affect how layers are filtered diff --git a/src/gui/qgsmaplayercombobox.cpp b/src/gui/qgsmaplayercombobox.cpp index 01eb0065344..f4856ce9d08 100644 --- a/src/gui/qgsmaplayercombobox.cpp +++ b/src/gui/qgsmaplayercombobox.cpp @@ -48,7 +48,7 @@ void QgsMapLayerComboBox::setLayer( QgsMapLayer *layer ) emit layerChanged( currentLayer() ); } -QgsMapLayer* QgsMapLayerComboBox::currentLayer() +QgsMapLayer* QgsMapLayerComboBox::currentLayer() const { int i = currentIndex(); diff --git a/src/gui/qgsmaplayercombobox.h b/src/gui/qgsmaplayercombobox.h index 8d5648af6cb..c221cec23cd 100644 --- a/src/gui/qgsmaplayercombobox.h +++ b/src/gui/qgsmaplayercombobox.h @@ -47,7 +47,7 @@ class GUI_EXPORT QgsMapLayerComboBox : public QComboBox QgsMapLayerProxyModel::Filters filters() const { return mProxyModel->filters(); } //! currentLayer returns the current layer selected in the combo box - QgsMapLayer* currentLayer(); + QgsMapLayer* currentLayer() const; public slots: //! setLayer set the current layer selected in the combo diff --git a/src/gui/qgsmaplayermodel.cpp b/src/gui/qgsmaplayermodel.cpp index 1e0b212b0c0..9e052eaf6fc 100644 --- a/src/gui/qgsmaplayermodel.cpp +++ b/src/gui/qgsmaplayermodel.cpp @@ -70,7 +70,7 @@ QList QgsMapLayerModel::layersChecked( Qt::CheckState checkState return layers; } -QModelIndex QgsMapLayerModel::indexFromLayer( QgsMapLayer *layer ) +QModelIndex QgsMapLayerModel::indexFromLayer( QgsMapLayer *layer ) const { int r = mLayers.indexOf( layer ); return index( r, 0 ); diff --git a/src/gui/qgsmaplayermodel.h b/src/gui/qgsmaplayermodel.h index 4bad6af8776..f2bfc8a9adb 100644 --- a/src/gui/qgsmaplayermodel.h +++ b/src/gui/qgsmaplayermodel.h @@ -57,12 +57,12 @@ class GUI_EXPORT QgsMapLayerModel : public QAbstractItemModel */ QList layersChecked( Qt::CheckState checkState = Qt::Checked ); //! returns if the items can be checked or not - bool itemsCheckable() { return mItemCheckable; } + bool itemsCheckable() const { return mItemCheckable; } /** * @brief indexFromLayer returns the model index for a given layer */ - QModelIndex indexFromLayer( QgsMapLayer* layer ); + QModelIndex indexFromLayer( QgsMapLayer* layer ) const; protected slots: diff --git a/src/gui/qgsmaplayerproxymodel.cpp b/src/gui/qgsmaplayerproxymodel.cpp index 8b65482d987..c1c20295404 100644 --- a/src/gui/qgsmaplayerproxymodel.cpp +++ b/src/gui/qgsmaplayerproxymodel.cpp @@ -21,9 +21,13 @@ QgsMapLayerProxyModel::QgsMapLayerProxyModel( QObject *parent ) : QSortFilterProxyModel( parent ) , mFilters( All ) - , mModel( new QgsMapLayerModel( this ) ) + , mModel( new QgsMapLayerModel( parent ) ) { setSourceModel( mModel ); + setDynamicSortFilter( true ); + setSortLocaleAware( true ); + setFilterCaseSensitivity( Qt::CaseInsensitive ); + sort( 0 ); } QgsMapLayerProxyModel *QgsMapLayerProxyModel::setFilters( Filters filters ) @@ -79,7 +83,7 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex bool QgsMapLayerProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const { // default mode is alphabetical order - QString leftId = sourceModel()->data( left ).toString(); - QString rightId = sourceModel()->data( right ).toString(); - return QString::localeAwareCompare( leftId, rightId ) < 0; + QString leftStr = sourceModel()->data( left ).toString(); + QString rightStr = sourceModel()->data( right ).toString(); + return QString::localeAwareCompare( leftStr, rightStr ) < 0; } diff --git a/src/gui/qgsmaplayerproxymodel.h b/src/gui/qgsmaplayerproxymodel.h index c6dc5747465..13b522a542b 100644 --- a/src/gui/qgsmaplayerproxymodel.h +++ b/src/gui/qgsmaplayerproxymodel.h @@ -52,7 +52,7 @@ class GUI_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel /** * @brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel */ - QgsMapLayerModel* sourceLayerModel() { return mModel; } + QgsMapLayerModel* sourceLayerModel() const { return mModel; } /** * @brief setFilters set flags that affect how layers are filtered