1
/****************************************************************************
2
* Copyright (C) 2012 by Jens Nissen jens-chessx@gmx.net *
3
****************************************************************************/
5
#include "engineoptionmodel.h"
6
#include "engineoptiondata.h"
8
EngineOptionModel::EngineOptionModel(QObject *parent) :
9
QStandardItemModel(parent)
11
m_columnNames << tr("Name") << tr("Default") << tr("Min") << tr("Max") << tr("Value");
14
QModelIndex EngineOptionModel::index(int row, int column, const QModelIndex &parent) const
20
return createIndex(row, column, (void*) 0);
23
QModelIndex EngineOptionModel::parent(const QModelIndex &) const
28
int EngineOptionModel::rowCount(const QModelIndex &parent) const
34
return m_pOptionDataList ? m_pOptionDataList->size() : 0;
37
int EngineOptionModel::columnCount(const QModelIndex &) const
39
return m_columnNames.count();
42
bool EngineOptionModel::hasChildren(const QModelIndex &parent) const
44
return !parent.isValid();
47
QVariant EngineOptionModel::data(const QModelIndex &index, int role) const
49
if(!m_pOptionDataList || !m_pValueMap)
56
const EngineOptionData* pOptionData = &m_pOptionDataList->at(index.row());
57
Q_ASSERT(pOptionData);
58
if((role == Qt::DisplayRole) || (role == Qt::EditRole))
60
switch(index.column())
63
return pOptionData->m_name;
65
return pOptionData->m_defVal;
67
return pOptionData->m_minVal;
69
return pOptionData->m_maxVal;
71
switch(pOptionData->m_type)
74
if(m_pValueMap->contains(pOptionData->m_name))
76
return (*m_pValueMap)[pOptionData->m_name].toBool();
81
if(m_pValueMap->contains(pOptionData->m_name))
83
return (*m_pValueMap)[pOptionData->m_name].toBool();
85
return QVariant(pOptionData->m_defVal).toBool();
88
if(m_pValueMap->contains(pOptionData->m_name))
90
return (*m_pValueMap)[pOptionData->m_name].toInt();
92
return pOptionData->m_defVal.toInt();
96
if(m_pValueMap->contains(pOptionData->m_name))
98
return (*m_pValueMap)[pOptionData->m_name];
100
return pOptionData->m_defVal;
106
else if(role == Qt::BackgroundRole)
108
if(index.column() != 4)
110
return QColor(Qt::lightGray);
114
return QColor(Qt::white);
117
else if(role == Qt::ForegroundRole)
119
if(index.column() == 4)
121
if((!m_pValueMap->contains(pOptionData->m_name)
122
|| (*m_pValueMap)[pOptionData->m_name] == pOptionData->m_defVal))
124
return QColor(Qt::darkGray);
128
return QColor(Qt::black);
137
bool EngineOptionModel::setData(const QModelIndex & index, const QVariant & value, int role)
139
if(m_pOptionDataList && m_pValueMap && (role == Qt::EditRole) && index.isValid() && (index.column() == 4))
141
const EngineOptionData* pOptionData = &m_pOptionDataList->at(index.row());
142
(*m_pValueMap)[pOptionData->m_name] = value;
148
QVariant EngineOptionModel::headerData(int section, Qt::Orientation orientation, int role) const
150
if(role != Qt::DisplayRole)
155
if(orientation == Qt::Horizontal)
157
return QString("%1").arg(m_columnNames.at(section));
161
return QString("%1").arg(section);
165
void EngineOptionModel::resetModel()
171
QStringList EngineOptionModel::getSelections(const QModelIndex& index)
176
const EngineOptionData* pOptionData = &m_pOptionDataList->at(index.row());
177
return pOptionData->m_varVals;