X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fa4680cb38028aceb68d41e1937d27c71d1f121b..d35964345eeeeaf261ecbd9679b752db6eb49e8f:/src/dolphinmodel.cpp diff --git a/src/dolphinmodel.cpp b/src/dolphinmodel.cpp index f399c3304..3467c8a38 100644 --- a/src/dolphinmodel.cpp +++ b/src/dolphinmodel.cpp @@ -24,14 +24,6 @@ #include "kcategorizedview.h" -#include -#ifdef HAVE_NEPOMUK -#include -#include -#include -#include -#endif - #include #include #include @@ -53,7 +45,7 @@ const char* DolphinModel::m_others = I18N_NOOP2("@title:group Name", "Others"); DolphinModel::DolphinModel(QObject* parent) : KDirModel(parent), - m_hasRevisionData(false), + m_hasVersionData(false), m_revisionHash() { } @@ -64,13 +56,18 @@ DolphinModel::~DolphinModel() bool DolphinModel::setData(const QModelIndex& index, const QVariant& value, int role) { - if ((index.column() == DolphinModel::Revision) && (role == Qt::DecorationRole)) { + if ((index.column() == DolphinModel::Version) && (role == Qt::DecorationRole)) { // 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 KVersionControlPlugin::VersionState state = static_cast(value.toInt()); + if (m_revisionHash.value(key, KVersionControlPlugin::UnversionedVersion) != state) { + if (!m_hasVersionData) { + connect(this, SIGNAL(rowsRemoved (const QModelIndex&, int, int)), + this, SLOT(slotRowsRemoved(const QModelIndex&, int, int))); + m_hasVersionData = true; + } + m_revisionHash.insert(key, state); emit dataChanged(index, index); return true; @@ -90,20 +87,29 @@ QVariant DolphinModel::data(const QModelIndex& index, int role) const return sortRoleData(index); case Qt::DecorationRole: - if (index.column() == DolphinModel::Revision) { - return m_revisionHash.value(index, LocalRevision); + if (index.column() == DolphinModel::Version) { + return m_revisionHash.value(index, KVersionControlPlugin::UnversionedVersion); } break; case Qt::DisplayRole: - if (index.column() == DolphinModel::Revision) { - switch (m_revisionHash.value(index, LocalRevision)) { - case LatestRevision: - return i18nc("@item::intable", "Latest"); - - case LocalRevision: + if (index.column() == DolphinModel::Version) { + switch (m_revisionHash.value(index, KVersionControlPlugin::UnversionedVersion)) { + case KVersionControlPlugin::NormalVersion: + return i18nc("@item::intable", "Normal"); + case KVersionControlPlugin::UpdateRequiredVersion: + return i18nc("@item::intable", "Update required"); + case KVersionControlPlugin::LocallyModifiedVersion: + return i18nc("@item::intable", "Locally modified"); + case KVersionControlPlugin::AddedVersion: + return i18nc("@item::intable", "Added"); + case KVersionControlPlugin::RemovedVersion: + return i18nc("@item::intable", "Removed"); + case KVersionControlPlugin::ConflictingVersion: + return i18nc("@item::intable", "Conflicting"); + case KVersionControlPlugin::UnversionedVersion: default: - return i18nc("@item::intable", "Local"); + return i18nc("@item::intable", "Unversioned"); } } break; @@ -122,8 +128,8 @@ QVariant DolphinModel::headerData(int section, Qt::Orientation orientation, int return KDirModel::headerData(section, orientation, role); } - Q_ASSERT(section == DolphinModel::Revision); - return i18nc("@title::column", "Revision"); + Q_ASSERT(section == DolphinModel::Version); + return i18nc("@title::column", "Version"); } return QVariant(); } @@ -133,9 +139,25 @@ int DolphinModel::columnCount(const QModelIndex& parent) const return KDirModel::columnCount(parent) + (ExtraColumnCount - ColumnCount); } -bool DolphinModel::hasRevisionData() const +void DolphinModel::clearVersionData() +{ + m_revisionHash.clear(); + m_hasVersionData = false; +} + +bool DolphinModel::hasVersionData() const { - return m_hasRevisionData; + return m_hasVersionData; +} + +void DolphinModel::slotRowsRemoved(const QModelIndex& parent, int start, int end) +{ + if (m_hasVersionData) { + 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 @@ -187,11 +209,7 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const } } - if (!validCategory) { - retString = validCategory ? *currA : i18nc("@title:group Name", m_others); - } else { - retString = *currA; - } + retString = validCategory ? *currA : i18nc("@title:group Name", m_others); } } break; @@ -339,7 +357,7 @@ QVariant DolphinModel::displayRoleData(const QModelIndex& index) const retString = item.mimeComment(); break; - case DolphinModel::Revision: + case DolphinModel::Version: retString = "test"; break; } @@ -363,7 +381,7 @@ QVariant DolphinModel::sortRoleData(const QModelIndex& index) const retVariant = data(index, KCategorizedSortFilterProxyModel::CategoryDisplayRole); if (retVariant == i18nc("@title:group Name", m_others)) { // assure that the "Others" group is always the last categorization - retVariant = QString(QChar(QChar::ReplacementCharacter)); + retVariant = QString('Z').append(QChar::ReplacementCharacter); } break; }