21 : QAbstractItemModel( parent )
27 Q_ASSERT( mConnection );
32 : QAbstractItemModel( parent )
33 , mConnection( connection )
35 Q_ASSERT( mConnection );
39 void QgsDatabaseSchemaModel::init()
41 Q_ASSERT( mConnection->capabilities() & QgsAbstractDatabaseProviderConnection::Capability::Schemas );
42 mSchemas = mConnection->schemas();
57 return mSchemas.count() + ( mAllowEmpty ? 1 : 0 );
69 if ( !
index.isValid() )
72 if (
index.row() == 0 && mAllowEmpty )
80 const QString schemaName = mSchemas.value(
index.row() - ( mAllowEmpty ? 1 : 0 ) );
99 if ( hasIndex( row, column,
parent ) )
101 return createIndex( row, column, row );
104 return QModelIndex();
109 if ( allowEmpty == mAllowEmpty )
114 beginInsertRows( QModelIndex(), 0, 0 );
120 beginRemoveRows( QModelIndex(), 0, 0 );
128 const QStringList newSchemas = mConnection->schemas();
129 const QStringList oldSchemas = mSchemas;
131 for (
const QString &oldSchema : oldSchemas )
133 if ( !newSchemas.contains( oldSchema ) )
135 const int r = mSchemas.indexOf( oldSchema ) ;
136 beginRemoveRows( QModelIndex(), r + ( mAllowEmpty ? 1 : 0 ), r + ( mAllowEmpty ? 1 : 0 ) );
137 mSchemas.removeAt( r );
142 for (
const QString &newSchema : newSchemas )
144 if ( !mSchemas.contains( newSchema ) )
146 beginInsertRows( QModelIndex(), mSchemas.count() + ( mAllowEmpty ? 1 : 0 ), mSchemas.count() + ( mAllowEmpty ? 1 : 0 ) );
147 mSchemas.append( newSchema );