┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-07-12 14:33:26 +0000
committerPeter Penz <[email protected]>2009-07-12 14:33:26 +0000
commit01a158c9e046190f58235dab33cbfc1a423d909c (patch)
treeb3ea88da698ce1a145ad6da5c3d9c8dd996fed01
parentfa4680cb38028aceb68d41e1937d27c71d1f121b (diff)
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
-rw-r--r--src/revisioncontrolobserver.cpp6
-rw-r--r--src/revisioncontrolplugin.cpp12
-rw-r--r--src/revisioncontrolplugin.h10
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;