Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qabstractfileengine_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 QABSTRACTFILEENGINE_P_H
5#define QABSTRACTFILEENGINE_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/private/qglobal_p.h>
19#include "QtCore/qfile.h"
20#include "QtCore/qdir.h"
21
22#include <optional>
23
24#ifdef open
25#error qabstractfileengine_p.h must be included before any header file that defines open
26#endif
27
29
30class QVariant;
33
34class Q_CORE_EXPORT QAbstractFileEngine
35{
36public:
37 enum FileFlag {
38 //perms (overlaps the QFile::Permission)
39 ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000,
40 ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100,
41 ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010,
42 ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001,
43
44 //types
45 LinkType = 0x10000,
46 FileType = 0x20000,
47 DirectoryType = 0x40000,
48 BundleType = 0x80000,
49
50 //flags
51 HiddenFlag = 0x0100000,
52 LocalDiskFlag = 0x0200000,
53 ExistsFlag = 0x0400000,
54 RootFlag = 0x0800000,
55 Refresh = 0x1000000,
56
57 //masks
58 PermsMask = 0x0000FFFF,
59 TypesMask = 0x000F0000,
60 FlagsMask = 0x0FF00000,
61 FileInfoAll = FlagsMask | PermsMask | TypesMask
62 };
63 Q_DECLARE_FLAGS(FileFlags, FileFlag)
64
65 enum FileName {
77 NFileNames // Must be last.
78 };
79 enum FileOwner {
81 OwnerGroup
82 };
83 enum FileTime {
87 ModificationTime
88 };
89
90 virtual ~QAbstractFileEngine();
91
92 virtual bool open(QIODevice::OpenMode openMode,
93 std::optional<QFile::Permissions> permissions = std::nullopt);
94 virtual bool close();
95 virtual bool flush();
96 virtual bool syncToDisk();
97 virtual qint64 size() const;
98 virtual qint64 pos() const;
99 virtual bool seek(qint64 pos);
100 virtual bool isSequential() const;
101 virtual bool remove();
102 virtual bool copy(const QString &newName);
103 virtual bool rename(const QString &newName);
104 virtual bool renameOverwrite(const QString &newName);
105 virtual bool link(const QString &newName);
106 virtual bool mkdir(const QString &dirName, bool createParentDirectories,
107 std::optional<QFile::Permissions> permissions = std::nullopt) const;
108 virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const;
109 virtual bool setSize(qint64 size);
110 virtual bool caseSensitive() const;
111 virtual bool isRelativePath() const;
112 virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const;
113 virtual FileFlags fileFlags(FileFlags type=FileInfoAll) const;
114 virtual bool setPermissions(uint perms);
115 virtual QByteArray id() const;
116 virtual QString fileName(FileName file=DefaultName) const;
117 virtual uint ownerId(FileOwner) const;
118 virtual QString owner(FileOwner) const;
119 virtual bool setFileTime(const QDateTime &newDate, FileTime time);
120 virtual QDateTime fileTime(FileTime time) const;
121 virtual void setFileName(const QString &file);
122 virtual int handle() const;
123 virtual bool cloneTo(QAbstractFileEngine *target);
124 bool atEnd() const;
125 uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags);
126 bool unmap(uchar *ptr);
127
129 virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames);
130 virtual Iterator *endEntryList();
131
132 virtual qint64 read(char *data, qint64 maxlen);
133 virtual qint64 readLine(char *data, qint64 maxlen);
134 virtual qint64 write(const char *data, qint64 len);
135
136 QFile::FileError error() const;
137 QString errorString() const;
138
143 UnMapExtension
144 };
146 {};
148 {};
149
151 public:
154 QFile::MemoryMapFlags flags;
155 };
157 public:
159 };
160
162 public:
164 };
165
166 virtual bool extension(Extension extension, const ExtensionOption *option = nullptr, ExtensionReturn *output = nullptr);
167 virtual bool supportsExtension(Extension extension) const;
168
169 // Factory
171
172protected:
174
177
179private:
180 Q_DECLARE_PRIVATE(QAbstractFileEngine)
181 Q_DISABLE_COPY_MOVE(QAbstractFileEngine)
182};
183
184Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags)
185
186class Q_CORE_EXPORT QAbstractFileEngineHandler
187{
188public:
191 virtual QAbstractFileEngine *create(const QString &fileName) const = 0;
192};
193
196{
197public:
198 QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters);
200
201 virtual QString next() = 0;
202 virtual bool hasNext() const = 0;
203
204 QString path() const;
205 QStringList nameFilters() const;
206 QDir::Filters filters() const;
207
208 virtual QString currentFileName() const = 0;
209 virtual QFileInfo currentFileInfo() const;
210 virtual QString currentFilePath() const;
211
212protected:
214 };
215 virtual QVariant entryInfo(EntryInfoType type) const;
216
217private:
218 Q_DISABLE_COPY_MOVE(QAbstractFileEngineIterator)
219 friend class QDirIterator;
221 void setPath(const QString &path);
223};
224
226{
227public:
229 : fileError(QFile::UnspecifiedError)
230 {
231 }
232 inline virtual ~QAbstractFileEnginePrivate() { }
233
236
238 Q_DECLARE_PUBLIC(QAbstractFileEngine)
239};
240
242
244
245#endif // QABSTRACTFILEENGINE_P_H
\inmodule QtCore \reentrant
virtual QAbstractFileEngine * create(const QString &fileName) const =0
Creates a file engine for file fileName.
The QAbstractFileEngineIterator class provides an iterator interface for custom file engines.
virtual QString next()=0
This pure virtual function advances the iterator to the next directory entry, and returns the file pa...
virtual bool hasNext() const =0
This pure virtual function returns true if there is at least one more entry in the current directory ...
virtual QString currentFileName() const =0
This pure virtual function returns the name of the current directory entry, excluding the path.
\inmodule QtCore \reentrant
QAbstractFileEngineIterator Iterator
QScopedPointer< QAbstractFileEnginePrivate > d_ptr
FileOwner
\value OwnerUser The user who owns the file.
FileFlag
The permissions and types of a file, suitable for OR'ing together.
FileTime
These are used by the fileTime() function.
FileName
These values are used to request a file name in a particular format.
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore\reentrant
Definition qdatetime.h:257
The QDirIterator class provides an iterator for directory entrylists.
FileError
This enum describes the errors that may be returned by the error() function.
Definition qfiledevice.h:23
\inmodule QtCore \reentrant
Definition qfileinfo.h:22
\inmodule QtCore
Definition qfile.h:93
\inmodule QtCore
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
\inmodule QtCore
Definition qvariant.h:64
void extension()
[6]
Definition dialogs.cpp:230
QString str
[2]
QMap< QString, QString > map
[6]
Combined button and popup list for selecting options.
QAbstractFileEngine * qt_custom_file_engine_handler_create(const QString &path)
static jboolean copy(JNIEnv *, jobject)
DBusConnection const char DBusError * error
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
static ControlElement< T > * ptr(QWidget *widget)
GLuint64 GLenum void * handle
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLuint id
[7]
GLenum type
GLenum target
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLenum GLsizei len
GLsizei const GLchar *const * path
GLuint GLenum option
static void setError(QJsonObject *response, const QString &msg)
unsigned char uchar
Definition qtypes.h:27
unsigned int uint
Definition qtypes.h:29
long long qint64
Definition qtypes.h:55
ReturnedValue read(const char *data)
QT_BEGIN_NAMESPACE typedef uchar * output
QFile file
[0]
file setFileName("readme.txt")
file open(QIODevice::ReadOnly)
gzip write("uncompressed data")
settings remove("monkey")
const QStringList filters({"Image files (*.png *.xpm *.jpg)", "Text files (*.txt)", "Any files (*)" })
[6]
view create()