System : Performance improvements for TableViewModel

This commit is contained in:
Magne Sjaastad 2015-10-23 11:25:59 +02:00
parent c4f3870cc9
commit e063518460
2 changed files with 14 additions and 44 deletions

View File

@ -23,8 +23,6 @@ add_subdirectory(cafTests/cafTestApplication)
add_subdirectory (cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests) add_subdirectory (cafProjectDataModel/cafPdmCore/cafPdmCore_UnitTests)
add_subdirectory (cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests) add_subdirectory (cafProjectDataModel/cafPdmXml/cafPdmXml_UnitTests)
add_subdirectory (cafUserInterface/cafUserInterface_UnitTests)
# Organize sub-projects into folders on Visual Studio # Organize sub-projects into folders on Visual Studio
# Turn on using solution folders # Turn on using solution folders
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY USE_FOLDERS ON)

View File

@ -194,14 +194,13 @@ QVariant PdmUiTableViewModel::data(const QModelIndex &index, int role /*= Qt::Di
QList<PdmOptionItemInfo> valueOptions = uiFieldHandle->valueOptions(&fromMenuOnly); QList<PdmOptionItemInfo> valueOptions = uiFieldHandle->valueOptions(&fromMenuOnly);
if (!valueOptions.isEmpty()) if (!valueOptions.isEmpty())
{ {
QStringList uiTexts = PdmOptionItemInfo::extractUiTexts(valueOptions);
int listIndex = uiFieldHandle->uiValue().toInt(); int listIndex = uiFieldHandle->uiValue().toInt();
if (listIndex == -1) if (listIndex == -1)
{ {
return ""; return "";
} }
return uiTexts.at(listIndex); return valueOptions[listIndex].optionUiText;
} }
QVariant val; QVariant val;
@ -280,15 +279,9 @@ void PdmUiTableViewModel::setPdmData(PdmChildArrayFieldHandle* listField, const
PdmUiOrdering config; PdmUiOrdering config;
std::vector<PdmObjectHandle*> listObjects; if (m_pdmList && m_pdmList->size() > 0)
if (listField)
{ {
listField->childObjects(&listObjects); PdmObjectHandle* firstObject = m_pdmList->at(0);
}
if (listObjects.size() > 0)
{
PdmObjectHandle* firstObject = listObjects[0];
PdmUiObjectHandle* uiObject = uiObj(firstObject); PdmUiObjectHandle* uiObject = uiObj(firstObject);
if (uiObject) if (uiObject)
@ -406,15 +399,9 @@ void PdmUiTableViewModel::setPdmData(PdmChildArrayFieldHandle* listField, const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmFieldHandle* PdmUiTableViewModel::getField(const QModelIndex &index) const PdmFieldHandle* PdmUiTableViewModel::getField(const QModelIndex &index) const
{ {
std::vector<PdmObjectHandle*> listObjects; if (m_pdmList && index.row() < static_cast<int>(m_pdmList->size()))
if (m_pdmList)
{ {
m_pdmList->childObjects(&listObjects); PdmObjectHandle* pdmObject = m_pdmList->at(index.row());
}
if (index.row() < static_cast<int>(listObjects.size()))
{
PdmObjectHandle* pdmObject = listObjects[index.row()];
if (pdmObject) if (pdmObject)
{ {
std::vector<PdmFieldHandle*> fields; std::vector<PdmFieldHandle*> fields;
@ -506,33 +493,24 @@ void PdmUiTableViewModel::recreateTableItemEditors()
} }
m_tableItemEditors.clear(); m_tableItemEditors.clear();
std::vector<PdmObjectHandle*> listObjects;
if (m_pdmList) if (m_pdmList)
{ {
m_pdmList->childObjects(&listObjects); for (size_t i = 0; i < m_pdmList->size(); i++)
}
for (size_t i = 0; i < listObjects.size(); i++)
{ {
PdmObjectHandle* pdmObject = listObjects[i]; PdmObjectHandle* pdmObject = m_pdmList->at(i);
m_tableItemEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast<int>(i))); m_tableItemEditors.push_back(new PdmUiTableItemEditor(this, pdmObject, static_cast<int>(i)));
} }
} }
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
PdmObjectHandle* PdmUiTableViewModel::pdmObjectForRow(int row) const PdmObjectHandle* PdmUiTableViewModel::pdmObjectForRow(int row) const
{ {
std::vector<PdmObjectHandle*> listObjects; if (m_pdmList && row < m_pdmList->size())
if (m_pdmList)
{ {
m_pdmList->childObjects(&listObjects); return m_pdmList->at(row);
}
if (row < static_cast<int>(listObjects.size()))
{
return listObjects[row];
} }
return NULL; return NULL;
@ -580,15 +558,9 @@ QItemSelection PdmUiTableViewModel::modelIndexFromPdmObject(PdmObjectHandle* pdm
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
int PdmUiTableViewModel::getFieldIndex(PdmFieldHandle* field) const int PdmUiTableViewModel::getFieldIndex(PdmFieldHandle* field) const
{ {
std::vector<PdmObjectHandle*> listObjects; if (m_pdmList && m_pdmList->size() > 0)
if (m_pdmList)
{ {
m_pdmList->childObjects(&listObjects); PdmObjectHandle* pdmObject = m_pdmList->at(0);
}
if (listObjects.size() > 0)
{
PdmObjectHandle* pdmObject = listObjects[0];
if (pdmObject) if (pdmObject)
{ {
std::vector<PdmFieldHandle*> fields; std::vector<PdmFieldHandle*> fields;