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

Loading…
Cancel
Save