]> cloud.milkyroute.net Git - dolphin.git/commitdiff
The information whether an item is a file or a directory is already known by Dolphin...
authorPeter Penz <peter.penz19@gmail.com>
Sun, 12 Jul 2009 14:33:26 +0000 (14:33 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 12 Jul 2009 14:33:26 +0000 (14:33 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=995365

src/revisioncontrolobserver.cpp
src/revisioncontrolplugin.cpp
src/revisioncontrolplugin.h

index 99fd61b673a154a5fbe2c2543cd68c9f6a10bb56..f20ff996d916215778c7550b0ee9f85946f3c13b 100644 (file)
@@ -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()
index 6c0f82fb8294500246c9a5e1885ac84891c04d38..aafe443cd8e1eceba36997bea8e68ce1517571c9 100644 (file)
@@ -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;
index 95850711d472bac61e91e5a69deb99747d318731..6cacb9224acaeef0b58f85f05c61baa3365cafbb 100644 (file)
@@ -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;