File indexing completed on 2025-04-20 13:31:30
0001 #include "model/genericmodel.h" 0002 #include "data/character.h" 0003 0004 GenericModel::GenericModel(QStringList cols, QVector<int> readOnlyCols, QObject* parent) 0005 : QAbstractTableModel(parent), m_columnList(cols), m_readOnlyCols(readOnlyCols) 0006 { 0007 } 0008 0009 QVariant GenericModel::headerData(int section, Qt::Orientation orientation, int role) const 0010 { 0011 if(orientation == Qt::Horizontal && Qt::DisplayRole == role) 0012 { 0013 return m_columnList[section]; 0014 } 0015 return QVariant(); 0016 } 0017 0018 int GenericModel::rowCount(const QModelIndex& parent) const 0019 { 0020 if(parent.isValid()) 0021 return 0; 0022 0023 return m_data.size(); 0024 } 0025 0026 int GenericModel::columnCount(const QModelIndex& parent) const 0027 { 0028 if(parent.isValid()) 0029 return 0; 0030 0031 return m_columnList.size(); 0032 } 0033 0034 QVariant GenericModel::data(const QModelIndex& index, int role) const 0035 { 0036 if(!index.isValid()) 0037 return QVariant(); 0038 0039 auto item= m_data.at(index.row()); 0040 0041 return item->getData(index.column(), role); 0042 } 0043 0044 bool GenericModel::setData(const QModelIndex& index, const QVariant& value, int role) 0045 { 0046 if(!index.isValid()) 0047 return false; 0048 0049 auto item= m_data.at(index.row()); 0050 if(item->setData(index.column(), value, role)) 0051 { 0052 emit dataChanged(index, index, QVector<int>() << role); 0053 return true; 0054 } 0055 return false; 0056 } 0057 0058 Qt::ItemFlags GenericModel::flags(const QModelIndex& index) const 0059 { 0060 if(!index.isValid()) 0061 return Qt::NoItemFlags; 0062 0063 if(m_readOnlyCols.contains(index.column())) 0064 return Qt::ItemIsSelectable | Qt::ItemIsEnabled; 0065 0066 return Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled; 0067 } 0068 0069 void GenericModel::addData(CharacterField* item) 0070 { 0071 beginInsertRows(QModelIndex(), m_data.size(), m_data.size()); 0072 m_data.append(item); 0073 endInsertRows(); 0074 } 0075 0076 void GenericModel::removeData(const QModelIndex& index) 0077 { 0078 if(!index.isValid()) 0079 return; 0080 0081 beginRemoveRows(QModelIndex(), index.row(), index.row()); 0082 m_data.removeAt(index.row()); 0083 endRemoveRows(); 0084 } 0085 0086 QList<CharacterField*>::iterator GenericModel::begin() 0087 { 0088 return m_data.begin(); 0089 } 0090 0091 QList<CharacterField*>::iterator GenericModel::end() 0092 { 0093 return m_data.end(); 0094 } 0095 0096 void GenericModel::resetData(QList<CharacterField*> list) 0097 { 0098 beginResetModel(); 0099 m_data.clear(); 0100 m_data << list; 0101 endResetModel(); 0102 } 0103 0104 const QList<CharacterField*>& GenericModel::fields() const 0105 { 0106 return m_data; 0107 }