Skip to content

Commit 368755a

Browse files
committed
fix sorting of map layer combo box and more const correctness
1 parent 665866f commit 368755a

9 files changed

+18
-14
lines changed

python/gui/qgsmaplayercombobox.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class QgsMapLayerComboBox : QComboBox
2323
QgsMapLayerProxyModel::Filters filters() const;
2424

2525
//! currentLayer returns the current layer selected in the combo box
26-
QgsMapLayer* currentLayer();
26+
QgsMapLayer* currentLayer() const;
2727

2828
public slots:
2929
//! setLayer set the current layer selected in the combo

python/gui/qgsmaplayermodel.sip

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ class QgsMapLayerModel : QAbstractItemModel
3737
*/
3838
QList<QgsMapLayer*> layersChecked( Qt::CheckState checkState = Qt::Checked );
3939
//! returns if the items can be checked or not
40-
bool itemsCheckable();
40+
bool itemsCheckable() const;
4141

4242
/**
4343
* @brief indexFromLayer returns the model index for a given layer
4444
*/
45-
QModelIndex indexFromLayer( QgsMapLayer* layer );
45+
QModelIndex indexFromLayer( QgsMapLayer* layer ) const;
4646

4747

4848
protected slots:

python/gui/qgsmaplayerproxymodel.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class QgsMapLayerProxyModel : QSortFilterProxyModel
3333
/**
3434
* @brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel
3535
*/
36-
QgsMapLayerModel* sourceLayerModel();
36+
QgsMapLayerModel* sourceLayerModel() const;
3737

3838
/**
3939
* @brief setFilters set flags that affect how layers are filtered

src/gui/qgsmaplayercombobox.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void QgsMapLayerComboBox::setLayer( QgsMapLayer *layer )
4848
emit layerChanged( currentLayer() );
4949
}
5050

51-
QgsMapLayer* QgsMapLayerComboBox::currentLayer()
51+
QgsMapLayer* QgsMapLayerComboBox::currentLayer() const
5252
{
5353
int i = currentIndex();
5454

src/gui/qgsmaplayercombobox.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class GUI_EXPORT QgsMapLayerComboBox : public QComboBox
4747
QgsMapLayerProxyModel::Filters filters() const { return mProxyModel->filters(); }
4848

4949
//! currentLayer returns the current layer selected in the combo box
50-
QgsMapLayer* currentLayer();
50+
QgsMapLayer* currentLayer() const;
5151

5252
public slots:
5353
//! setLayer set the current layer selected in the combo

src/gui/qgsmaplayermodel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ QList<QgsMapLayer *> QgsMapLayerModel::layersChecked( Qt::CheckState checkState
7070
return layers;
7171
}
7272

73-
QModelIndex QgsMapLayerModel::indexFromLayer( QgsMapLayer *layer )
73+
QModelIndex QgsMapLayerModel::indexFromLayer( QgsMapLayer *layer ) const
7474
{
7575
int r = mLayers.indexOf( layer );
7676
return index( r, 0 );

src/gui/qgsmaplayermodel.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,12 @@ class GUI_EXPORT QgsMapLayerModel : public QAbstractItemModel
5757
*/
5858
QList<QgsMapLayer*> layersChecked( Qt::CheckState checkState = Qt::Checked );
5959
//! returns if the items can be checked or not
60-
bool itemsCheckable() { return mItemCheckable; }
60+
bool itemsCheckable() const { return mItemCheckable; }
6161

6262
/**
6363
* @brief indexFromLayer returns the model index for a given layer
6464
*/
65-
QModelIndex indexFromLayer( QgsMapLayer* layer );
65+
QModelIndex indexFromLayer( QgsMapLayer* layer ) const;
6666

6767

6868
protected slots:

src/gui/qgsmaplayerproxymodel.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@
2121
QgsMapLayerProxyModel::QgsMapLayerProxyModel( QObject *parent )
2222
: QSortFilterProxyModel( parent )
2323
, mFilters( All )
24-
, mModel( new QgsMapLayerModel( this ) )
24+
, mModel( new QgsMapLayerModel( parent ) )
2525
{
2626
setSourceModel( mModel );
27+
setDynamicSortFilter( true );
28+
setSortLocaleAware( true );
29+
setFilterCaseSensitivity( Qt::CaseInsensitive );
30+
sort( 0 );
2731
}
2832

2933
QgsMapLayerProxyModel *QgsMapLayerProxyModel::setFilters( Filters filters )
@@ -79,7 +83,7 @@ bool QgsMapLayerProxyModel::filterAcceptsRow( int source_row, const QModelIndex
7983
bool QgsMapLayerProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const
8084
{
8185
// default mode is alphabetical order
82-
QString leftId = sourceModel()->data( left ).toString();
83-
QString rightId = sourceModel()->data( right ).toString();
84-
return QString::localeAwareCompare( leftId, rightId ) < 0;
86+
QString leftStr = sourceModel()->data( left ).toString();
87+
QString rightStr = sourceModel()->data( right ).toString();
88+
return QString::localeAwareCompare( leftStr, rightStr ) < 0;
8589
}

src/gui/qgsmaplayerproxymodel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class GUI_EXPORT QgsMapLayerProxyModel : public QSortFilterProxyModel
5252
/**
5353
* @brief layerModel returns the QgsMapLayerModel used in this QSortFilterProxyModel
5454
*/
55-
QgsMapLayerModel* sourceLayerModel() { return mModel; }
55+
QgsMapLayerModel* sourceLayerModel() const { return mModel; }
5656

5757
/**
5858
* @brief setFilters set flags that affect how layers are filtered

0 commit comments

Comments
 (0)