Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qfilesystemwatcher_polling_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QFILESYSTEMWATCHER_POLLING_P_H
5#define QFILESYSTEMWATCHER_POLLING_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/qfileinfo.h>
19#include <QtCore/qmutex.h>
20#include <QtCore/qdatetime.h>
21#include <QtCore/qdir.h>
22#include <QtCore/qtimer.h>
23#include <QtCore/qhash.h>
24
26
27QT_REQUIRE_CONFIG(filesystemwatcher);
29
30enum { PollingInterval = 1000 };
31
33{
35
36 class FileInfo
37 {
38 uint ownerId;
39 uint groupId;
40 QFile::Permissions permissions;
41 QDateTime lastModified;
42 QStringList entries;
43
44 public:
45 FileInfo(const QFileInfo &fileInfo)
46 : ownerId(fileInfo.ownerId()),
47 groupId(fileInfo.groupId()),
48 permissions(fileInfo.permissions()),
49 lastModified(fileInfo.lastModified(QTimeZone::UTC))
50 {
51 if (fileInfo.isDir()) {
52 entries = fileInfo.absoluteDir().entryList(QDir::AllEntries);
53 }
54 }
55 FileInfo &operator=(const QFileInfo &fileInfo)
56 {
57 *this = FileInfo(fileInfo);
58 return *this;
59 }
60
61 bool operator!=(const QFileInfo &fileInfo) const
62 {
63 if (fileInfo.isDir() && entries != fileInfo.absoluteDir().entryList(QDir::AllEntries))
64 return true;
65 return (ownerId != fileInfo.ownerId()
66 || groupId != fileInfo.groupId()
67 || permissions != fileInfo.permissions()
68 || lastModified != fileInfo.lastModified(QTimeZone::UTC));
69 }
70 };
71
72 QHash<QString, FileInfo> files, directories;
73
74public:
76
77 QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories) override;
78 QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories) override;
79
80private Q_SLOTS:
81 void timeout();
82
83private:
84 QTimer timer;
85};
86
88#endif // QFILESYSTEMWATCHER_POLLING_P_H
89
\inmodule QtCore\reentrant
Definition qdatetime.h:257
QStringList entryList(Filters filters=NoFilter, SortFlags sort=NoSort) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition qdir.cpp:1364
@ AllEntries
Definition qdir.h:25
\inmodule QtCore \reentrant
Definition qfileinfo.h:22
QDateTime lastModified() const
Returns the date and time when the file was last modified.
Definition qfileinfo.h:156
uint groupId() const
Returns the id of the group the file belongs to.
bool isDir() const
Returns true if this object points to a directory or to a symbolic link to a directory.
uint ownerId() const
Returns the id of the owner of the file.
QDir absoluteDir() const
Returns the file's absolute path as a QDir object.
QFile::Permissions permissions() const
Returns the complete OR-ed together combination of QFile::Permissions for the file.
\inmodule QtCore
Definition qhash.h:818
\inmodule QtCore
Definition qobject.h:90
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
QStringList addPaths(const QStringList &paths, QStringList *files, QStringList *directories) override
QStringList removePaths(const QStringList &paths, QStringList *files, QStringList *directories) override
\inmodule QtCore
\inmodule QtCore
Definition qtimer.h:20
Combined button and popup list for selecting options.
constexpr bool operator!=(const timespec &t1, const timespec &t2)
GLbitfield GLuint64 timeout
[4]
GLsizei const GLuint * paths
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define Q_SLOTS
unsigned int uint
Definition qtypes.h:29
QStringList files
[8]