[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdiff3] src: store FileInfo object move all access checks to same class.
From:       Michael Reeves <null () kde ! org>
Date:       2018-08-31 2:39:08
Message-ID: E1fvZL2-0003LQ-Kd () code ! kde ! org
[Download RAW message or body]

Git commit 7ad4ebdcbe261e409f212dfe5bf541d93f7ecfc3 by Michael Reeves.
Committed on 31/08/2018 at 02:36.
Pushed by mreeves into branch 'master'.

store FileInfo object move all access checks to same class.

M  +19   -38   src/fileaccess.cpp
M  +5    -3    src/fileaccess.h

https://commits.kde.org/kdiff3/7ad4ebdcbe261e409f212dfe5bf541d93f7ecfc3

diff --git a/src/fileaccess.cpp b/src/fileaccess.cpp
index 6fff4a5..e650e27 100644
--- a/src/fileaccess.cpp
+++ b/src/fileaccess.cpp
@@ -55,10 +55,7 @@ class FileAccess::FileAccessPrivateData
         m_url = QUrl();
         m_bValidData = false;
         m_name = QString();
-        //m_creationTime = QDateTime();
-        //m_accessTime = QDateTime();
-        m_bReadable = false;
-        m_bExecutable = false;
+       
         m_linkTarget = "";
         //m_fileType = -1;
         m_pParent = nullptr;
@@ -87,16 +84,10 @@ class FileAccess::FileAccessPrivateData
     QUrl m_url;
     bool m_bValidData;
 
-    //QDateTime m_accessTime;
-    //QDateTime m_creationTime;
-    bool m_bReadable;
-    bool m_bExecutable;
     //long m_fileType; // for testing only
     FileAccess* m_pParent;
-
+    
     QString m_linkTarget;
-    //QString m_user;
-    //QString m_group;
     QString m_name = QString("");
     QString m_localCopy = QString("");
     QString m_statusText; // Might contain an error string, when the last operation didn't succeed.
@@ -147,10 +138,11 @@ FileAccess& FileAccess::operator=(const FileAccess& other)
     m_bSymLink = other.m_bSymLink;
     m_bFile = other.m_bFile;
     m_bDir = other.m_bDir;
+    m_bReadable = other.m_bReadable;
+    m_bExecutable = other.m_bExecutable;
     m_bExists = other.m_bExists;
     m_bWritable = other.m_bWritable;
     m_bHidden = other.m_bHidden;
-    m_bReserved = false;
     *m_pData = *other.m_pData;
 
     return *this;
