20 , mModel( subType, this )
28 removeButton->setEnabled(
false );
29 mModel.setList(
list );
34 QgsListModel::QgsListModel( QVariant::Type subType, QObject *parent ) :
35 QAbstractTableModel( parent ),
40 void QgsListModel::setList(
const QVariantList &list )
47 QVariantList QgsListModel::list()
const
50 for ( QVariantList::const_iterator it = mLines.constBegin(); it != mLines.constEnd(); ++it )
53 if ( cur.convert( mSubType ) )
59 bool QgsListModel::valid()
const
61 for ( QVariantList::const_iterator it = mLines.constBegin(); it != mLines.constEnd(); ++it )
64 if ( !cur.convert( mSubType ) )
return false;
69 int QgsListModel::rowCount(
const QModelIndex &parent )
const
72 return mLines.count();
75 int QgsListModel::columnCount(
const QModelIndex &parent )
const
81 QVariant QgsListModel::headerData(
int section, Qt::Orientation orientation,
int role )
const
83 if ( orientation == Qt::Horizontal && role == Qt::DisplayRole && section == 0 )
85 return QObject::tr(
"Value" );
90 QVariant QgsListModel::data(
const QModelIndex &index,
int role )
const
92 if ( index.row() < 0 ||
93 index.row() >= mLines.count() ||
94 ( role != Qt::DisplayRole && role != Qt::EditRole ) ||
97 return QVariant( mSubType );
99 return mLines.at( index.row() );
102 bool QgsListModel::setData(
const QModelIndex &index,
const QVariant &value,
int role )
104 if ( index.row() < 0 || index.row() >= mLines.count() ||
105 index.column() != 0 || role != Qt::EditRole )
109 mLines[index.row()] = value.toString();
110 emit dataChanged( index, index );
114 Qt::ItemFlags QgsListModel::flags(
const QModelIndex &index )
const
116 return QAbstractTableModel::flags( index ) | Qt::ItemIsEditable;
119 bool QgsListModel::insertRows(
int position,
int rows,
const QModelIndex &parent )
122 beginInsertRows( QModelIndex(), position, position + rows - 1 );
123 for (
int i = 0; i < rows; ++i )
125 mLines.insert( position, QVariant( mSubType ) );
131 bool QgsListModel::removeRows(
int position,
int rows,
const QModelIndex &parent )
134 beginRemoveRows( QModelIndex(), position, position + rows - 1 );
135 for (
int i = 0; i < rows; ++i )
136 mLines.removeAt( position );