LMMS
Loading...
Searching...
No Matches
juce_AndroidDocument.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2020 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23namespace juce
24{
25
26//==============================================================================
39{
40public:
42
44 bool exists() const { return isJuceFlagSet (flagExists); }
45
47 bool isDirectory() const;
48
50 bool isFile() const { return type.isNotEmpty() && ! isDirectory(); }
51
57 bool canRead() const { return isJuceFlagSet (flagHasReadPermission) && type.isNotEmpty(); }
58
72
74 bool canDelete() const { return isNativeFlagSet (flagSupportsDelete); }
75
78
80 bool canRename() const { return isNativeFlagSet (flagSupportsRename); }
81
83 bool canCopy() const { return isNativeFlagSet (flagSupportsCopy); }
84
86 bool canMove() const { return isNativeFlagSet (flagSupportsMove); }
87
90
96 String getName() const { return name; }
97
99 String getType() const { return isDirectory() ? String{} : type; }
100
107
110
117
120
122 class Args;
123
124private:
125 explicit AndroidDocumentInfo (Args);
126
127 bool isNativeFlagSet (int flag) const { return (nativeFlags & flag) != 0; }
128 bool isJuceFlagSet (int flag) const { return (juceFlags & flag) != 0; }
129
130 /* Native Android flags that might be set in the COLUMN_FLAGS for a particular document */
131 enum
132 {
140 };
141
142 /* Flags for other binary properties that aren't exposed in COLUMN_FLAGS */
143 enum
144 {
145 flagExists = 1 << 0,
150 };
151
156 int nativeFlags = 0, juceFlags = 0;
157};
158
159//==============================================================================
170{
171public:
173 URL getUrl() const { return url; }
174
176 int64 getPersistedTime() const { return time; }
177
179 bool isReadPermission() const { return read; }
180
182 bool isWritePermission() const { return write; }
183
191 static void takePersistentReadWriteAccess (const URL&);
192
195
199 static std::vector<AndroidDocumentPermission> getPersistedPermissions();
200
201private:
204 bool read = false, write = false;
205};
206
207//==============================================================================
242{
243public:
246
257 static AndroidDocument fromFile (const File& filePath);
258
270 static AndroidDocument fromDocument (const URL& documentUrl);
271
294 static AndroidDocument fromTree (const URL& treeUrl);
295
298
301
303
305 bool operator== (const AndroidDocument&) const;
306
308 bool operator!= (const AndroidDocument&) const;
309
312
319 bool renameTo (const String& newDisplayName);
320
332
338
344 bool hasValue() const { return pimpl != nullptr; }
345
347 explicit operator bool() const { return hasValue(); }
348
350 std::unique_ptr<InputStream> createInputStream() const;
351
353 std::unique_ptr<OutputStream> createOutputStream() const;
354
356 URL getUrl() const;
357
360
375
387 const AndroidDocument& newParent);
388
390 struct NativeInfo;
391
393 NativeInfo getNativeInfo() const;
394
395private:
396 struct Utils;
397 class Pimpl;
398
399 explicit AndroidDocument (std::unique_ptr<Pimpl>);
400
401 void swap (AndroidDocument& other) noexcept { std::swap (other.pimpl, pimpl); }
402
403 std::unique_ptr<Pimpl> pimpl;
404};
405
406//==============================================================================
437{
438public:
439 using difference_type = std::ptrdiff_t;
440 using pointer = void;
441 using iterator_category = std::input_iterator_tag;
442
445
448
451
452 bool operator== (const AndroidDocumentIterator& other) const noexcept { return pimpl == nullptr && other.pimpl == nullptr; }
453 bool operator!= (const AndroidDocumentIterator& other) const noexcept { return ! operator== (other); }
454
457
460
462 AndroidDocumentIterator begin() const { return *this; }
463
466
467private:
468 struct Utils;
469 struct Pimpl;
470
471 explicit AndroidDocumentIterator (std::unique_ptr<Pimpl>);
472
473 std::shared_ptr<Pimpl> pimpl;
474};
475
476} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition juce_AndroidDocument.h:242
bool moveDocumentFromParentToParent(const AndroidDocument &currentParent, const AndroidDocument &newParent)
static AndroidDocument fromFile(const File &filePath)
AndroidDocumentInfo getInfo() const
static AndroidDocument fromDocument(const URL &documentUrl)
AndroidDocument(std::unique_ptr< Pimpl >)
std::unique_ptr< InputStream > createInputStream() const
AndroidDocument createChildDirectory(const String &name) const
AndroidDocument(const AndroidDocument &)
AndroidDocument copyDocumentToParentDocument(const AndroidDocument &target) const
bool renameTo(const String &newDisplayName)
bool deleteDocument() const
bool hasValue() const
Definition juce_AndroidDocument.h:344
NativeInfo getNativeInfo() const
std::unique_ptr< Pimpl > pimpl
Definition juce_AndroidDocument.h:403
AndroidDocument createChildDocumentWithTypeAndName(const String &type, const String &name) const
static AndroidDocument fromTree(const URL &treeUrl)
AndroidDocument(AndroidDocument &&) noexcept
std::unique_ptr< OutputStream > createOutputStream() const
void swap(AndroidDocument &other) noexcept
Definition juce_AndroidDocument.h:401
Definition juce_AndroidDocument.h:39
bool canWrite() const
Definition juce_AndroidDocument.h:64
bool isLastModifiedValid() const
Definition juce_AndroidDocument.h:109
int64 sizeInBytes
Definition juce_AndroidDocument.h:155
@ flagSupportsDelete
Definition juce_AndroidDocument.h:134
@ flagDirSupportsCreate
Definition juce_AndroidDocument.h:135
@ flagSupportsWrite
Definition juce_AndroidDocument.h:133
@ flagSupportsRename
Definition juce_AndroidDocument.h:136
@ flagSupportsMove
Definition juce_AndroidDocument.h:138
@ flagVirtualDocument
Definition juce_AndroidDocument.h:139
@ flagSupportsCopy
Definition juce_AndroidDocument.h:137
String getType() const
Definition juce_AndroidDocument.h:99
bool canCreateChildren() const
Definition juce_AndroidDocument.h:77
int64 getLastModified() const
Definition juce_AndroidDocument.h:106
bool exists() const
Definition juce_AndroidDocument.h:44
String name
Definition juce_AndroidDocument.h:152
@ flagValidModified
Definition juce_AndroidDocument.h:146
@ flagValidSize
Definition juce_AndroidDocument.h:147
@ flagHasReadPermission
Definition juce_AndroidDocument.h:148
@ flagHasWritePermission
Definition juce_AndroidDocument.h:149
@ flagExists
Definition juce_AndroidDocument.h:145
int juceFlags
Definition juce_AndroidDocument.h:156
int64 lastModified
Definition juce_AndroidDocument.h:154
bool canRename() const
Definition juce_AndroidDocument.h:80
bool canDelete() const
Definition juce_AndroidDocument.h:74
String getName() const
Definition juce_AndroidDocument.h:96
int nativeFlags
Definition juce_AndroidDocument.h:156
String type
Definition juce_AndroidDocument.h:153
bool isNativeFlagSet(int flag) const
Definition juce_AndroidDocument.h:127
bool isVirtual() const
Definition juce_AndroidDocument.h:89
bool canRead() const
Definition juce_AndroidDocument.h:57
bool canMove() const
Definition juce_AndroidDocument.h:86
bool isFile() const
Definition juce_AndroidDocument.h:50
int64 getSizeInBytes() const
Definition juce_AndroidDocument.h:116
bool isJuceFlagSet(int flag) const
Definition juce_AndroidDocument.h:128
bool isSizeInBytesValid() const
Definition juce_AndroidDocument.h:119
bool canCopy() const
Definition juce_AndroidDocument.h:83
std::shared_ptr< Pimpl > pimpl
Definition juce_AndroidDocument.h:473
void pointer
Definition juce_AndroidDocument.h:440
AndroidDocument operator*() const
AndroidDocumentIterator begin() const
Definition juce_AndroidDocument.h:462
AndroidDocumentIterator & operator++()
AndroidDocumentIterator end() const
Definition juce_AndroidDocument.h:465
static AndroidDocumentIterator makeNonRecursive(const AndroidDocument &)
AndroidDocumentIterator(std::unique_ptr< Pimpl >)
static AndroidDocumentIterator makeRecursive(const AndroidDocument &)
std::ptrdiff_t difference_type
Definition juce_AndroidDocument.h:439
std::input_iterator_tag iterator_category
Definition juce_AndroidDocument.h:441
Definition juce_AndroidDocument.h:170
static void releasePersistentReadWriteAccess(const URL &)
URL url
Definition juce_AndroidDocument.h:202
static void takePersistentReadWriteAccess(const URL &)
bool isReadPermission() const
Definition juce_AndroidDocument.h:179
URL getUrl() const
Definition juce_AndroidDocument.h:173
static std::vector< AndroidDocumentPermission > getPersistedPermissions()
bool isWritePermission() const
Definition juce_AndroidDocument.h:182
bool write
Definition juce_AndroidDocument.h:204
bool read
Definition juce_AndroidDocument.h:204
int64 time
Definition juce_AndroidDocument.h:203
int64 getPersistedTime() const
Definition juce_AndroidDocument.h:176
Definition juce_File.h:45
Definition juce_String.h:53
Definition juce_URL.h:38
static const char * name
Definition pugl.h:1582
Definition carla_juce.cpp:31
long long int64
Definition juce_MathsFunctions.h:54
int flag
Definition unix.c:754
#define void
Definition unzip.h:396
#define const
Definition zconf.h:137