183 lines
4.0 KiB
C++
183 lines
4.0 KiB
C++
#include "CTableModel.h"
|
|
#include "CIconActDialog.h"
|
|
|
|
CTableModel::CTableModel(QObject *parent)
|
|
: QAbstractTableModel(parent)
|
|
{
|
|
m_parent = dynamic_cast<CIconActDialog *>(parent);
|
|
m_headerList << tr("图元名称") << tr("触发动作") << tr("控制面板") << tr("默认着色策略") << tr("模拟操作");
|
|
}
|
|
|
|
const QList<ST_ICONACT> &CTableModel::getDataList()
|
|
{
|
|
return m_dataList;
|
|
}
|
|
|
|
void CTableModel::updateData(QList<ST_ICONACT> &dataList)
|
|
{
|
|
beginResetModel();
|
|
m_dataList.swap(dataList);
|
|
endResetModel();
|
|
}
|
|
|
|
void CTableModel::addRows(const QList<ST_ICONACT> &dataList)
|
|
{
|
|
if(dataList.isEmpty())
|
|
{
|
|
return;
|
|
}
|
|
beginInsertRows(QModelIndex(), rowCount(), rowCount() + dataList.length()-1);
|
|
m_dataList.append(dataList);
|
|
endInsertRows();
|
|
}
|
|
|
|
void CTableModel::removeRows(const QModelIndexList &rowIndexList)
|
|
{
|
|
beginResetModel();
|
|
for(int nIndex(rowIndexList.length()-1); nIndex>=0; nIndex--){
|
|
m_dataList.removeAt(rowIndexList[nIndex].row());
|
|
}
|
|
endResetModel();
|
|
}
|
|
|
|
void CTableModel::getExistIcon(QStringList &nameList)
|
|
{
|
|
foreach (ST_ICONACT st_icon, m_dataList) {
|
|
nameList.append(st_icon.name);
|
|
}
|
|
}
|
|
|
|
QVariant CTableModel::headerData(int section, Qt::Orientation orientation, int role) const
|
|
{
|
|
if(Qt::DisplayRole == role)
|
|
{
|
|
if(Qt::Horizontal == orientation)
|
|
{
|
|
return m_headerList.at(section);
|
|
}
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
int CTableModel::rowCount(const QModelIndex &parent) const
|
|
{
|
|
if(parent.isValid())
|
|
return 0;
|
|
|
|
return m_dataList.length();
|
|
}
|
|
|
|
int CTableModel::columnCount(const QModelIndex &parent) const
|
|
{
|
|
if(parent.isValid())
|
|
return 0;
|
|
|
|
return m_headerList.length();
|
|
}
|
|
|
|
QVariant CTableModel::data(const QModelIndex &index, int role) const
|
|
{
|
|
if(!index.isValid())
|
|
return QVariant();
|
|
|
|
if(Qt::TextAlignmentRole == role)
|
|
{
|
|
return Qt::AlignCenter;
|
|
}
|
|
\
|
|
if(Qt::DisplayRole != role)
|
|
{
|
|
return QVariant();
|
|
}
|
|
|
|
switch(index.column()){
|
|
case NAME:
|
|
{
|
|
return m_dataList.at(index.row()).name;
|
|
break;
|
|
}
|
|
case ACTION:
|
|
{
|
|
return m_parent->getActDesc( m_dataList.at(index.row()).action );
|
|
break;
|
|
}
|
|
case PANEL:
|
|
{
|
|
return m_dataList.at(index.row()).panel;
|
|
break;
|
|
}
|
|
case STRATEGY:
|
|
{
|
|
return m_dataList.at(index.row()).strategy;
|
|
break;
|
|
}
|
|
case SIMULATE:
|
|
{
|
|
return m_parent->getSimDesc( m_dataList.at(index.row()).simulate );
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
return QVariant();
|
|
}
|
|
|
|
bool CTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
|
{
|
|
if(!index.isValid())
|
|
{
|
|
return false;
|
|
}
|
|
if(Qt::DisplayRole == role)
|
|
{
|
|
switch(index.column()){
|
|
case NAME:
|
|
{
|
|
m_dataList[index.row()].name = value.toString();
|
|
break;
|
|
}
|
|
case PANEL:
|
|
{
|
|
m_dataList[index.row()].panel = value.toString();
|
|
break;
|
|
}
|
|
case STRATEGY:
|
|
{
|
|
m_dataList[index.row()].strategy = value.toString();
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
if(Qt::UserRole == role)
|
|
{
|
|
switch(index.column()){
|
|
case ACTION:
|
|
{
|
|
m_dataList[index.row()].action = value.toInt();
|
|
break;
|
|
}
|
|
case SIMULATE:
|
|
{
|
|
m_dataList[index.row()].simulate = value.toInt();
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
Qt::ItemFlags CTableModel::flags(const QModelIndex &index) const
|
|
{
|
|
if (!index.isValid())
|
|
{
|
|
return Qt::NoItemFlags;
|
|
}
|
|
|
|
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable;
|
|
}
|