viewsdialog:provide data changed roles

work/spdx
Michail Vourlakos 4 years ago
parent 2e399fb225
commit 6351d4e892

@ -316,6 +316,9 @@ bool Views::setData(const QModelIndex &index, const QVariant &value, int role)
QVector<int> roles;
roles << role;
roles << ISCHANGEDROLE;
roles << HASCHANGEDVIEWROLE;
if (role != Qt::DisplayRole) {
roles << Qt::DisplayRole;
}
@ -413,6 +416,10 @@ QVariant Views::data(const QModelIndex &index, int role) const
return QVariant{};
}
bool isNewView = !o_viewsTable.containsId(m_viewsTable[row].id);
QString origviewid = !isNewView ? m_viewsTable[row].id : "";
if (role == IDROLE) {
return (m_viewsTable[row].state() == Data::View::IsCreated ? m_viewsTable[row].id : "#");
} else if (role == ISACTIVEROLE) {
@ -436,9 +443,10 @@ QVariant Views::data(const QModelIndex &index, int role) const
} else if (column == ALIGNMENTCOLUMN) {
return isVertical(m_viewsTable[row].edge) ? s_verticalAlignments : s_horizontalAlignments;
}
} else if (role == HASCHANGEDVIEWROLE) {
return (isNewView || (m_viewsTable[row] != o_viewsTable[origviewid]));
}
if (role == Qt::TextAlignmentRole && column != NAMECOLUMN){
return static_cast<Qt::Alignment::Int>(Qt::AlignHCenter | Qt::AlignVCenter);
}
@ -449,11 +457,15 @@ QVariant Views::data(const QModelIndex &index, int role) const
return (m_viewsTable[row].state() == Data::View::IsCreated ? m_viewsTable[row].id : "#");
} else if (role == Qt::UserRole) {
return m_viewsTable[row].id;
} else if (role == ISCHANGEDROLE) {
return (isNewView || (m_viewsTable[row].id != o_viewsTable[origviewid].id));
}
break;
case NAMECOLUMN:
if (role == Qt::DisplayRole || role == Qt::UserRole || role == Qt::EditRole){
return m_viewsTable[row].name;
} else if (role == ISCHANGEDROLE) {
return (isNewView || (m_viewsTable[row].name != o_viewsTable[origviewid].name));
}
break;
case SCREENCOLUMN:
@ -470,6 +482,10 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
} else if (role == Qt::UserRole) {
return m_viewsTable[row].onPrimary ? QString::number(Data::Screen::ONPRIMARYID) : QString::number(m_viewsTable[row].screen);
} else if (role == ISCHANGEDROLE) {
return (isNewView
|| (m_viewsTable[row].onPrimary != o_viewsTable[origviewid].onPrimary)
|| (!m_viewsTable[row].onPrimary && m_viewsTable[row].screen != o_viewsTable[origviewid].screen));
}
break;
case EDGECOLUMN:
@ -487,6 +503,8 @@ QVariant Views::data(const QModelIndex &index, int role) const
return QString("Unknown");
} else if (role == Qt::UserRole) {
return QString::number(m_viewsTable[row].edge);
} else if (role == ISCHANGEDROLE) {
return (isNewView || (m_viewsTable[row].edge != o_viewsTable[origviewid].edge));
}
break;
case ALIGNMENTCOLUMN:
@ -508,6 +526,8 @@ QVariant Views::data(const QModelIndex &index, int role) const
return QString("Unknown");
} else if (role == Qt::UserRole) {
return QString::number(m_viewsTable[row].alignment);
} else if (role == ISCHANGEDROLE) {
return (isNewView || (m_viewsTable[row].alignment != o_viewsTable[origviewid].alignment));
}
break;
case SUBCONTAINMENTSCOLUMN:
@ -531,6 +551,8 @@ QVariant Views::data(const QModelIndex &index, int role) const
}
return QString();
} else if (role == ISCHANGEDROLE) {
return (isNewView || (m_viewsTable[row].subcontainments != o_viewsTable[origviewid].subcontainments));
}
};

@ -57,6 +57,8 @@ public:
IDROLE = Qt::UserRole + 1,
NAMEROLE,
ISACTIVEROLE,
ISCHANGEDROLE,
HASCHANGEDVIEWROLE,
CHOICESROLE,
SORTINGROLE
};

Loading…
Cancel
Save