]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/revisioncontrolplugin.cpp
When pressing a key after entering a directory, QAbstractItemView::scrollTo() must...
[dolphin.git] / src / revisioncontrolplugin.cpp
index 6c0f82fb8294500246c9a5e1885ac84891c04d38..dde8d86654dfe83fe36a39b9dce2c331b7b9f98f 100644 (file)
 
 #include "revisioncontrolplugin.h"
 
+#include <kfileitem.h>
 #include <QDir>
+#include <QString>
+#include <QTextStream>
 
 RevisionControlPlugin::RevisionControlPlugin()
 {
@@ -33,7 +36,7 @@ RevisionControlPlugin::~RevisionControlPlugin()
 
 SubversionPlugin::SubversionPlugin() :
     m_directory(),
-    m_fileInfoHash()
+    m_revisionInfoHash()
 {
 }
 
@@ -49,31 +52,38 @@ QString SubversionPlugin::fileName() const
 bool SubversionPlugin::beginRetrieval(const QString& directory)
 {
     Q_ASSERT(directory.endsWith('/'));
-    const QString path = directory + ".svn/text-base/";
+    m_directory = directory;
 
-    QDir dir(path);
-    const QFileInfoList fileInfoList = dir.entryInfoList();
-    const int size = fileInfoList.size();
+    QFile file(directory + ".svn/entries");
+    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+        return false;
+    }
+
+    QTextStream in(&file);
     QString fileName;
-    for (int i = 0; i < size; ++i) {
-        fileName = fileInfoList.at(i).fileName();
-        // Remove the ".svn-base" postfix to be able to compare the filenames
-        // in a fast way in SubversionPlugin::revisionState().
-        fileName.chop(sizeof(".svn-base") / sizeof(char) - 1);
-        if (!fileName.isEmpty()) {
-            m_fileInfoHash.insert(fileName, fileInfoList.at(i));
+    QString line;
+    while (!in.atEnd()) {
+        fileName = line;
+        line = in.readLine();
+        const bool isRevisioned = !line.isEmpty() &&
+                                  ((line == QLatin1String("dir")) ||
+                                   (line == QLatin1String("file")));
+        if (isRevisioned) {
+            RevisionInfo info; // TODO
+            m_revisionInfoHash.insert(fileName, info);
         }
     }
-    return size > 0;
+    return true;
 }
 
 void SubversionPlugin::endRetrieval()
 {
 }
 
-RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const QString& fileName)
+RevisionControlPlugin::RevisionState SubversionPlugin::revisionState(const KFileItem& item)
 {
-    if (m_fileInfoHash.contains(fileName)) {
+    const QString name = item.name();
+    if (m_revisionInfoHash.contains(name)) {
         // TODO...
         return RevisionControlPlugin::LatestRevision;
     }