diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/revisioncontrolobserver.cpp | 6 | ||||
| -rw-r--r-- | src/revisioncontrolplugin.cpp | 12 | ||||
| -rw-r--r-- | src/revisioncontrolplugin.h | 10 |
3 files changed, 23 insertions, 5 deletions
diff --git a/src/revisioncontrolobserver.cpp b/src/revisioncontrolobserver.cpp index 99fd61b67..f20ff996d 100644 --- a/src/revisioncontrolobserver.cpp +++ b/src/revisioncontrolobserver.cpp @@ -113,7 +113,11 @@ void RevisionControlObserver::updateItemStates() for (int row = 0; row < rowCount; ++row) { const QModelIndex index = m_dolphinModel->index(row, DolphinModel::Revision); const KFileItem item = m_dolphinModel->itemForIndex(index); - const RevisionControlPlugin::RevisionState revision = m_plugin->revisionState(item.name()); + const RevisionControlPlugin::ItemType type = item.isDir() ? + RevisionControlPlugin::Directory : + RevisionControlPlugin::File; + + const RevisionControlPlugin::RevisionState revision = m_plugin->revisionState(item.name(), type); m_dolphinModel->setData(index, QVariant(static_cast<int>(revision)), Qt::DecorationRole); } m_view->viewport()->repaint(); // TODO: this should not be necessary, as DolphinModel::setData() calls dataChanged() diff --git a/src/revisioncontrolplugin.cpp b/src/revisioncontrolplugin.cpp index 6c0f82fb8..aafe443cd 100644 --- a/src/revisioncontrolplugin.cpp +++ b/src/revisioncontrolplugin.cpp @@ -49,6 +49,7 @@ QString SubversionPlugin::fileName() const bool SubversionPlugin::beginRetrieval(const QString& directory) { Q_ASSERT(directory.endsWith('/')); + m_directory = directory; const QString path = directory + ".svn/text-base/"; QDir dir(path); @@ -71,11 +72,18 @@ void SubversionPlugin::endRetrieval() { } -RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const QString& fileName) +RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const QString& name, ItemType type) { - if (m_fileInfoHash.contains(fileName)) { + if (m_fileInfoHash.contains(name)) { // TODO... return RevisionControlPlugin::LatestRevision; + } else if (type == Directory) { + QFile file(m_directory + name + "/.svn"); + if (file.open(QIODevice::ReadOnly)) { + file.close(); + // TODO... + return RevisionControlPlugin::LatestRevision; + } } return RevisionControlPlugin::LocalRevision; diff --git a/src/revisioncontrolplugin.h b/src/revisioncontrolplugin.h index 95850711d..6cacb9224 100644 --- a/src/revisioncontrolplugin.h +++ b/src/revisioncontrolplugin.h @@ -40,6 +40,12 @@ public: // TODO... }; + enum ItemType + { + Directory, + File + }; + RevisionControlPlugin(); virtual ~RevisionControlPlugin(); @@ -72,7 +78,7 @@ public: * invoked before and that the file is part of the directory specified * in beginInfoRetrieval(). */ - virtual RevisionState revisionState(const QString& fileName) = 0; + virtual RevisionState revisionState(const QString& name, ItemType type) = 0; }; @@ -93,7 +99,7 @@ public: virtual QString fileName() const; virtual bool beginRetrieval(const QString& directory); virtual void endRetrieval(); - virtual RevisionControlPlugin::RevisionState revisionState(const QString& fileName); + virtual RevisionControlPlugin::RevisionState revisionState(const QString& name, ItemType type); private: QString m_directory; |
