From: Peter Penz Date: Sun, 12 Jul 2009 14:33:26 +0000 (+0000) Subject: The information whether an item is a file or a directory is already known by Dolphin... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/01a158c9e046190f58235dab33cbfc1a423d909c The information whether an item is a file or a directory is already known by Dolphin and might be useful for revision control plugins. svn path=/trunk/KDE/kdebase/apps/; revision=995365 --- 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(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;