Add some custom roles to model

This commit is contained in:
Nyall Dawson 2019-09-04 08:19:08 +10:00
parent 1afa6a8ec5
commit c46721559b
4 changed files with 46 additions and 0 deletions

View File

@ -29,6 +29,14 @@ model data is a merge of the bookmarks stored in both managers.
%End
public:
enum CustomRoles
{
RoleExtent,
RoleName,
RoleId,
RoleGroup,
};
enum Columns
{
ColumnName,

View File

@ -51,6 +51,18 @@ QVariant QgsBookmarkManagerModel::data( const QModelIndex &index, int role ) con
switch ( role )
{
case RoleExtent:
return b.extent();
case RoleName:
return b.name();
case RoleId:
return b.id();
case RoleGroup:
return b.group();
case Qt::DisplayRole:
case Qt::EditRole:
{

View File

@ -43,6 +43,15 @@ class CORE_EXPORT QgsBookmarkManagerModel: public QAbstractTableModel
public:
//! Custom model roles
enum CustomRoles
{
RoleExtent = Qt::UserRole, //!< Bookmark extent as a QgsReferencedRectangle
RoleName, //!< Bookmark name
RoleId, //!< Bookmark ID
RoleGroup, //!< Bookmark group
};
//! Model columns
enum Columns
{

View File

@ -54,6 +54,7 @@ class TestQgsBookmarkManagerModel(unittest.TestCase):
self.assertFalse(model.data(model.index(-1, 0)))
self.assertFalse(model.data(model.index(1, 0)))
self.assertFalse(model.data(model.index(0, 0)))
self.assertFalse(model.data(model.index(0, 0), QgsBookmarkManagerModel.RoleName))
self.assertEqual(model.headerData(0, Qt.Horizontal), 'Name')
self.assertEqual(model.headerData(9, Qt.Horizontal), 10)
@ -92,6 +93,12 @@ class TestQgsBookmarkManagerModel(unittest.TestCase):
self.assertEqual(model.data(model.index(0, 6)), 'EPSG:4326')
self.assertEqual(model.data(model.index(0, 7)), None)
self.assertEqual(model.data(model.index(0, 7), Qt.CheckStateRole), Qt.Unchecked)
self.assertEqual(model.data(model.index(0, 0), QgsBookmarkManagerModel.RoleName), 'b1')
self.assertEqual(model.data(model.index(0, 0), QgsBookmarkManagerModel.RoleGroup), 'group 1')
id = model.data(model.index(0, 0), QgsBookmarkManagerModel.RoleId)
self.assertEqual(app_manager.bookmarkById(id).name(), 'b1')
self.assertEqual(model.data(model.index(0, 0), QgsBookmarkManagerModel.RoleExtent), app_manager.bookmarkById(id).extent())
self.assertEqual(model.data(model.index(1, 0)), 'b2')
self.assertEqual(model.data(model.index(1, 1)), 'group 2')
self.assertEqual(model.data(model.index(1, 2)), 12.0)
@ -101,6 +108,11 @@ class TestQgsBookmarkManagerModel(unittest.TestCase):
self.assertEqual(model.data(model.index(1, 6)), 'EPSG:4326')
self.assertEqual(model.data(model.index(1, 7)), None)
self.assertEqual(model.data(model.index(1, 7), Qt.CheckStateRole), Qt.Unchecked)
self.assertEqual(model.data(model.index(1, 0), QgsBookmarkManagerModel.RoleName), 'b2')
self.assertEqual(model.data(model.index(1, 0), QgsBookmarkManagerModel.RoleGroup), 'group 2')
id = model.data(model.index(1, 0), QgsBookmarkManagerModel.RoleId)
self.assertEqual(app_manager.bookmarkById(id).name(), 'b2')
self.assertEqual(model.data(model.index(1, 0), QgsBookmarkManagerModel.RoleExtent), app_manager.bookmarkById(id).extent())
self.assertFalse(model.data(model.index(2, 0)))
self.assertFalse(model.setData(model.index(-1, 0), 4, Qt.EditRole))
@ -171,6 +183,11 @@ class TestQgsBookmarkManagerModel(unittest.TestCase):
self.assertEqual(model.data(model.index(2, 6)), 'EPSG:28355')
self.assertEqual(model.data(model.index(2, 7)), None)
self.assertEqual(model.data(model.index(2, 7), Qt.CheckStateRole), Qt.Checked)
self.assertEqual(model.data(model.index(2, 0), QgsBookmarkManagerModel.RoleName), 'b3')
self.assertEqual(model.data(model.index(2, 0), QgsBookmarkManagerModel.RoleGroup), 'group 3')
id = model.data(model.index(2, 0), QgsBookmarkManagerModel.RoleId)
self.assertEqual(project_manager.bookmarkById(id).name(), 'b3')
self.assertEqual(model.data(model.index(2, 0), QgsBookmarkManagerModel.RoleExtent), project_manager.bookmarkById(id).extent())
self.assertFalse(model.data(model.index(3, 0)))
self.assertTrue(model.setData(model.index(2, 0), 'new name 2', Qt.EditRole))