mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Create a sorting proxy model for bookmarks
This commit is contained in:
parent
bddc1494db
commit
5f68abfa48
@ -49,7 +49,7 @@ model data is a merge of the bookmarks stored in both managers.
|
||||
ColumnStore,
|
||||
};
|
||||
|
||||
QgsBookmarkManagerModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = 0, QObject *parent = 0 );
|
||||
QgsBookmarkManagerModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = 0, QObject *parent /TransferThis/ = 0 );
|
||||
%Docstring
|
||||
Constructor for QgsBookmarkManagerModel, associated with a main ``manager``
|
||||
(usually the application bookmark manager, accessed via QgsApplication.bookmarkManager())
|
||||
@ -75,6 +75,28 @@ and a secondary ``projectManager`` (a project based bookmark manager).
|
||||
|
||||
};
|
||||
|
||||
class QgsBookmarkManagerProxyModel : QSortFilterProxyModel
|
||||
{
|
||||
%Docstring
|
||||
|
||||
A QSortFilterProxyModel subclass for sorting the entries in a QgsBookmarkManagerModel.
|
||||
|
||||
.. versionadded:: 3.10
|
||||
%End
|
||||
|
||||
%TypeHeaderCode
|
||||
#include "qgsbookmarkmodel.h"
|
||||
%End
|
||||
public:
|
||||
|
||||
QgsBookmarkManagerProxyModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = 0, QObject *parent /TransferThis/ = 0 );
|
||||
%Docstring
|
||||
Constructor for QgsBookmarkManagerProxyModel, associated with a main ``manager``
|
||||
(usually the application bookmark manager, accessed via QgsApplication.bookmarkManager())
|
||||
and a secondary ``projectManager`` (a project based bookmark manager).
|
||||
%End
|
||||
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
* This file has been generated automatically from *
|
||||
|
@ -72,7 +72,7 @@ QgsBookmarks::QgsBookmarks( QWidget *parent )
|
||||
|
||||
mBookmarkToolbar->addWidget( btnImpExp );
|
||||
|
||||
mBookmarkModel = new QgsBookmarkManagerModel( QgsApplication::bookmarkManager(), QgsProject::instance()->bookmarkManager(), this );
|
||||
mBookmarkModel = new QgsBookmarkManagerProxyModel( QgsApplication::bookmarkManager(), QgsProject::instance()->bookmarkManager(), this );
|
||||
|
||||
lstBookmarks->setModel( mBookmarkModel );
|
||||
lstBookmarks->setItemDelegate( new QgsDoubleSpinBoxBookmarksDelegate( this ) );
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
class QgsBookmark;
|
||||
class QgsBookmarkManager;
|
||||
class QgsBookmarkManagerModel;
|
||||
class QgsBookmarkManagerProxyModel;
|
||||
|
||||
/**
|
||||
* \brief QgsDoubleSpinBoxBookmarksDelegate class shows 6 digits when value is a double
|
||||
@ -74,7 +74,7 @@ class APP_EXPORT QgsBookmarks : public QgsDockWidget, private Ui::QgsBookmarksBa
|
||||
void lstBookmarks_doubleClicked( const QModelIndex & );
|
||||
|
||||
private:
|
||||
QgsBookmarkManagerModel *mBookmarkModel = nullptr;
|
||||
QgsBookmarkManagerProxyModel *mBookmarkModel = nullptr;
|
||||
|
||||
void saveWindowLocation();
|
||||
|
||||
|
@ -361,3 +361,18 @@ QgsBookmark QgsBookmarkManagerModel::bookmarkForIndex( const QModelIndex &index
|
||||
return mProjectManager->bookmarks().at( index.row() - managerCount );
|
||||
return QgsBookmark();
|
||||
}
|
||||
|
||||
//
|
||||
// QgsBookmarkManagerProxyModel
|
||||
//
|
||||
|
||||
QgsBookmarkManagerProxyModel::QgsBookmarkManagerProxyModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager, QObject *parent )
|
||||
: QSortFilterProxyModel( parent )
|
||||
, mModel( new QgsBookmarkManagerModel( manager, projectManager, this ) )
|
||||
{
|
||||
setSourceModel( mModel );
|
||||
setDynamicSortFilter( true );
|
||||
setSortLocaleAware( true );
|
||||
setFilterCaseSensitivity( Qt::CaseInsensitive );
|
||||
sort( 0 );
|
||||
}
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "qgis_core.h"
|
||||
#include "qgis_sip.h"
|
||||
#include <QAbstractTableModel>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
class QgsBookmarkManager;
|
||||
class QgsBookmark;
|
||||
@ -70,7 +71,7 @@ class CORE_EXPORT QgsBookmarkManagerModel: public QAbstractTableModel
|
||||
* (usually the application bookmark manager, accessed via QgsApplication::bookmarkManager())
|
||||
* and a secondary \a projectManager (a project based bookmark manager).
|
||||
*/
|
||||
QgsBookmarkManagerModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = nullptr, QObject *parent = nullptr );
|
||||
QgsBookmarkManagerModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = nullptr, QObject *parent SIP_TRANSFERTHIS = nullptr );
|
||||
|
||||
int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
|
||||
int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
|
||||
@ -96,5 +97,28 @@ class CORE_EXPORT QgsBookmarkManagerModel: public QAbstractTableModel
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* \ingroup core
|
||||
* \class QgsBookmarkManagerProxyModel
|
||||
*
|
||||
* \brief A QSortFilterProxyModel subclass for sorting the entries in a QgsBookmarkManagerModel.
|
||||
*
|
||||
* \since QGIS 3.10
|
||||
*/
|
||||
class CORE_EXPORT QgsBookmarkManagerProxyModel : public QSortFilterProxyModel
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor for QgsBookmarkManagerProxyModel, associated with a main \a manager
|
||||
* (usually the application bookmark manager, accessed via QgsApplication::bookmarkManager())
|
||||
* and a secondary \a projectManager (a project based bookmark manager).
|
||||
*/
|
||||
QgsBookmarkManagerProxyModel( QgsBookmarkManager *manager, QgsBookmarkManager *projectManager = nullptr, QObject *parent SIP_TRANSFERTHIS = nullptr );
|
||||
|
||||
private:
|
||||
|
||||
QgsBookmarkManagerModel *mModel = nullptr;
|
||||
};
|
||||
|
||||
#endif // QGSBOOKMARKMODEL_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user