fix sorting of map layer combo box and more const correctness

This commit is contained in:
Denis Rouzaud 2014-09-02 08:10:32 +02:00
parent 665866f1a6
commit 368755a51a
9 changed files with 18 additions and 14 deletions

View File

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

View File

@ -37,12 +37,12 @@ class QgsMapLayerModel : QAbstractItemModel
*/
QList<QgsMapLayer*> 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:

View File

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

View File

@ -48,7 +48,7 @@ void QgsMapLayerComboBox::setLayer( QgsMapLayer *layer )
emit layerChanged( currentLayer() );
}
QgsMapLayer* QgsMapLayerComboBox::currentLayer()
QgsMapLayer* QgsMapLayerComboBox::currentLayer() const
{
int i = currentIndex();

View File

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

View File

@ -70,7 +70,7 @@ QList<QgsMapLayer *> 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 );

View File

@ -57,12 +57,12 @@ class GUI_EXPORT QgsMapLayerModel : public QAbstractItemModel
*/
QList<QgsMapLayer*> 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:

View File

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

View File

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