mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-07-03 03:36:10 +00:00
CPropertyView: Resolve sign conversion warnings
This commit is contained in:
parent
9ddb7cc94f
commit
09058c5bfc
@ -14,7 +14,7 @@ CPropertyView::CPropertyView(QWidget *pParent)
|
|||||||
mpDelegate = new CPropertyDelegate(this);
|
mpDelegate = new CPropertyDelegate(this);
|
||||||
setItemDelegateForColumn(1, mpDelegate);
|
setItemDelegateForColumn(1, mpDelegate);
|
||||||
setEditTriggers(AllEditTriggers);
|
setEditTriggers(AllEditTriggers);
|
||||||
setModel(mpModel);
|
CPropertyView::setModel(mpModel);
|
||||||
|
|
||||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
|
||||||
@ -55,24 +55,24 @@ void CPropertyView::setModel(QAbstractItemModel *pModel)
|
|||||||
mpDelegate->SetPropertyModel(pPropModel);
|
mpDelegate->SetPropertyModel(pPropModel);
|
||||||
QTreeView::setModel(pPropModel);
|
QTreeView::setModel(pPropModel);
|
||||||
|
|
||||||
if (pPropModel)
|
if (pPropModel == nullptr)
|
||||||
{
|
return;
|
||||||
QModelIndex Root = pPropModel->index(0, 0, QModelIndex());
|
|
||||||
SetPersistentEditors(Root);
|
const QModelIndex Root = pPropModel->index(0, 0, QModelIndex());
|
||||||
setExpanded(Root, true);
|
SetPersistentEditors(Root);
|
||||||
}
|
setExpanded(Root, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CPropertyView::event(QEvent *pEvent)
|
bool CPropertyView::event(QEvent *pEvent)
|
||||||
{
|
{
|
||||||
if (pEvent->type() == QEvent::ToolTip)
|
if (pEvent->type() == QEvent::ToolTip)
|
||||||
{
|
{
|
||||||
QPoint MousePos = QCursor::pos();
|
const QPoint MousePos = QCursor::pos();
|
||||||
QModelIndex Index = indexAt(viewport()->mapFromGlobal(MousePos));
|
const QModelIndex Index = indexAt(viewport()->mapFromGlobal(MousePos));
|
||||||
|
|
||||||
if (Index.isValid())
|
if (Index.isValid())
|
||||||
{
|
{
|
||||||
QString Desc = mpModel->data(Index, Qt::ToolTipRole).toString();
|
const QString Desc = mpModel->data(Index, Qt::ToolTipRole).toString();
|
||||||
|
|
||||||
if (!Desc.isEmpty())
|
if (!Desc.isEmpty())
|
||||||
{
|
{
|
||||||
@ -86,7 +86,8 @@ bool CPropertyView::event(QEvent *pEvent)
|
|||||||
pEvent->ignore();
|
pEvent->ignore();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (pEvent->type() == QEvent::Resize && !isVisible())
|
|
||||||
|
if (pEvent->type() == QEvent::Resize && !isVisible())
|
||||||
{
|
{
|
||||||
resizeColumnToContents(0);
|
resizeColumnToContents(0);
|
||||||
}
|
}
|
||||||
@ -97,9 +98,9 @@ bool CPropertyView::event(QEvent *pEvent)
|
|||||||
int CPropertyView::sizeHintForColumn(int Column) const
|
int CPropertyView::sizeHintForColumn(int Column) const
|
||||||
{
|
{
|
||||||
if (Column == 0)
|
if (Column == 0)
|
||||||
return width() * 0.6f;
|
return static_cast<int>(width() * 0.6f);
|
||||||
else
|
else
|
||||||
return width() * 0.4f;
|
return static_cast<int>(width() * 0.4f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPropertyView::SetEditor(IEditor* pEditor)
|
void CPropertyView::SetEditor(IEditor* pEditor)
|
||||||
@ -125,7 +126,7 @@ void CPropertyView::SetInstance(CScriptObject *pObj)
|
|||||||
mpObject = pObj;
|
mpObject = pObj;
|
||||||
mpModel->SetBoldModifiedProperties(gpEdApp->CurrentGame() > EGame::Prime);
|
mpModel->SetBoldModifiedProperties(gpEdApp->CurrentGame() > EGame::Prime);
|
||||||
|
|
||||||
if (pObj)
|
if (pObj != nullptr)
|
||||||
mpModel->ConfigureScript(pObj->Area()->Entry()->Project(), pObj->Template()->Properties(), pObj);
|
mpModel->ConfigureScript(pObj->Area()->Entry()->Project(), pObj->Template()->Properties(), pObj);
|
||||||
else
|
else
|
||||||
mpModel->ConfigureScript(nullptr, nullptr, nullptr);
|
mpModel->ConfigureScript(nullptr, nullptr, nullptr);
|
||||||
@ -133,50 +134,49 @@ void CPropertyView::SetInstance(CScriptObject *pObj)
|
|||||||
SetPersistentEditors(QModelIndex());
|
SetPersistentEditors(QModelIndex());
|
||||||
|
|
||||||
// Auto-expand EditorProperties
|
// Auto-expand EditorProperties
|
||||||
QModelIndex Index = mpModel->index(0, 0, QModelIndex());
|
const QModelIndex Index = mpModel->index(0, 0, QModelIndex());
|
||||||
IProperty *pProp = mpModel->PropertyForIndex(Index, false);
|
const IProperty *pProp = mpModel->PropertyForIndex(Index, false);
|
||||||
if (pProp && pProp->ID() == 0x255A4580)
|
if (pProp != nullptr && pProp->ID() == 0x255A4580)
|
||||||
expand(Index);
|
expand(Index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPropertyView::UpdateEditorProperties(const QModelIndex& rkParent)
|
void CPropertyView::UpdateEditorProperties(const QModelIndex& rkParent)
|
||||||
{
|
{
|
||||||
// Check what game this is
|
// Check what game this is
|
||||||
EGame Game = gpEdApp->CurrentGame();
|
const EGame Game = gpEdApp->CurrentGame();
|
||||||
|
|
||||||
// Iterate over all properties and update if they're an editor property.
|
// Iterate over all properties and update if they're an editor property.
|
||||||
for (int iRow = 0; iRow < mpModel->rowCount(rkParent); iRow++)
|
for (int iRow = 0; iRow < mpModel->rowCount(rkParent); iRow++)
|
||||||
{
|
{
|
||||||
QModelIndex Index0 = mpModel->index(iRow, 0, rkParent);
|
const QModelIndex Index0 = mpModel->index(iRow, 0, rkParent);
|
||||||
QModelIndex Index1 = mpModel->index(iRow, 1, rkParent);
|
const QModelIndex Index1 = mpModel->index(iRow, 1, rkParent);
|
||||||
IProperty *pProp = mpModel->PropertyForIndex(Index0, false);
|
IProperty* pProp = mpModel->PropertyForIndex(Index0, false);
|
||||||
|
|
||||||
if (pProp)
|
if (pProp == nullptr)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// For structs, update sub-properties.
|
||||||
|
if (pProp->Type() == EPropertyType::Struct)
|
||||||
{
|
{
|
||||||
// For structs, update sub-properties.
|
const CStructProperty *pStruct = TPropCast<CStructProperty>(pProp);
|
||||||
if (pProp->Type() == EPropertyType::Struct)
|
|
||||||
|
// As an optimization, in MP2+, we don't need to update unless this is an atomic struct or if
|
||||||
|
// it's EditorProperties, because other structs never have editor properties in them.
|
||||||
|
// In MP1 this isn't the case so we need to update every struct regardless
|
||||||
|
if (Game <= EGame::Prime || (pStruct->IsAtomic() || pStruct->ID() == 0x255A4580))
|
||||||
|
UpdateEditorProperties(Index0);
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (mpObject != nullptr && mpObject->IsEditorProperty(pProp))
|
||||||
|
{
|
||||||
|
mpModel->dataChanged(Index1, Index1);
|
||||||
|
|
||||||
|
if (mpModel->rowCount(Index0) != 0)
|
||||||
{
|
{
|
||||||
CStructProperty *pStruct = TPropCast<CStructProperty>(pProp);
|
const QModelIndex SubIndexA = mpModel->index(0, 1, Index0);
|
||||||
|
const QModelIndex SubIndexB = mpModel->index(mpModel->rowCount(Index0) - 1, 1, Index0);
|
||||||
// As an optimization, in MP2+, we don't need to update unless this is an atomic struct or if
|
mpModel->dataChanged(SubIndexA, SubIndexB);
|
||||||
// it's EditorProperties, because other structs never have editor properties in them.
|
|
||||||
// In MP1 this isn't the case so we need to update every struct regardless
|
|
||||||
if ((Game <= EGame::Prime) || (pStruct->IsAtomic() || pStruct->ID() == 0x255A4580))
|
|
||||||
UpdateEditorProperties(Index0);
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (mpObject && mpObject->IsEditorProperty(pProp))
|
|
||||||
{
|
|
||||||
mpModel->dataChanged(Index1, Index1);
|
|
||||||
|
|
||||||
if (mpModel->rowCount(Index0) != 0)
|
|
||||||
{
|
|
||||||
QModelIndex SubIndexA = mpModel->index(0, 1, Index0);
|
|
||||||
QModelIndex SubIndexB = mpModel->index(mpModel->rowCount(Index0) - 1, 1, Index0);
|
|
||||||
mpModel->dataChanged(SubIndexA, SubIndexB);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,17 +184,17 @@ void CPropertyView::UpdateEditorProperties(const QModelIndex& rkParent)
|
|||||||
|
|
||||||
void CPropertyView::SetPersistentEditors(const QModelIndex& rkParent)
|
void CPropertyView::SetPersistentEditors(const QModelIndex& rkParent)
|
||||||
{
|
{
|
||||||
uint32 NumChildren = mpModel->rowCount(rkParent);
|
const int NumChildren = mpModel->rowCount(rkParent);
|
||||||
|
|
||||||
for (uint32 iChild = 0; iChild < NumChildren; iChild++)
|
for (int iChild = 0; iChild < NumChildren; iChild++)
|
||||||
{
|
{
|
||||||
QModelIndex ChildIndex = mpModel->index(iChild, 1, rkParent);
|
const QModelIndex ChildIndex = mpModel->index(iChild, 1, rkParent);
|
||||||
IProperty *pProp = mpModel->PropertyForIndex(ChildIndex, false);
|
IProperty *pProp = mpModel->PropertyForIndex(ChildIndex, false);
|
||||||
EPropertyType Type = (pProp ? pProp->Type() : EPropertyType::Invalid);
|
EPropertyType Type = (pProp ? pProp->Type() : EPropertyType::Invalid);
|
||||||
bool IsAnimSet = false;
|
bool IsAnimSet = false;
|
||||||
|
|
||||||
// Handle persistent editors under character properties
|
// Handle persistent editors under character properties
|
||||||
if (!pProp && ChildIndex.internalId() & 0x80000000)
|
if (!pProp && (ChildIndex.internalId() & 0x80000000) != 0)
|
||||||
{
|
{
|
||||||
pProp = mpModel->PropertyForIndex(ChildIndex, true);
|
pProp = mpModel->PropertyForIndex(ChildIndex, true);
|
||||||
|
|
||||||
@ -226,7 +226,9 @@ void CPropertyView::SetPersistentEditors(const QModelIndex& rkParent)
|
|||||||
case EPropertyType::Struct:
|
case EPropertyType::Struct:
|
||||||
setFirstColumnSpanned(iChild, rkParent, true);
|
setFirstColumnSpanned(iChild, rkParent, true);
|
||||||
break;
|
break;
|
||||||
default: break;
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isExpanded(ChildIndex))
|
if (isExpanded(ChildIndex))
|
||||||
@ -236,11 +238,11 @@ void CPropertyView::SetPersistentEditors(const QModelIndex& rkParent)
|
|||||||
|
|
||||||
void CPropertyView::ClosePersistentEditors(const QModelIndex& rkIndex)
|
void CPropertyView::ClosePersistentEditors(const QModelIndex& rkIndex)
|
||||||
{
|
{
|
||||||
uint32 NumChildren = mpModel->rowCount(rkIndex);
|
const int NumChildren = mpModel->rowCount(rkIndex);
|
||||||
|
|
||||||
for (uint32 iChild = 0; iChild < NumChildren; iChild++)
|
for (int iChild = 0; iChild < NumChildren; iChild++)
|
||||||
{
|
{
|
||||||
QModelIndex ChildIndex = mpModel->index(iChild, 1, rkIndex);
|
const QModelIndex ChildIndex = mpModel->index(iChild, 1, rkIndex);
|
||||||
closePersistentEditor(ChildIndex);
|
closePersistentEditor(ChildIndex);
|
||||||
|
|
||||||
if (mpModel->rowCount(ChildIndex) != 0)
|
if (mpModel->rowCount(ChildIndex) != 0)
|
||||||
@ -271,7 +273,7 @@ void CPropertyView::RefreshView()
|
|||||||
|
|
||||||
void CPropertyView::CreateContextMenu(const QPoint& rkPos)
|
void CPropertyView::CreateContextMenu(const QPoint& rkPos)
|
||||||
{
|
{
|
||||||
QModelIndex Index = indexAt(rkPos);
|
const QModelIndex Index = indexAt(rkPos);
|
||||||
|
|
||||||
if (Index.isValid() && Index.column() == 0)
|
if (Index.isValid() && Index.column() == 0)
|
||||||
{
|
{
|
||||||
@ -298,14 +300,14 @@ void CPropertyView::CreateContextMenu(const QPoint& rkPos)
|
|||||||
|
|
||||||
if (!pProperty->IsRootParent())
|
if (!pProperty->IsRootParent())
|
||||||
{
|
{
|
||||||
QString TypeName = TO_QSTRING( pProperty->Parent()->RootArchetype()->Name() );
|
const QString TypeName = TO_QSTRING(pProperty->Parent()->RootArchetype()->Name());
|
||||||
mpGenNamesForSiblingsAction->setText(tr("Generate names for %1 properties").arg(TypeName));
|
mpGenNamesForSiblingsAction->setText(tr("Generate names for %1 properties").arg(TypeName));
|
||||||
Menu.addAction(mpGenNamesForSiblingsAction);
|
Menu.addAction(mpGenNamesForSiblingsAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pProperty->Type() == EPropertyType::Struct && !pProperty->IsAtomic())
|
if (pProperty->Type() == EPropertyType::Struct && !pProperty->IsAtomic())
|
||||||
{
|
{
|
||||||
QString TypeName = TO_QSTRING( pProperty->RootArchetype()->Name() );
|
const QString TypeName = TO_QSTRING(pProperty->RootArchetype()->Name());
|
||||||
mpGenNamesForChildrenAction->setText(tr("Generate names for %1 properties").arg(TypeName));
|
mpGenNamesForChildrenAction->setText(tr("Generate names for %1 properties").arg(TypeName));
|
||||||
Menu.addAction(mpGenNamesForChildrenAction);
|
Menu.addAction(mpGenNamesForChildrenAction);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user