From kde-commits Wed May 31 19:23:12 2017 From: Alexander Bikadorov Date: Wed, 31 May 2017 19:23:12 +0000 To: kde-commits Subject: [krusader] krusader/FileSystem: FileSystem: Added changed and access time to FileItem (not used yet) Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=149625860525424 Git commit 30bf21fa71229f580ac7fe0a5f74f20ac039d3e1 by Alexander Bikadorov. Committed on 30/05/2017 at 16:22. Pushed by abikadorov into branch 'master'. FileSystem: Added changed and access time to FileItem (not used yet) M +11 -4 krusader/FileSystem/fileitem.cpp M +9 -1 krusader/FileSystem/fileitem.h M +6 -2 krusader/FileSystem/filesystem.cpp https://commits.kde.org/krusader/30bf21fa71229f580ac7fe0a5f74f20ac039d3e1 diff --git a/krusader/FileSystem/fileitem.cpp b/krusader/FileSystem/fileite= m.cpp index 3a55ff87..b253a870 100644 --- a/krusader/FileSystem/fileitem.cpp +++ b/krusader/FileSystem/fileitem.cpp @@ -55,12 +55,14 @@ public: static QCache s_fileSizeCache(1000); = FileItem::FileItem(const QString &name, const QUrl &url, bool isDir, - KIO::filesize_t size, mode_t mode, time_t mtime, + KIO::filesize_t size, mode_t mode, + time_t mtime, time_t ctime, time_t atime, uid_t uid, gid_t gid, const QString &owner, const QString &gr= oup, bool isLink, const QString &linkDest, bool isBrokenLink, const QString &acl, const QString &defaultAcl) : m_name(name), m_url(url), m_isDir(isDir), - m_size(size), m_mode(mode), m_mtime(mtime), + m_size(size), m_mode(mode), + m_mtime(mtime), m_ctime(ctime), m_atime(atime), m_uid(uid), m_gid(gid), m_owner(owner), m_group(group), m_isLink(isLink), m_linkDest(linkDest), m_isBrokenLink(isBrokenLink), m_acl(acl), m_defaulfAcl(defaultAcl), m_AclLoaded(false), @@ -82,6 +84,7 @@ FileItem::FileItem(const QString &name, const QUrl &url, = bool isDir, FileItem *FileItem::createDummy() { FileItem *file =3D new FileItem("..", QUrl(), true, + 0, 0, 0, 0, 0); file->setIcon("go-up"); return file; @@ -90,14 +93,16 @@ FileItem *FileItem::createDummy() FileItem *FileItem::createVirtualDir(const QString &name, const QUrl &url) { return new FileItem(name, url, true, - 0, 0700, time(0), + 0, 0700, + time(0), time(0), time(0), getuid(), getgid()); } = FileItem *FileItem::createCopy(const FileItem &file, const QString &newNam= e) { return new FileItem(newName, file.getUrl(), file.isDir(), - file.getSize(), file.getMode(), file.getTime_t(), + file.getSize(), file.getMode(), + file.getTime_t(), file.getChangedTime(), file.getAcce= ssTime(), file.m_uid, file.m_gid, file.getOwner(), file.getGrou= p(), file.isSymLink(), file.getSymDest(), file.isBrokenLin= k()); } @@ -200,6 +205,8 @@ const KIO::UDSEntry FileItem::getEntry() entry.insert(KIO::UDSEntry::UDS_NAME, getName()); entry.insert(KIO::UDSEntry::UDS_SIZE, getSize()); entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, getTime_t()); + entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, getChangedTime()); + entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, getAccessTime()); entry.insert(KIO::UDSEntry::UDS_USER, getOwner()); entry.insert(KIO::UDSEntry::UDS_GROUP, getGroup()); entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, getMime()); diff --git a/krusader/FileSystem/fileitem.h b/krusader/FileSystem/fileitem.h index fc50963b..7c4b7b91 100644 --- a/krusader/FileSystem/fileitem.h +++ b/krusader/FileSystem/fileitem.h @@ -64,6 +64,8 @@ public: * @param size size of file * @param mode mode of file (file type and permissions) * @param mtime file modification time + * @param ctime file changed time + * @param atime file access time * @param uid Unix user id of file owner. Use -1 here and provide an o= wner name for non-local files. * @param gid Unix group id of file group. Use -1 here and provide a g= roup name for non-local files. * @param owner user name of file owner. Can be empty for local files @@ -75,7 +77,8 @@ public: * @param defaultAcl default ACL string of file (only for directories)= . Can be empty and is loaded on demand. */ FileItem(const QString &name, const QUrl &url, bool isDir, - KIO::filesize_t size, mode_t mode, time_t mtime, + KIO::filesize_t size, mode_t mode, + time_t mtime, time_t ctime, time_t atime, uid_t uid =3D -1, gid_t gid =3D -1, const QString &owner =3D QString(), const QString &group =3D QSt= ring(), bool isLink =3D false, const QString &linkDest =3D QString(), bo= ol isBrokenLink =3D false, @@ -101,6 +104,8 @@ public: inline const QString &getSymDest() const { return m_linkDest; } inline mode_t getMode() const { return m_mode; } inline time_t getTime_t() const { return m_mtime; } + inline time_t getChangedTime() const { return m_ctime; } + inline time_t getAccessTime() const { return m_atime; } inline const QUrl &getUrl() const { return m_url; } inline const QString &getOwner() const { return m_owner; } inline const QString &getGroup() const { return m_group; } @@ -135,7 +140,10 @@ private: = KIO::filesize_t m_size; //< file size mode_t m_mode; //< file mode (file type and permissions) + time_t m_mtime; //< file modification time + time_t m_ctime; //< file changed time + time_t m_atime; //< file access time = uid_t m_uid; //< file owner id gid_t m_gid; //< file group id diff --git a/krusader/FileSystem/filesystem.cpp b/krusader/FileSystem/files= ystem.cpp index e164ed7b..2e9cce1e 100644 --- a/krusader/FileSystem/filesystem.cpp +++ b/krusader/FileSystem/filesystem.cpp @@ -235,7 +235,8 @@ FileItem *FileSystem::createLocalFileItem(const QString= &name, const QString &di } = return new FileItem(virt ? path : name, QUrl::fromLocalFile(path), isD= ir, - size, stat_p.st_mode, stat_p.st_mtime, + size, stat_p.st_mode, + stat_p.st_mtime, stat_p.st_ctime, stat_p.st_atime, stat_p.st_uid, stat_p.st_gid, QString(), QString(), isLink, linkDestination, brokenLink); } @@ -256,6 +257,8 @@ FileItem *FileSystem::createFileItemFromKIO(const KIO::= UDSEntry &entry, const QU = // get file statistics... const time_t mtime =3D kfi.time(KFileItem::ModificationTime).toTime_t(= ); + const time_t ctime =3D kfi.time(KFileItem::CreationTime).toTime_t(); /= / "Creation"? its "Changed" + const time_t atime =3D kfi.time(KFileItem::AccessTime).toTime_t(); const mode_t mode =3D kfi.mode() | kfi.permissions(); // NOTE: we could get the mimetype (and file icon) from the kfileitem = here but this is very // slow. Instead, the file item class has it's own (faster) way to det= ermine the file type. @@ -263,7 +266,8 @@ FileItem *FileSystem::createFileItemFromKIO(const KIO::= UDSEntry &entry, const QU // NOTE: "broken link" flag is always false, checking link destination= existence is // considered to be too expensive return new FileItem(fname, url, kfi.isDir(), - kfi.size(), mode, mtime, + kfi.size(), mode, + mtime, ctime, atime, (uid_t) -1, (gid_t) -1, kfi.user(), kfi.group(), kfi.isLink(), kfi.linkDest(), false, kfi.ACL().asString(), kfi.defaultACL().asString());