4#ifndef ANDROIDCONTENTFILEENGINE_H
5#define ANDROIDCONTENTFILEENGINE_H
7#include <private/qfsfileengine_p.h>
9#include <QtCore/qjniobject.h>
10#include <QtCore/qlist.h>
14using DocumentFilePtr = std::shared_ptr<
class DocumentFile>;
20 bool open(QIODevice::OpenMode openMode, std::optional<QFile::Permissions> permissions)
override;
24 bool rename(
const QString &newName)
override;
25 bool mkdir(
const QString &dirName,
bool createParentDirectories,
26 std::optional<QFile::Permissions> permissions =
std::
nullopt)
const override;
27 bool rmdir(
const QString &dirName,
bool recurseParentDirectories)
const override;
34 const QStringList &filterNames)
override;
37 void closeNativeFileDescriptor();
39 QString m_initialFile;
41 DocumentFilePtr m_documentFile;
57 const QStringList &filterNames);
65 mutable QList<DocumentFilePtr> m_files;
66 mutable qsizetype m_index = -1;
70
71
72
73
74
75
102 bool rename(
const QString &newName);
105 DocumentFile(
const QJniObject &uri,
const QString &displayName,
const std::shared_ptr<DocumentFile> &parent);
static QJniObject & contentResolverInstance()
constexpr char documentSegment[]
constexpr char contentSchemeFull[]
constexpr char contentScheme[]
constexpr char treeSegment[]
constexpr char childrenSegment[]
QJniObject parseUri(const QString &uri)
std::unique_ptr< QAbstractFileEngine > create(const QString &fileName) const override
If this file handler can handle fileName, this method creates a file engine and returns it wrapped in...
~AndroidContentFileEngineHandler()
bool advance() override
This pure virtual function advances the iterator to the next directory entry; if the operation was su...
~AndroidContentFileEngineIterator()
QString currentFilePath() const override
Returns the path to the current directory entry.
AndroidContentFileEngineIterator(const QString &path, QDirListing::IteratorFlags filters, const QStringList &filterNames)
QString currentFileName() const override
This pure virtual function returns the name of the current directory entry, excluding the path.
QByteArray id() const override
qint64 size() const override
Returns the size of the file.
bool mkdir(const QString &dirName, bool createParentDirectories, std::optional< QFile::Permissions > permissions=std::nullopt) const override
Requests that the directory dirName be created with the specified permissions.
bool caseSensitive() const override
Should return true if the underlying file system is case-sensitive; otherwise return false.
FileFlags fileFlags(FileFlags type=FileInfoAll) const override
This function should return the set of OR'd flags that are true for the file engine's file,...
QDateTime fileTime(QFile::FileTime time) const override
If time is BirthTime, return when the file was born (created).
bool rmdir(const QString &dirName, bool recurseParentDirectories) const override
Requests that the directory dirName is deleted from the file system.
IteratorUniquePtr beginEntryList(const QString &path, QDirListing::IteratorFlags filters, const QStringList &filterNames) override
Returns a QAbstractFileEngine::IteratorUniquePtr, that can be used to iterate over the entries in pat...
bool close() override
Closes the file, returning true if successful; otherwise returns false.
AndroidContentFileEngine(const QString &fileName)
bool rename(const QString &newName) override
Requests that the file be renamed to newName in the file system.
bool open(QIODevice::OpenMode openMode, std::optional< QFile::Permissions > permissions) override
Opens the file in the specified mode.
bool remove() override
Requests that the file is deleted from the file system.
QString fileName(FileName file=DefaultName) const override
Return the file engine's current file name in the format specified by file.
Cursor(const QJniObject &object)
QVariant data(int columnIndex) const
static QVariant queryColumn(const QJniObject &uri, const QString &column)
bool isNull(int columnIndex) const
static std::unique_ptr< Cursor > queryUri(const QJniObject &uri, const QStringList &projection={}, const QString &selection={}, const QStringList &selectionArgs={}, const QString &sortOrder={})
const DocumentFilePtr & parent() const
bool rename(const QString &newName)
const QJniObject & uri() const
DocumentFilePtr createFile(const QString &mimeType, const QString &displayName)
DocumentFilePtr createDirectory(const QString &displayName)
std::vector< DocumentFilePtr > listFiles()
QString initialName() const
static QStringList getPathSegments(const QJniObject &uri)
static DocumentFilePtr fromTreeUri(const QJniObject &treeUri)
DocumentFile(const QJniObject &uri, const QString &displayName, const std::shared_ptr< DocumentFile > &parent)
static DocumentFilePtr fromSingleUri(const QJniObject &uri)
static DocumentFilePtr parseFromAnyUri(const QString &filename)
QDateTime lastModified() const
const QLatin1String COLUMN_LAST_MODIFIED("last_modified")
constexpr int FLAG_SUPPORTS_MOVE
const QLatin1String MIME_TYPE_DIR("vnd.android.document/directory")
const QLatin1String COLUMN_MIME_TYPE("mime_type")
const QLatin1String COLUMN_DISPLAY_NAME("_display_name")
const QLatin1String COLUMN_DOCUMENT_ID("document_id")
constexpr int FLAG_VIRTUAL_DOCUMENT
constexpr int FLAG_SUPPORTS_DELETE
const QLatin1String COLUMN_FLAGS("flags")
const QLatin1String COLUMN_SIZE("_size")
constexpr int FLAG_SUPPORTS_RENAME
constexpr int FLAG_DIR_SUPPORTS_CREATE
constexpr int FLAG_SUPPORTS_WRITE
bool isDocumentUri(const QJniObject &uri)
bool isTreeUri(const QJniObject &uri)
bool deleteDocument(const QJniObject &documentUri)
QJniObject renameDocument(const QJniObject &documentUri, const QString &displayName)
QJniObject buildDocumentUriUsingTree(const QJniObject &treeUri, const QString &documentId)
QString treeDocumentId(const QJniObject &uri)
QString documentId(const QJniObject &uri)
QJniObject moveDocument(const QJniObject &sourceDocumentUri, const QJniObject &sourceParentDocumentUri, const QJniObject &targetParentDocumentUri)
QJniObject buildChildDocumentsUriUsingTree(const QJniObject &uri, const QString &parentDocumentId)
QJniObject createDocument(const QJniObject &parentDocumentUri, const QString &mimeType, const QString &displayName)
Q_STATIC_LOGGING_CATEGORY(lcAccessibilityCore, "qt.accessibility.core")
Q_DECLARE_JNI_CLASS(MotionEvent, "android/view/MotionEvent")