X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fa4680cb38028aceb68d41e1937d27c71d1f121b..79a6e75b6567e8cf2ef677cea6bb2c34075d07c7:/src/dolphinmodel.cpp diff --git a/src/dolphinmodel.cpp b/src/dolphinmodel.cpp index f399c3304..04bf4486e 100644 --- a/src/dolphinmodel.cpp +++ b/src/dolphinmodel.cpp @@ -68,9 +68,14 @@ bool DolphinModel::setData(const QModelIndex& index, const QVariant& value, int // TODO: remove data again when items are deleted... const QPersistentModelIndex key = index; - const RevisionState state = static_cast(value.toInt()); - if (m_revisionHash.value(key, LocalRevision) != state) { - m_hasRevisionData = true; + const RevisionControlPlugin::RevisionState state = static_cast(value.toInt()); + if (m_revisionHash.value(key, RevisionControlPlugin::UnversionedRevision) != state) { + if (!m_hasRevisionData) { + connect(this, SIGNAL(rowsRemoved (const QModelIndex&, int, int)), + this, SLOT(slotRowsRemoved(const QModelIndex&, int, int))); + m_hasRevisionData = true; + } + m_revisionHash.insert(key, state); emit dataChanged(index, index); return true; @@ -91,19 +96,28 @@ QVariant DolphinModel::data(const QModelIndex& index, int role) const case Qt::DecorationRole: if (index.column() == DolphinModel::Revision) { - return m_revisionHash.value(index, LocalRevision); + return m_revisionHash.value(index, RevisionControlPlugin::UnversionedRevision); } break; case Qt::DisplayRole: if (index.column() == DolphinModel::Revision) { - switch (m_revisionHash.value(index, LocalRevision)) { - case LatestRevision: - return i18nc("@item::intable", "Latest"); - - case LocalRevision: + switch (m_revisionHash.value(index, RevisionControlPlugin::UnversionedRevision)) { + case RevisionControlPlugin::NormalRevision: + return i18nc("@item::intable", "Normal"); + case RevisionControlPlugin::UpdateRequiredRevision: + return i18nc("@item::intable", "Update required"); + case RevisionControlPlugin::LocallyModifiedRevision: + return i18nc("@item::intable", "Locally modified"); + case RevisionControlPlugin::AddedRevision: + return i18nc("@item::intable", "Added"); + case RevisionControlPlugin::RemovedRevision: + return i18nc("@item::intable", "Removed"); + case RevisionControlPlugin::ConflictingRevision: + return i18nc("@item::intable", "Conflicting"); + case RevisionControlPlugin::UnversionedRevision: default: - return i18nc("@item::intable", "Local"); + return i18nc("@item::intable", "Unversioned"); } } break; @@ -133,11 +147,27 @@ int DolphinModel::columnCount(const QModelIndex& parent) const return KDirModel::columnCount(parent) + (ExtraColumnCount - ColumnCount); } +void DolphinModel::clearRevisionData() +{ + m_revisionHash.clear(); + m_hasRevisionData = false; +} + bool DolphinModel::hasRevisionData() const { return m_hasRevisionData; } +void DolphinModel::slotRowsRemoved(const QModelIndex& parent, int start, int end) +{ + if (m_hasRevisionData) { + const int column = parent.column(); + for (int row = start; row <= end; ++row) { + m_revisionHash.remove(parent.child(row, column)); + } + } +} + QVariant DolphinModel::displayRoleData(const QModelIndex& index) const { QString retString;