@@ -171,6 +163,7 @@ FileAccess::~FileAccess()
 
 void FileAccess::setFile(const QFileInfo& fi, FileAccess* pParent)
 {
+    m_fileInfo = fi;
     m_filePath = pParent == nullptr ? fi.absoluteFilePath() : fi.fileName();
 
     m_bSymLink = fi.isSymLink();
@@ -184,17 +177,13 @@ void FileAccess::setFile(const QFileInfo& fi, FileAccess* pParent)
     m_size = fi.size();
     m_modificationTime = fi.lastModified();
     m_bHidden = fi.isHidden();
-
+    
     m_bWritable = fi.isWritable();
+    m_bReadable = fi.isReadable();
+    m_bExecutable = fi.isExecutable();
 
     if(d()->isLocal())
     {
-        d()->m_bReadable = fi.isReadable();
-        d()->m_bExecutable = fi.isExecutable();
-
-        //d()->m_creationTime = fi.created();
-        //d()->m_modificationTime = fi.lastModified();
-        //d()->m_accessTime = fi.lastRead();
         d()->m_name = fi.fileName();
         if(m_bSymLink)
         {
@@ -337,16 +326,12 @@ void FileAccess::setUdsEntry(const KIO::UDSEntry& e)
         case KIO::UDSEntry::UDS_SIZE:
             m_size = e.numberValue(f);
             break;
-        //case KIO::UDSEntry::UDS_USER :               d()->m_user   = e.stringValue(f);    break;
-        //case KIO::UDSEntry::UDS_GROUP :              d()->m_group  = e.stringValue(f);    break;
         case KIO::UDSEntry::UDS_NAME:
             m_filePath = e.stringValue(f);
             break; // During listDir the relative path is given here.
         case KIO::UDSEntry::UDS_MODIFICATION_TIME:
             m_modificationTime = QDateTime::fromMSecsSinceEpoch(e.numberValue(f));
             break;
-        //case KIO::UDSEntry::UDS_ACCESS_TIME :       d()->m_accessTime.setTime_t( e.numberValue(f) ); break;
-        //case KIO::UDSEntry::UDS_CREATION_TIME :     d()->m_creationTime.setTime_t( e.numberValue(f) ); break;
         case KIO::UDSEntry::UDS_LINK_DEST:
             d()->m_linkTarget = e.stringValue(f);
             break;
@@ -354,9 +339,9 @@ void FileAccess::setUdsEntry(const KIO::UDSEntry& e)
         {
             #ifndef Q_OS_WIN
             acc = e.numberValue(f);
-            d()->m_bReadable = (acc & S_IRUSR) != 0;
+            m_bReadable = (acc & S_IRUSR) != 0;
             m_bWritable = (acc & S_IWUSR) != 0;
-            d()->m_bExecutable = (acc & S_IXUSR) != 0;
+            m_bExecutable = (acc & S_IXUSR) != 0;
             #endif
             break;
         }
@@ -400,7 +385,6 @@ void FileAccess::setUdsEntry(const KIO::UDSEntry& e)
 #endif
 }
 
-
 bool FileAccess::isValid() const
 {
     return !m_filePath.isEmpty() || d()->m_bValidData;
@@ -467,9 +451,9 @@ bool FileAccess::isReadable() const
 {
     //This can be very slow in some network setups so use cached value
     if(!d()->isLocal())
-        return d()->m_bReadable;
+        return m_bReadable;
     else
-        return QFileInfo(absoluteFilePath()).isReadable();
+        return m_fileInfo.isReadable();
 }
 
 bool FileAccess::isWritable() const
@@ -478,32 +462,29 @@ bool FileAccess::isWritable() const
     if(parent() || !d()->isLocal())
         return m_bWritable;
     else
-        return QFileInfo(absoluteFilePath()).isWritable();
+        return m_fileInfo.isWritable();
 }
 
 bool FileAccess::isExecutable() const
 {
     //This can be very slow in some network setups so use cached value
     if(!d()->isLocal())
-        return d()->m_bExecutable;
+        return m_bExecutable;
     else
-        return QFileInfo(absoluteFilePath()).isExecutable();
+        return m_fileInfo.isExecutable();
 }
 
 bool FileAccess::isHidden() const
 {
-    if(parent() || !(d()->isLocal()))
+    if(!(d()->isLocal()))
         return m_bHidden;
     else
-        return QFileInfo(absoluteFilePath()).isHidden();
+        return m_fileInfo.isHidden();
 }
 
 QString FileAccess::readLink() const
 {
-    if(!(d()->m_linkTarget.isEmpty()))
-        return d()->m_linkTarget;
-    else
-        return QString();
+    return d()->m_linkTarget;
 }
 
 QString FileAccess::absoluteFilePath() const
@@ -534,7 +515,7 @@ QString FileAccess::fileName() const
     else if(parent())
         return m_filePath;
     else
-        return QFileInfo(m_filePath).fileName();
+        return m_fileInfo.fileName();
 }
 
 QString FileAccess::filePath() const
diff --git a/src/fileaccess.h b/src/fileaccess.h
index dd71588..9d94e98 100644
--- a/src/fileaccess.h
+++ b/src/fileaccess.h
@@ -13,6 +13,7 @@
 
 #include "progress.h"
 
+#include <QFileInfo>
 #include <QDateTime>
 
 #include <KIO/UDSEntry>
@@ -24,7 +25,6 @@ namespace KIO {
 bool wildcardMultiMatch( const QString& wildcard, const QString& testString, bool bCaseSensitive );
 
 class t_DirectoryList;
-class QFileInfo;
 
 class ProgressProxyExtender: public ProgressProxy
 {
@@ -107,7 +107,8 @@ private:
    void createData();
 
    FileAccessPrivateData* m_pData = nullptr;
-   
+
+   QFileInfo m_fileInfo;
    QString m_filePath; // might be absolute or relative if m_pParent!=0
    qint64 m_size;
    QDateTime m_modificationTime;
@@ -116,8 +117,9 @@ private:
    bool m_bDir      : 1;
    bool m_bExists   : 1;
    bool m_bWritable : 1;
+   bool m_bReadable : 1;
+   bool m_bExecutable:1;
    bool m_bHidden   : 1;
-   bool m_bReserved : 1;
 
    friend class FileAccessJobHandler;
 };

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic