From be656a1448d509b2a5b79189371783934b78eab4 Mon Sep 17 00:00:00 2001 From: jfmdev Date: Fri, 8 May 2015 11:22:28 +0000 Subject: [PATCH] Migration to Android Studio --- .gitignore | 15 +- Readme.md | 33 +- demo/.classpath | 9 - .../2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .../2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 36842 bytes .../2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 129904 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 20882 bytes .../2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 46534 bytes demo/.project | 33 - demo/.settings/org.eclipse.jdt.core.prefs | 5 - .../org.eclipse.ltk.core.refactoring.prefs | 3 - demo/aFileDialog/aFileDialog.iml | 91 +++ demo/aFileDialog/build.gradle | 22 + demo/aFileDialog/lint.xml | 3 + .../aFileDialog/src/main}/AndroidManifest.xml | 0 .../com/daidalos/afiledialog/FileChooser.java | 2 +- .../afiledialog/FileChooserActivity.java | 2 +- .../daidalos/afiledialog/FileChooserCore.java | 2 +- .../afiledialog/FileChooserDialog.java | 2 +- .../afiledialog/FileChooserLabels.java | 2 +- .../daidalos/afiledialog/view/FileItem.java | 2 +- .../src/main}/res/drawable-hdpi/add.png | Bin .../src/main}/res/drawable-hdpi/document.png | Bin .../main}/res/drawable-hdpi/document_gray.png | Bin .../src/main}/res/drawable-hdpi/folder.png | Bin .../main}/res/drawable-hdpi/ic_launcher.png | Bin .../src/main}/res/drawable-hdpi/no.png | Bin .../src/main}/res/drawable-hdpi/tick.png | Bin .../src/main}/res/drawable-ldpi/add.png | Bin .../src/main}/res/drawable-ldpi/document.png | Bin .../main}/res/drawable-ldpi/document_gray.png | Bin .../src/main}/res/drawable-ldpi/folder.png | Bin .../main}/res/drawable-ldpi/ic_launcher.png | Bin .../src/main}/res/drawable-ldpi/no.png | Bin .../src/main}/res/drawable-ldpi/tick.png | Bin .../src/main}/res/drawable-mdpi/add.png | Bin .../src/main}/res/drawable-mdpi/document.png | Bin .../main}/res/drawable-mdpi/document_gray.png | Bin .../src/main}/res/drawable-mdpi/folder.png | Bin .../main}/res/drawable-mdpi/ic_launcher.png | Bin .../src/main}/res/drawable-mdpi/no.png | Bin .../src/main}/res/drawable-mdpi/tick.png | Bin .../res/layout/daidalos_file_chooser.xml | 0 .../main}/res/layout/daidalos_file_item.xml | 0 .../src/main}/res/values-en/strings.xml | 0 .../src/main}/res/values-es/strings.xml | 0 .../src/main}/res/values-fr/strings.xml | 0 .../src/main}/res/values/strings.xml | 0 .../aFileDialogTesting/aFileDialogTesting.iml | 91 +++ demo/aFileDialogTesting/build.gradle | 27 + demo/aFileDialogTesting/lint.xml | 3 + .../src/main}/AndroidManifest.xml | 3 +- .../test/AFileDialogTestingActivity.java | 2 +- .../main}/res/drawable-hdpi/ic_launcher.png | Bin .../main}/res/drawable-ldpi/ic_launcher.png | Bin .../main}/res/drawable-mdpi/ic_launcher.png | Bin .../src/main}/res/layout/main.xml | 0 .../src/main}/res/values-en/strings.xml | 0 .../src/main}/res/values-es/strings.xml | 0 .../src/main}/res/values-fr/strings.xml | 0 .../src/main}/res/values/strings.xml | 0 demo/build.gradle | 15 + demo/demo.iml | 19 + demo/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes demo/gradle/wrapper/gradle-wrapper.properties | 6 + demo/gradlew | 164 +++++ demo/gradlew.bat | 90 +++ demo/import-summary.txt | 57 ++ demo/lgpl-3.0.txt | 165 ----- demo/lint.xml | 3 - demo/proguard.cfg | 40 -- demo/project.properties | 12 - demo/settings.gradle | 2 + docs/UserGuide.md | 2 +- docs/UserGuideEs.md | 2 +- docs/UserGuideFr.md | 2 +- library/.classpath | 9 - .../2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .../2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 26843 bytes .../2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 66327 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 19622 bytes .../2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 32546 bytes library/.project | 33 - .../com.google.appengine.eclipse.core.prefs | 4 - .../com.google.gdt.eclipse.core.prefs | 5 - library/.settings/org.eclipse.jdt.core.prefs | 12 - .../org.eclipse.ltk.core.refactoring.prefs | 3 - library/aFileDialog.iml | 20 + library/app/aFileDialog.iml | 91 +++ library/app/build.gradle | 22 + library/app/lint.xml | 3 + library/app/src/main/AndroidManifest.xml | 15 + .../com/daidalos/afiledialog/FileChooser.java | 50 ++ .../afiledialog/FileChooserActivity.java | 227 +++++++ .../daidalos/afiledialog/FileChooserCore.java | 605 ++++++++++++++++++ .../afiledialog/FileChooserDialog.java | 253 ++++++++ .../afiledialog/FileChooserLabels.java | 105 +++ .../daidalos/afiledialog/view/FileItem.java | 261 ++++++++ .../app/src/main/res/drawable-hdpi/add.png | Bin 0 -> 3980 bytes .../src/main/res/drawable-hdpi/document.png | Bin 0 -> 1848 bytes .../main/res/drawable-hdpi/document_gray.png | Bin 0 -> 2418 bytes .../app/src/main/res/drawable-hdpi/folder.png | Bin 0 -> 5908 bytes .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4147 bytes library/app/src/main/res/drawable-hdpi/no.png | Bin 0 -> 2978 bytes .../app/src/main/res/drawable-hdpi/tick.png | Bin 0 -> 4952 bytes .../app/src/main/res/drawable-ldpi/add.png | Bin 0 -> 1363 bytes .../src/main/res/drawable-ldpi/document.png | Bin 0 -> 836 bytes .../main/res/drawable-ldpi/document_gray.png | Bin 0 -> 1066 bytes .../app/src/main/res/drawable-ldpi/folder.png | Bin 0 -> 4260 bytes .../main/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1723 bytes library/app/src/main/res/drawable-ldpi/no.png | Bin 0 -> 1288 bytes .../app/src/main/res/drawable-ldpi/tick.png | Bin 0 -> 3565 bytes .../app/src/main/res/drawable-mdpi/add.png | Bin 0 -> 2081 bytes .../src/main/res/drawable-mdpi/document.png | Bin 0 -> 1304 bytes .../main/res/drawable-mdpi/document_gray.png | Bin 0 -> 1726 bytes .../app/src/main/res/drawable-mdpi/folder.png | Bin 0 -> 4974 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2574 bytes library/app/src/main/res/drawable-mdpi/no.png | Bin 0 -> 1777 bytes .../app/src/main/res/drawable-mdpi/tick.png | Bin 0 -> 4137 bytes .../main/res/layout/daidalos_file_chooser.xml | 49 ++ .../main/res/layout/daidalos_file_item.xml | 21 + .../app/src/main/res/values-en/strings.xml | 26 + .../app/src/main/res/values-es/strings.xml | 26 + .../app/src/main/res/values-fr/strings.xml | 26 + library/app/src/main/res/values/strings.xml | 26 + library/build.gradle | 15 + library/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + library/gradlew | 164 +++++ library/gradlew.bat | 90 +++ library/import-summary.txt | 37 ++ library/lgpl-3.0.txt | 165 ----- library/library.iml | 19 + library/lint.xml | 3 - library/proguard.cfg | 40 -- library/project.properties | 12 - library/settings.gradle | 1 + 139 files changed, 2787 insertions(+), 590 deletions(-) delete mode 100644 demo/.classpath create mode 100644 demo/.gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 demo/.gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 demo/.gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 demo/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 demo/.gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 demo/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin delete mode 100644 demo/.project delete mode 100644 demo/.settings/org.eclipse.jdt.core.prefs delete mode 100644 demo/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100644 demo/aFileDialog/aFileDialog.iml create mode 100644 demo/aFileDialog/build.gradle create mode 100644 demo/aFileDialog/lint.xml rename {library => demo/aFileDialog/src/main}/AndroidManifest.xml (100%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/FileChooser.java (97%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/FileChooserActivity.java (99%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/FileChooserCore.java (99%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/FileChooserDialog.java (99%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/FileChooserLabels.java (98%) rename {library/src => demo/aFileDialog/src/main/java}/ar/com/daidalos/afiledialog/view/FileItem.java (99%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/add.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/document.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/document_gray.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/folder.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/ic_launcher.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/no.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-hdpi/tick.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/add.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/document.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/document_gray.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/folder.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/ic_launcher.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/no.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-ldpi/tick.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/add.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/document.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/document_gray.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/folder.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/ic_launcher.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/no.png (100%) rename {library => demo/aFileDialog/src/main}/res/drawable-mdpi/tick.png (100%) rename {library => demo/aFileDialog/src/main}/res/layout/daidalos_file_chooser.xml (100%) rename {library => demo/aFileDialog/src/main}/res/layout/daidalos_file_item.xml (100%) rename {library => demo/aFileDialog/src/main}/res/values-en/strings.xml (100%) rename {library => demo/aFileDialog/src/main}/res/values-es/strings.xml (100%) rename {library => demo/aFileDialog/src/main}/res/values-fr/strings.xml (100%) rename {library => demo/aFileDialog/src/main}/res/values/strings.xml (100%) create mode 100644 demo/aFileDialogTesting/aFileDialogTesting.iml create mode 100644 demo/aFileDialogTesting/build.gradle create mode 100644 demo/aFileDialogTesting/lint.xml rename demo/{ => aFileDialogTesting/src/main}/AndroidManifest.xml (90%) rename demo/{src => aFileDialogTesting/src/main/java}/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java (99%) rename demo/{ => aFileDialogTesting/src/main}/res/drawable-hdpi/ic_launcher.png (100%) rename demo/{ => aFileDialogTesting/src/main}/res/drawable-ldpi/ic_launcher.png (100%) rename demo/{ => aFileDialogTesting/src/main}/res/drawable-mdpi/ic_launcher.png (100%) rename demo/{ => aFileDialogTesting/src/main}/res/layout/main.xml (100%) rename demo/{ => aFileDialogTesting/src/main}/res/values-en/strings.xml (100%) rename demo/{ => aFileDialogTesting/src/main}/res/values-es/strings.xml (100%) rename demo/{ => aFileDialogTesting/src/main}/res/values-fr/strings.xml (100%) rename demo/{ => aFileDialogTesting/src/main}/res/values/strings.xml (100%) create mode 100644 demo/build.gradle create mode 100644 demo/demo.iml create mode 100644 demo/gradle/wrapper/gradle-wrapper.jar create mode 100644 demo/gradle/wrapper/gradle-wrapper.properties create mode 100644 demo/gradlew create mode 100644 demo/gradlew.bat create mode 100644 demo/import-summary.txt delete mode 100644 demo/lgpl-3.0.txt delete mode 100644 demo/lint.xml delete mode 100644 demo/proguard.cfg delete mode 100644 demo/project.properties create mode 100644 demo/settings.gradle delete mode 100644 library/.classpath create mode 100644 library/.gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 library/.gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 library/.gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 library/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 library/.gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 library/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin delete mode 100644 library/.project delete mode 100644 library/.settings/com.google.appengine.eclipse.core.prefs delete mode 100644 library/.settings/com.google.gdt.eclipse.core.prefs delete mode 100644 library/.settings/org.eclipse.jdt.core.prefs delete mode 100644 library/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100644 library/aFileDialog.iml create mode 100644 library/app/aFileDialog.iml create mode 100644 library/app/build.gradle create mode 100644 library/app/lint.xml create mode 100644 library/app/src/main/AndroidManifest.xml create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserDialog.java create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserLabels.java create mode 100644 library/app/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java create mode 100644 library/app/src/main/res/drawable-hdpi/add.png create mode 100644 library/app/src/main/res/drawable-hdpi/document.png create mode 100644 library/app/src/main/res/drawable-hdpi/document_gray.png create mode 100644 library/app/src/main/res/drawable-hdpi/folder.png create mode 100644 library/app/src/main/res/drawable-hdpi/ic_launcher.png create mode 100644 library/app/src/main/res/drawable-hdpi/no.png create mode 100644 library/app/src/main/res/drawable-hdpi/tick.png create mode 100644 library/app/src/main/res/drawable-ldpi/add.png create mode 100644 library/app/src/main/res/drawable-ldpi/document.png create mode 100644 library/app/src/main/res/drawable-ldpi/document_gray.png create mode 100644 library/app/src/main/res/drawable-ldpi/folder.png create mode 100644 library/app/src/main/res/drawable-ldpi/ic_launcher.png create mode 100644 library/app/src/main/res/drawable-ldpi/no.png create mode 100644 library/app/src/main/res/drawable-ldpi/tick.png create mode 100644 library/app/src/main/res/drawable-mdpi/add.png create mode 100644 library/app/src/main/res/drawable-mdpi/document.png create mode 100644 library/app/src/main/res/drawable-mdpi/document_gray.png create mode 100644 library/app/src/main/res/drawable-mdpi/folder.png create mode 100644 library/app/src/main/res/drawable-mdpi/ic_launcher.png create mode 100644 library/app/src/main/res/drawable-mdpi/no.png create mode 100644 library/app/src/main/res/drawable-mdpi/tick.png create mode 100644 library/app/src/main/res/layout/daidalos_file_chooser.xml create mode 100644 library/app/src/main/res/layout/daidalos_file_item.xml create mode 100644 library/app/src/main/res/values-en/strings.xml create mode 100644 library/app/src/main/res/values-es/strings.xml create mode 100644 library/app/src/main/res/values-fr/strings.xml create mode 100644 library/app/src/main/res/values/strings.xml create mode 100644 library/build.gradle create mode 100644 library/gradle/wrapper/gradle-wrapper.jar create mode 100644 library/gradle/wrapper/gradle-wrapper.properties create mode 100644 library/gradlew create mode 100644 library/gradlew.bat create mode 100644 library/import-summary.txt delete mode 100644 library/lgpl-3.0.txt create mode 100644 library/library.iml delete mode 100644 library/lint.xml delete mode 100644 library/proguard.cfg delete mode 100644 library/project.properties create mode 100644 library/settings.gradle diff --git a/.gitignore b/.gitignore index e2831af..93fa760 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,11 @@ -/demo/gen -/demo/bin -/library/gen -/library/bin +/demo/.idea +/demo/build +/demo/local.properties +/demo/aFileDialog/build +/demo/aFileDialogTesting/build + +/library/.idea +/library/build +/library/local.properties +/library/app/build + diff --git a/Readme.md b/Readme.md index ac00c3f..851562a 100644 --- a/Readme.md +++ b/Readme.md @@ -28,7 +28,21 @@ In order to use _aFileDialog_ in your application you must do three steps: ``` -Then you must only create an instance of _FileChooserDialog_ and call the _show()_ method or start the activity _FileChooserActivity_. +**4)** Then you must only create an instance of _FileChooserDialog_ and call the _show()_ method: + +```java + FileChooserDialog dialog = new FileChooserDialog(context); + dialog.show(); +``` + +Or start the activity _FileChooserActivity_: + +```java + Intent intent = new Intent(this, FileChooserActivity.class); + this.startActivityForResult(intent, 0); +``` + +> **Note:** the current version of the library is developed using _Android Studio_, if you are using _Eclipse_, then you should check the [eclipse](https://github.com/jfmdev/aFileDialog/tree/eclipse) branch. Demo ---- @@ -46,23 +60,6 @@ In order to known how to use _aFileDialog_, check the [user guide](docs/UserGuid If you want to modify or extend _aFileDialog_, you can read the [software design description](docs/SoftwareDesignDescription.md) (also available in [Spanish](docs/SoftwareDesignDescriptionEs.md)), although this is not mandatory, since the code is fully commented and you are going to figure out how it works in matters of minutes. -Code samples ------------- - -Samples codes are available in the [user guide](docs/UserGuide.md), but, to summarize, you can open a file chooser (implemented with a _Dialog_) using the following lines: - -```java -FileChooserDialog dialog = new FileChooserDialog(context); -dialog.show(); -``` - -To open a file chooser implemented with an _Activity_, you can use the following lines: - -```java -Intent intent = new Intent(this, FileChooserActivity.class); -this.startActivityForResult(intent, 0); -``` - License ------- diff --git a/demo/.classpath b/demo/.classpath deleted file mode 100644 index 5176974..0000000 --- a/demo/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/demo/.gradle/2.2.1/taskArtifacts/cache.properties b/demo/.gradle/2.2.1/taskArtifacts/cache.properties new file mode 100644 index 0000000..6e78305 --- /dev/null +++ b/demo/.gradle/2.2.1/taskArtifacts/cache.properties @@ -0,0 +1 @@ +#Fri May 08 11:01:36 UTC 2015 diff --git a/demo/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/demo/.gradle/2.2.1/taskArtifacts/cache.properties.lock new file mode 100644 index 0000000000000000000000000000000000000000..9b22739727d1b934a5a5348f2828474a2128f98e GIT binary patch literal 17 VcmZQ(oVW9xuic_n1~6c{001%N1kL~e literal 0 HcmV?d00001 diff --git a/demo/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/demo/.gradle/2.2.1/taskArtifacts/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..6f46c37ab67cd1a17edf4d8c269b674e62b1ebf9 GIT binary patch literal 36842 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 literal 0 HcmV?d00001 diff --git a/demo/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin b/demo/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin new file mode 100644 index 0000000000000000000000000000000000000000..e66c319356b737127fb7bdee4f97761651ac5f6e GIT binary patch literal 129904 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 literal 0 HcmV?d00001 diff --git a/demo/.gradle/2.2.1/taskArtifacts/outputFileStates.bin b/demo/.gradle/2.2.1/taskArtifacts/outputFileStates.bin new file mode 100644 index 0000000000000000000000000000000000000000..9c00ac942a7740f950529b2af1ed3f70219f0d72 GIT binary patch literal 20882 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 literal 0 HcmV?d00001 diff --git a/demo/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin b/demo/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin new file mode 100644 index 0000000000000000000000000000000000000000..592549812949b49084f62d0038997a1557914bb8 GIT binary patch literal 46534 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 RFA+!%pe2f$_wz5~{ttQkd(8j< literal 0 HcmV?d00001 diff --git a/demo/.project b/demo/.project deleted file mode 100644 index f63f09d..0000000 --- a/demo/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - aFileDialogTesting - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/demo/.settings/org.eclipse.jdt.core.prefs b/demo/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 8fc69fa..0000000 --- a/demo/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Mon Apr 08 16:25:57 UTC 2013 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/demo/.settings/org.eclipse.ltk.core.refactoring.prefs b/demo/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index c0b9b5b..0000000 --- a/demo/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Apr 25 09:43:49 UTC 2013 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/demo/aFileDialog/aFileDialog.iml b/demo/aFileDialog/aFileDialog.iml new file mode 100644 index 0000000..5597765 --- /dev/null +++ b/demo/aFileDialog/aFileDialog.iml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/aFileDialog/build.gradle b/demo/aFileDialog/build.gradle new file mode 100644 index 0000000..e6e4bff --- /dev/null +++ b/demo/aFileDialog/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 10 + buildToolsVersion "22.0.1" + + defaultConfig { + minSdkVersion 8 + targetSdkVersion 8 + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_5 + targetCompatibility JavaVersion.VERSION_1_5 + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} diff --git a/demo/aFileDialog/lint.xml b/demo/aFileDialog/lint.xml new file mode 100644 index 0000000..8423c0e --- /dev/null +++ b/demo/aFileDialog/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/library/AndroidManifest.xml b/demo/aFileDialog/src/main/AndroidManifest.xml similarity index 100% rename from library/AndroidManifest.xml rename to demo/aFileDialog/src/main/AndroidManifest.xml diff --git a/library/src/ar/com/daidalos/afiledialog/FileChooser.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java similarity index 97% rename from library/src/ar/com/daidalos/afiledialog/FileChooser.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java index 985732b..b3bba7d 100644 --- a/library/src/ar/com/daidalos/afiledialog/FileChooser.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/src/ar/com/daidalos/afiledialog/FileChooserActivity.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java similarity index 99% rename from library/src/ar/com/daidalos/afiledialog/FileChooserActivity.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java index c47086e..d4c462f 100644 --- a/library/src/ar/com/daidalos/afiledialog/FileChooserActivity.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/src/ar/com/daidalos/afiledialog/FileChooserCore.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java similarity index 99% rename from library/src/ar/com/daidalos/afiledialog/FileChooserCore.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java index b913734..f233e88 100644 --- a/library/src/ar/com/daidalos/afiledialog/FileChooserCore.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/src/ar/com/daidalos/afiledialog/FileChooserDialog.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserDialog.java similarity index 99% rename from library/src/ar/com/daidalos/afiledialog/FileChooserDialog.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserDialog.java index a98fc1b..0da4c33 100644 --- a/library/src/ar/com/daidalos/afiledialog/FileChooserDialog.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserDialog.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/src/ar/com/daidalos/afiledialog/FileChooserLabels.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserLabels.java similarity index 98% rename from library/src/ar/com/daidalos/afiledialog/FileChooserLabels.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserLabels.java index e3209e1..46c4643 100644 --- a/library/src/ar/com/daidalos/afiledialog/FileChooserLabels.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/FileChooserLabels.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/src/ar/com/daidalos/afiledialog/view/FileItem.java b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java similarity index 99% rename from library/src/ar/com/daidalos/afiledialog/view/FileItem.java rename to demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java index ec9f476..7aadce3 100644 --- a/library/src/ar/com/daidalos/afiledialog/view/FileItem.java +++ b/demo/aFileDialog/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/library/res/drawable-hdpi/add.png b/demo/aFileDialog/src/main/res/drawable-hdpi/add.png similarity index 100% rename from library/res/drawable-hdpi/add.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/add.png diff --git a/library/res/drawable-hdpi/document.png b/demo/aFileDialog/src/main/res/drawable-hdpi/document.png similarity index 100% rename from library/res/drawable-hdpi/document.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/document.png diff --git a/library/res/drawable-hdpi/document_gray.png b/demo/aFileDialog/src/main/res/drawable-hdpi/document_gray.png similarity index 100% rename from library/res/drawable-hdpi/document_gray.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/document_gray.png diff --git a/library/res/drawable-hdpi/folder.png b/demo/aFileDialog/src/main/res/drawable-hdpi/folder.png similarity index 100% rename from library/res/drawable-hdpi/folder.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/folder.png diff --git a/library/res/drawable-hdpi/ic_launcher.png b/demo/aFileDialog/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from library/res/drawable-hdpi/ic_launcher.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/library/res/drawable-hdpi/no.png b/demo/aFileDialog/src/main/res/drawable-hdpi/no.png similarity index 100% rename from library/res/drawable-hdpi/no.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/no.png diff --git a/library/res/drawable-hdpi/tick.png b/demo/aFileDialog/src/main/res/drawable-hdpi/tick.png similarity index 100% rename from library/res/drawable-hdpi/tick.png rename to demo/aFileDialog/src/main/res/drawable-hdpi/tick.png diff --git a/library/res/drawable-ldpi/add.png b/demo/aFileDialog/src/main/res/drawable-ldpi/add.png similarity index 100% rename from library/res/drawable-ldpi/add.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/add.png diff --git a/library/res/drawable-ldpi/document.png b/demo/aFileDialog/src/main/res/drawable-ldpi/document.png similarity index 100% rename from library/res/drawable-ldpi/document.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/document.png diff --git a/library/res/drawable-ldpi/document_gray.png b/demo/aFileDialog/src/main/res/drawable-ldpi/document_gray.png similarity index 100% rename from library/res/drawable-ldpi/document_gray.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/document_gray.png diff --git a/library/res/drawable-ldpi/folder.png b/demo/aFileDialog/src/main/res/drawable-ldpi/folder.png similarity index 100% rename from library/res/drawable-ldpi/folder.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/folder.png diff --git a/library/res/drawable-ldpi/ic_launcher.png b/demo/aFileDialog/src/main/res/drawable-ldpi/ic_launcher.png similarity index 100% rename from library/res/drawable-ldpi/ic_launcher.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/ic_launcher.png diff --git a/library/res/drawable-ldpi/no.png b/demo/aFileDialog/src/main/res/drawable-ldpi/no.png similarity index 100% rename from library/res/drawable-ldpi/no.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/no.png diff --git a/library/res/drawable-ldpi/tick.png b/demo/aFileDialog/src/main/res/drawable-ldpi/tick.png similarity index 100% rename from library/res/drawable-ldpi/tick.png rename to demo/aFileDialog/src/main/res/drawable-ldpi/tick.png diff --git a/library/res/drawable-mdpi/add.png b/demo/aFileDialog/src/main/res/drawable-mdpi/add.png similarity index 100% rename from library/res/drawable-mdpi/add.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/add.png diff --git a/library/res/drawable-mdpi/document.png b/demo/aFileDialog/src/main/res/drawable-mdpi/document.png similarity index 100% rename from library/res/drawable-mdpi/document.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/document.png diff --git a/library/res/drawable-mdpi/document_gray.png b/demo/aFileDialog/src/main/res/drawable-mdpi/document_gray.png similarity index 100% rename from library/res/drawable-mdpi/document_gray.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/document_gray.png diff --git a/library/res/drawable-mdpi/folder.png b/demo/aFileDialog/src/main/res/drawable-mdpi/folder.png similarity index 100% rename from library/res/drawable-mdpi/folder.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/folder.png diff --git a/library/res/drawable-mdpi/ic_launcher.png b/demo/aFileDialog/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from library/res/drawable-mdpi/ic_launcher.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/library/res/drawable-mdpi/no.png b/demo/aFileDialog/src/main/res/drawable-mdpi/no.png similarity index 100% rename from library/res/drawable-mdpi/no.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/no.png diff --git a/library/res/drawable-mdpi/tick.png b/demo/aFileDialog/src/main/res/drawable-mdpi/tick.png similarity index 100% rename from library/res/drawable-mdpi/tick.png rename to demo/aFileDialog/src/main/res/drawable-mdpi/tick.png diff --git a/library/res/layout/daidalos_file_chooser.xml b/demo/aFileDialog/src/main/res/layout/daidalos_file_chooser.xml similarity index 100% rename from library/res/layout/daidalos_file_chooser.xml rename to demo/aFileDialog/src/main/res/layout/daidalos_file_chooser.xml diff --git a/library/res/layout/daidalos_file_item.xml b/demo/aFileDialog/src/main/res/layout/daidalos_file_item.xml similarity index 100% rename from library/res/layout/daidalos_file_item.xml rename to demo/aFileDialog/src/main/res/layout/daidalos_file_item.xml diff --git a/library/res/values-en/strings.xml b/demo/aFileDialog/src/main/res/values-en/strings.xml similarity index 100% rename from library/res/values-en/strings.xml rename to demo/aFileDialog/src/main/res/values-en/strings.xml diff --git a/library/res/values-es/strings.xml b/demo/aFileDialog/src/main/res/values-es/strings.xml similarity index 100% rename from library/res/values-es/strings.xml rename to demo/aFileDialog/src/main/res/values-es/strings.xml diff --git a/library/res/values-fr/strings.xml b/demo/aFileDialog/src/main/res/values-fr/strings.xml similarity index 100% rename from library/res/values-fr/strings.xml rename to demo/aFileDialog/src/main/res/values-fr/strings.xml diff --git a/library/res/values/strings.xml b/demo/aFileDialog/src/main/res/values/strings.xml similarity index 100% rename from library/res/values/strings.xml rename to demo/aFileDialog/src/main/res/values/strings.xml diff --git a/demo/aFileDialogTesting/aFileDialogTesting.iml b/demo/aFileDialogTesting/aFileDialogTesting.iml new file mode 100644 index 0000000..5b70629 --- /dev/null +++ b/demo/aFileDialogTesting/aFileDialogTesting.iml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/aFileDialogTesting/build.gradle b/demo/aFileDialogTesting/build.gradle new file mode 100644 index 0000000..2f594a4 --- /dev/null +++ b/demo/aFileDialogTesting/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 10 + buildToolsVersion "22.0.1" + + defaultConfig { + applicationId "ar.com.daidalos.afiledialog.test" + minSdkVersion 8 + targetSdkVersion 19 + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_5 + targetCompatibility JavaVersion.VERSION_1_5 + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} + +dependencies { + compile project(':aFileDialog') +} diff --git a/demo/aFileDialogTesting/lint.xml b/demo/aFileDialogTesting/lint.xml new file mode 100644 index 0000000..8423c0e --- /dev/null +++ b/demo/aFileDialogTesting/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/demo/AndroidManifest.xml b/demo/aFileDialogTesting/src/main/AndroidManifest.xml similarity index 90% rename from demo/AndroidManifest.xml rename to demo/aFileDialogTesting/src/main/AndroidManifest.xml index 7eb6ce4..c94ffb2 100644 --- a/demo/AndroidManifest.xml +++ b/demo/aFileDialogTesting/src/main/AndroidManifest.xml @@ -9,8 +9,7 @@ + android:icon="@drawable/ic_launcher" > diff --git a/demo/src/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java b/demo/aFileDialogTesting/src/main/java/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java similarity index 99% rename from demo/src/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java rename to demo/aFileDialogTesting/src/main/java/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java index fb2589e..b94daab 100644 --- a/demo/src/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java +++ b/demo/aFileDialogTesting/src/main/java/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java @@ -1,5 +1,5 @@ /* - * «Copyright 2013 Jose F. Maldonado» + * * * This file is part of aFileDialog. * diff --git a/demo/res/drawable-hdpi/ic_launcher.png b/demo/aFileDialogTesting/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from demo/res/drawable-hdpi/ic_launcher.png rename to demo/aFileDialogTesting/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/demo/res/drawable-ldpi/ic_launcher.png b/demo/aFileDialogTesting/src/main/res/drawable-ldpi/ic_launcher.png similarity index 100% rename from demo/res/drawable-ldpi/ic_launcher.png rename to demo/aFileDialogTesting/src/main/res/drawable-ldpi/ic_launcher.png diff --git a/demo/res/drawable-mdpi/ic_launcher.png b/demo/aFileDialogTesting/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from demo/res/drawable-mdpi/ic_launcher.png rename to demo/aFileDialogTesting/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/demo/res/layout/main.xml b/demo/aFileDialogTesting/src/main/res/layout/main.xml similarity index 100% rename from demo/res/layout/main.xml rename to demo/aFileDialogTesting/src/main/res/layout/main.xml diff --git a/demo/res/values-en/strings.xml b/demo/aFileDialogTesting/src/main/res/values-en/strings.xml similarity index 100% rename from demo/res/values-en/strings.xml rename to demo/aFileDialogTesting/src/main/res/values-en/strings.xml diff --git a/demo/res/values-es/strings.xml b/demo/aFileDialogTesting/src/main/res/values-es/strings.xml similarity index 100% rename from demo/res/values-es/strings.xml rename to demo/aFileDialogTesting/src/main/res/values-es/strings.xml diff --git a/demo/res/values-fr/strings.xml b/demo/aFileDialogTesting/src/main/res/values-fr/strings.xml similarity index 100% rename from demo/res/values-fr/strings.xml rename to demo/aFileDialogTesting/src/main/res/values-fr/strings.xml diff --git a/demo/res/values/strings.xml b/demo/aFileDialogTesting/src/main/res/values/strings.xml similarity index 100% rename from demo/res/values/strings.xml rename to demo/aFileDialogTesting/src/main/res/values/strings.xml diff --git a/demo/build.gradle b/demo/build.gradle new file mode 100644 index 0000000..01de6ef --- /dev/null +++ b/demo/build.gradle @@ -0,0 +1,15 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.2.2' + } +} + +allprojects { + repositories { + jcenter() + } +} diff --git a/demo/demo.iml b/demo/demo.iml new file mode 100644 index 0000000..f914fec --- /dev/null +++ b/demo/demo.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/gradle/wrapper/gradle-wrapper.jar b/demo/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/demo/gradlew.bat b/demo/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/demo/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/demo/import-summary.txt b/demo/import-summary.txt new file mode 100644 index 0000000..df8452a --- /dev/null +++ b/demo/import-summary.txt @@ -0,0 +1,57 @@ +ECLIPSE ANDROID PROJECT IMPORT SUMMARY +====================================== + +Manifest Merging: +----------------- +Your project uses libraries that provide manifests, and your Eclipse +project did not explicitly turn on manifest merging. In Android Gradle +projects, manifests are always merged (meaning that contents from your +libraries' manifests will be merged into the app manifest. If you had +manually copied contents from library manifests into your app manifest +you may need to remove these for the app to build correctly. + +Ignored Files: +-------------- +The following files were *not* copied into the new Gradle project; you +should evaluate whether these are still needed in your project and if +so manually move them: + +From aFileDialog: +* lgpl-3.0.txt +* proguard.cfg +From aFileDialogTesting: +* lgpl-3.0.txt +* proguard.cfg + +Moved Files: +------------ +Android Gradle projects use a different directory structure than ADT +Eclipse projects. Here's how the projects were restructured: + +In aFileDialog: +* AndroidManifest.xml => aFileDialog\src\main\AndroidManifest.xml +* assets\ => aFileDialog\src\main\assets +* lint.xml => aFileDialog\lint.xml +* res\ => aFileDialog\src\main\res\ +* src\ => aFileDialog\src\main\java\ +In aFileDialogTesting: +* AndroidManifest.xml => aFileDialogTesting\src\main\AndroidManifest.xml +* assets\ => aFileDialogTesting\src\main\assets +* lint.xml => aFileDialogTesting\lint.xml +* res\ => aFileDialogTesting\src\main\res\ +* src\ => aFileDialogTesting\src\main\java\ + +Next Steps: +----------- +You can now build the project. The Gradle project needs network +connectivity to download dependencies. + +Bugs: +----- +If for some reason your project does not build, and you determine that +it is due to a bug or limitation of the Eclipse to Gradle importer, +please file a bug at http://b.android.com with category +Component-Tools. + +(This import summary is for your information only, and can be deleted +after import once you are satisfied with the results.) diff --git a/demo/lgpl-3.0.txt b/demo/lgpl-3.0.txt deleted file mode 100644 index 02bbb60..0000000 --- a/demo/lgpl-3.0.txt +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file diff --git a/demo/lint.xml b/demo/lint.xml deleted file mode 100644 index ee0eead..0000000 --- a/demo/lint.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/demo/proguard.cfg b/demo/proguard.cfg deleted file mode 100644 index b1cdf17..0000000 --- a/demo/proguard.cfg +++ /dev/null @@ -1,40 +0,0 @@ --optimizationpasses 5 --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --dontpreverify --verbose --optimizations !code/simplification/arithmetic,!field/*,!class/merging/* - --keep public class * extends android.app.Activity --keep public class * extends android.app.Application --keep public class * extends android.app.Service --keep public class * extends android.content.BroadcastReceiver --keep public class * extends android.content.ContentProvider --keep public class * extends android.app.backup.BackupAgentHelper --keep public class * extends android.preference.Preference --keep public class com.android.vending.licensing.ILicensingService - --keepclasseswithmembernames class * { - native ; -} - --keepclasseswithmembers class * { - public (android.content.Context, android.util.AttributeSet); -} - --keepclasseswithmembers class * { - public (android.content.Context, android.util.AttributeSet, int); -} - --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keep class * implements android.os.Parcelable { - public static final android.os.Parcelable$Creator *; -} diff --git a/demo/project.properties b/demo/project.properties deleted file mode 100644 index 3afd61d..0000000 --- a/demo/project.properties +++ /dev/null @@ -1,12 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system use, -# "ant.properties", and override values to adapt the script to your -# project structure. - -# Project target. -target=android-10 -android.library.reference.1=../library diff --git a/demo/settings.gradle b/demo/settings.gradle new file mode 100644 index 0000000..973cfeb --- /dev/null +++ b/demo/settings.gradle @@ -0,0 +1,2 @@ +include ':aFileDialog' +include ':aFileDialogTesting' diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 6b33844..c7ff070 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -21,7 +21,7 @@ In order to use _aFileDialog_ in your application you must do three steps: ``` -You can check the [Android documentation](http://developer.android.com/tools/projects/projects-eclipse.html) in order to get more information about how to reference a library project and how to declare an activity in the manifest file. +You can check the [Android documentation](https://developer.android.com/sdk/installing/create-project.html#ReferencingLibraryModule) in order to get more information about how to reference a library project and how to declare an activity in the manifest file. ### 1.2. Show the dialog diff --git a/docs/UserGuideEs.md b/docs/UserGuideEs.md index ef47cdd..67c1e7f 100644 --- a/docs/UserGuideEs.md +++ b/docs/UserGuideEs.md @@ -21,7 +21,7 @@ Para hacer uso de _aFileDialog_ en una aplicación se deben completar los siguie ``` -Más información sobre como referenciar un proyecto de una librería y como declarar una actividad en el archivo manifiesto se puede encontrar en la [documentación oficial de Android](http://developer.android.com/tools/projects/projects-eclipse.html). +Más información sobre como referenciar un proyecto de una librería y como declarar una actividad en el archivo manifiesto se puede encontrar en la [documentación oficial de Android](https://developer.android.com/sdk/installing/create-project.html#ReferencingLibraryModule). ### 1.2. Mostrar el selector de archivos diff --git a/docs/UserGuideFr.md b/docs/UserGuideFr.md index 7c8cfd7..fc6181a 100644 --- a/docs/UserGuideFr.md +++ b/docs/UserGuideFr.md @@ -21,7 +21,7 @@ Pour utiliser _aFileDialog_, dans votre logiciel, il faut suivre les suivants pa ``` -Pour plus d'information sur comment faire une référence à un projet de librairie et comment déclarer une activité dans le fichier de manifeste, vous pouvez lire la [documentation officielle d'Android](http://developer.android.com/tools/projects/projects-eclipse.html). +Pour plus d'information sur comment faire une référence à un projet de librairie et comment déclarer une activité dans le fichier de manifeste, vous pouvez lire la [documentation officielle d'Android](https://developer.android.com/sdk/installing/create-project.html#ReferencingLibraryModule). ### 1.2. Afficher le sélecteur de fichiers diff --git a/library/.classpath b/library/.classpath deleted file mode 100644 index 5176974..0000000 --- a/library/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/library/.gradle/2.2.1/taskArtifacts/cache.properties b/library/.gradle/2.2.1/taskArtifacts/cache.properties new file mode 100644 index 0000000..40b5a0d --- /dev/null +++ b/library/.gradle/2.2.1/taskArtifacts/cache.properties @@ -0,0 +1 @@ +#Fri May 08 10:54:50 UTC 2015 diff --git a/library/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/library/.gradle/2.2.1/taskArtifacts/cache.properties.lock new file mode 100644 index 0000000000000000000000000000000000000000..913bdf6b421e4dfcb19529e22781bf37c655be9c GIT binary patch literal 17 VcmZR+T6bH`X!VaA1~6cZ0{}W}1o!{| literal 0 HcmV?d00001 diff --git a/library/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/library/.gradle/2.2.1/taskArtifacts/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..649023aef8c09ac521f634c3c04c52c0f4c198d1 GIT binary patch literal 26843 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 F{{ywo`V0U7 literal 0 HcmV?d00001 diff --git a/library/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin b/library/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin new file mode 100644 index 0000000000000000000000000000000000000000..24198881fe8e466bf715ac87993b64670b565e63 GIT binary patch literal 32546 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 E|1R0H%m4rY literal 0 HcmV?d00001 diff --git a/library/.project b/library/.project deleted file mode 100644 index bf20802..0000000 --- a/library/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - aFileDialog - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/library/.settings/com.google.appengine.eclipse.core.prefs b/library/.settings/com.google.appengine.eclipse.core.prefs deleted file mode 100644 index 18d29bb..0000000 --- a/library/.settings/com.google.appengine.eclipse.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -#Tue Apr 09 09:30:52 UTC 2013 -eclipse.preferences.version=1 -googleCloudSqlEnabled=false -localDevMySqlEnabled=true diff --git a/library/.settings/com.google.gdt.eclipse.core.prefs b/library/.settings/com.google.gdt.eclipse.core.prefs deleted file mode 100644 index 4415d82..0000000 --- a/library/.settings/com.google.gdt.eclipse.core.prefs +++ /dev/null @@ -1,5 +0,0 @@ -#Tue Apr 09 09:30:52 UTC 2013 -eclipse.preferences.version=1 -jarsExcludedFromWebInfLib= -warSrcDir= -warSrcDirIsOutput=true diff --git a/library/.settings/org.eclipse.jdt.core.prefs b/library/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index c0b739a..0000000 --- a/library/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Tue Apr 09 09:30:52 UTC 2013 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/library/.settings/org.eclipse.ltk.core.refactoring.prefs b/library/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index e62a0fb..0000000 --- a/library/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Thu Apr 25 10:13:08 UTC 2013 -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/library/aFileDialog.iml b/library/aFileDialog.iml new file mode 100644 index 0000000..397f459 --- /dev/null +++ b/library/aFileDialog.iml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/app/aFileDialog.iml b/library/app/aFileDialog.iml new file mode 100644 index 0000000..47dd270 --- /dev/null +++ b/library/app/aFileDialog.iml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/app/build.gradle b/library/app/build.gradle new file mode 100644 index 0000000..e6e4bff --- /dev/null +++ b/library/app/build.gradle @@ -0,0 +1,22 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 10 + buildToolsVersion "22.0.1" + + defaultConfig { + minSdkVersion 8 + targetSdkVersion 8 + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_5 + targetCompatibility JavaVersion.VERSION_1_5 + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} diff --git a/library/app/lint.xml b/library/app/lint.xml new file mode 100644 index 0000000..8423c0e --- /dev/null +++ b/library/app/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/library/app/src/main/AndroidManifest.xml b/library/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..1618fd1 --- /dev/null +++ b/library/app/src/main/AndroidManifest.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java new file mode 100644 index 0000000..b3bba7d --- /dev/null +++ b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooser.java @@ -0,0 +1,50 @@ +/* + * + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog; + +import android.content.Context; +import android.widget.LinearLayout; + +/** + * This interface defines all the methods that a file chooser must implement, in order to being able to make use of the class FileChooserUtils. + */ +interface FileChooser { + + /** + * Gets the root of the layout 'file_chooser.xml'. + * + * @return A linear layout. + */ + LinearLayout getRootLayout(); + + /** + * Set the name of the current folder. + * + * @param name The current folder's name. + */ + void setCurrentFolderName(String name); + + /** + * Returns the current context of the file chooser. + * + * @return The current context. + */ + Context getContext(); +} diff --git a/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java new file mode 100644 index 0000000..d4c462f --- /dev/null +++ b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserActivity.java @@ -0,0 +1,227 @@ +/* + * + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog; + +import java.io.File; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.LinearLayout; +import ar.com.daidalos.afiledialog.R; + +/** + * A file chooser implemented in an Activity. + */ +public class FileChooserActivity extends Activity implements FileChooser { + + // ----- Fields ----- // + + /** + * The folder that the class opened by default. + */ + private File startFolder; + + /** + * The core of the file chooser. + */ + private FileChooserCore core; + + /** + * A boolean indicating if the 'back' button must be used to navigate to parent folders. + */ + private boolean useBackButton; + + // ----- Constants ----- // + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains the + * path of the folder which files are going to be listed. + */ + public static final String INPUT_START_FOLDER = "input_start_folder"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if the user is going to select folders instead of select files. + */ + public static final String INPUT_FOLDER_MODE = "input_folder_mode"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if the user can create files. + */ + public static final String INPUT_CAN_CREATE_FILES = "input_can_create_files"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a regular expression which is going to be used as a filter to determine which files can be selected. + */ + public static final String INPUT_REGEX_FILTER = "input_regex_filter"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if only the files that can be selected must be displayed. + */ + public static final String INPUT_SHOW_ONLY_SELECTABLE = "input_show_only_selectable"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * an instance of the class FileChooserLabels that allows to override the default value of the labels. + */ + public static final String INPUT_LABELS = "input_labels"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if a confirmation dialog must be displayed when creating a file. + */ + public static final String INPUT_SHOW_CONFIRMATION_ON_CREATE = "input_show_confirmation_on_create"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if a confirmation dialog must be displayed when selecting a file. + */ + public static final String INPUT_SHOW_CONFIRMATION_ON_SELECT = "input_show_confirmation_on_select"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if the title must show the full path of the current's folder (true) or only + * the folder's name (false). + */ + public static final String INPUT_SHOW_FULL_PATH_IN_TITLE = "input_show_full_path_in_title"; + + /** + * Constant used for represent the key of the bundle object (inside the start's intent) which contains + * a boolean that indicates if the 'Back' button must be used to navigate to the parents folder (true) or + * if must follow the default behavior (and close the activity when the button is pressed). + */ + public static final String INPUT_USE_BACK_BUTTON_TO_NAVIGATE = "input_use_back_button_to_navigate"; + + /** + * Constant used for represent the key of the bundle object (inside the result's intent) which contains the + * File object, that represents the file selected by the user or the folder in which the user wants to create + * a file. + */ + public static final String OUTPUT_FILE_OBJECT = "output_file_object"; + + /** + * Constant used for represent the key of the bundle object (inside the result's intent) which contains the + * name of the file that the user wants to create. + */ + public static final String OUTPUT_NEW_FILE_NAME = "output_new_file_name"; + + // ---- Activity methods ----- // + + /** Called when the activity is first created. */ + @Override + public void onCreate(Bundle savedInstanceState) { + // Call superclass creator. + super.onCreate(savedInstanceState); + + // Set layout. + this.setContentView(R.layout.daidalos_file_chooser); + + // Set the background color. + LinearLayout layout = (LinearLayout) this.findViewById(R.id.rootLayout); + layout.setBackgroundColor(getResources().getColor(R.color.daidalos_backgroud)); + + // Initialize fields. + this.useBackButton = false; + + // Create the core of the file chooser. + this.core = new FileChooserCore(this); + + // Verify if the optional parameters has been defined. + String folderPath = null; + Bundle extras = this.getIntent().getExtras(); + if(extras != null) { + if(extras.containsKey(INPUT_START_FOLDER)) folderPath = extras.getString(INPUT_START_FOLDER); + if(extras.containsKey(INPUT_REGEX_FILTER)) core.setFilter(extras.getString(INPUT_REGEX_FILTER)); + if(extras.containsKey(INPUT_SHOW_ONLY_SELECTABLE)) core.setShowOnlySelectable(extras.getBoolean(INPUT_SHOW_ONLY_SELECTABLE)); + if(extras.containsKey(INPUT_FOLDER_MODE)) core.setFolderMode(extras.getBoolean(INPUT_FOLDER_MODE)); + if(extras.containsKey(INPUT_CAN_CREATE_FILES)) core.setCanCreateFiles(extras.getBoolean(INPUT_CAN_CREATE_FILES)); + if(extras.containsKey(INPUT_LABELS)) core.setLabels((FileChooserLabels) extras.get(INPUT_LABELS)); + if(extras.containsKey(INPUT_SHOW_CONFIRMATION_ON_CREATE)) core.setShowConfirmationOnCreate(extras.getBoolean(INPUT_SHOW_CONFIRMATION_ON_CREATE)); + if(extras.containsKey(INPUT_SHOW_CONFIRMATION_ON_SELECT)) core.setShowConfirmationOnSelect(extras.getBoolean(INPUT_SHOW_CONFIRMATION_ON_SELECT)); + if(extras.containsKey(INPUT_SHOW_FULL_PATH_IN_TITLE)) core.setShowFullPathInTitle(extras.getBoolean(INPUT_SHOW_FULL_PATH_IN_TITLE)); + if(extras.containsKey(INPUT_USE_BACK_BUTTON_TO_NAVIGATE)) this.useBackButton = extras.getBoolean(INPUT_USE_BACK_BUTTON_TO_NAVIGATE); + } + + // Load the files of a folder. + core.loadFolder(folderPath); + this.startFolder = this.core.getCurrentFolder(); + + // Add a listener for when a file is selected. + core.addListener(new FileChooserCore.OnFileSelectedListener() { + public void onFileSelected(File folder, String name) { + // Pass the data through an intent. + Intent intent = new Intent(); + Bundle bundle = new Bundle(); + bundle.putSerializable(OUTPUT_FILE_OBJECT, folder); + bundle.putString(OUTPUT_NEW_FILE_NAME, name); + intent.putExtras(bundle); + + setResult(RESULT_OK, intent); + finish(); + } + public void onFileSelected(File file) { + // Pass the data through an intent. + Intent intent = new Intent(); + Bundle bundle = new Bundle(); + bundle.putSerializable(OUTPUT_FILE_OBJECT, file); + intent.putExtras(bundle); + + setResult(RESULT_OK, intent); + finish(); + } + }); + } + + /** Called when the user push the 'back' button. */ + @Override + public void onBackPressed() { + // Verify if the activity must be finished or if the parent folder must be opened. + File current = this.core.getCurrentFolder(); + if(!this.useBackButton || current == null || current.getParent() == null || current.getPath().compareTo(this.startFolder.getPath()) == 0) { + // Close activity. + super.onBackPressed(); + }else{ + // Open parent. + this.core.loadFolder(current.getParent()); + } + } + + // ----- FileChooser methods ----- // + + public LinearLayout getRootLayout() { + View root = this.findViewById(R.id.rootLayout); + return (root instanceof LinearLayout)? (LinearLayout)root : null; + } + + public Context getContext() { + //return this.getBaseContext(); + return this; + } + + public void setCurrentFolderName(String name) { + this.setTitle(name); + } +} diff --git a/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java new file mode 100644 index 0000000..f233e88 --- /dev/null +++ b/library/app/src/main/java/ar/com/daidalos/afiledialog/FileChooserCore.java @@ -0,0 +1,605 @@ +/* + * + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog; + +import java.io.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.LinkedList; +import java.util.List; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Environment; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.LinearLayout; +import ar.com.daidalos.afiledialog.view.FileItem; + +/** + * This class implements the common features of a file chooser. + */ +class FileChooserCore { + + // ----- Attributes ----- // + + /** + * The file chooser in which all the operations are performed. + */ + private FileChooser chooser; + + /** + * The listeners for the event of select a file. + */ + private List listeners; + + /** + * A regular expression for filter the files. + */ + private String filter; + + /** + * A boolean indicating if only the files that can be selected (they pass the filter) must be show. + */ + private boolean showOnlySelectable; + + /** + * A boolean indicating if the user can create files. + */ + private boolean canCreateFiles; + + /** + * A boolean indicating if the chooser is going to be used to select folders. + */ + private boolean folderMode; + + /** + * A file that indicates the folder that is currently being displayed. + */ + private File currentFolder; + + /** + * This attribut allows to override the default value of the labels. + */ + private FileChooserLabels labels; + + /** + * A boolean that indicates if a confirmation dialog must be displaying when selecting a file. + */ + private boolean showConfirmationOnSelect; + + /** + * A boolean that indicates if a confirmation dialog must be displaying when creating a file. + */ + private boolean showConfirmationOnCreate; + + /** + * A boolean indicating if the folder's full path must be show in the title. + */ + private boolean showFullPathInTitle; + + // ---- Static attributes ----- // + + /** + * Static attribute for save the folder displayed by default. + */ + private static File defaultFolder; + + /** + * Static constructor. + */ + static { + defaultFolder = null; + } + + // ----- Constructor ----- // + + /** + * Creates an instance of this class. + * + * @param fileChooser The graphical file chooser. + */ + public FileChooserCore(FileChooser fileChooser) { + // Initialize attributes. + this.chooser = fileChooser; + this.listeners = new LinkedList(); + this.filter = null; + this.showOnlySelectable = false; + this.setCanCreateFiles(false); + this.setFolderMode(false); + this.currentFolder = null; + this.labels = null; + this.showConfirmationOnCreate = false; + this.showConfirmationOnSelect = false; + this.showFullPathInTitle = false; + + // Add listener for the buttons. + LinearLayout root = this.chooser.getRootLayout(); + Button addButton = (Button) root.findViewById(R.id.buttonAdd); + addButton.setOnClickListener(addButtonClickListener); + Button okButton = (Button) root.findViewById(R.id.buttonOk); + okButton.setOnClickListener(okButtonClickListener); + } + + // ----- Events methods ----- // + + /** + * Implementation of the click listener for when the add button is clicked. + */ + private View.OnClickListener addButtonClickListener = new View.OnClickListener() { + public void onClick(View v) { + // Get the current context. + Context context = v.getContext(); + + // Create an alert dialog. + AlertDialog.Builder alert = new AlertDialog.Builder(context); + + // Define the dialog's labels. + String title = context.getString(FileChooserCore.this.folderMode? R.string.daidalos_create_folder : R.string.daidalos_create_file); + if(FileChooserCore.this.labels != null && FileChooserCore.this.labels.createFileDialogTitle != null) title = FileChooserCore.this.labels.createFileDialogTitle; + String message = context.getString(FileChooserCore.this.folderMode? R.string.daidalos_enter_folder_name : R.string.daidalos_enter_file_name); + if(FileChooserCore.this.labels != null && FileChooserCore.this.labels.createFileDialogMessage != null) message = FileChooserCore.this.labels.createFileDialogMessage; + String posButton = (FileChooserCore.this.labels != null && FileChooserCore.this.labels.createFileDialogAcceptButton != null)? FileChooserCore.this.labels.createFileDialogAcceptButton : context.getString(R.string.daidalos_accept); + String negButton = (FileChooserCore.this.labels != null && FileChooserCore.this.labels.createFileDialogCancelButton != null)? FileChooserCore.this.labels.createFileDialogCancelButton : context.getString(R.string.daidalos_cancel); + + // Set the title and the message. + alert.setTitle( title ); + alert.setMessage( message ); + + // Set an EditText view to get the file's name. + final EditText input = new EditText(context); + input.setSingleLine(); + alert.setView(input); + + // Set the 'ok' and 'cancel' buttons. + alert.setPositiveButton(posButton, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + String fileName = input.getText().toString(); + // Verify if a value has been entered. + if(fileName != null && fileName.length() > 0) { + // Notify the listeners. + FileChooserCore.this.notifyListeners(FileChooserCore.this.currentFolder, fileName); + } + } + }); + alert.setNegativeButton(negButton, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + // Do nothing, automatically the dialog is going to be closed. + } + }); + + // Show the dialog. + alert.show(); + } + }; + + /** + * Implementation of the click listener for when the ok button is clicked. + */ + private View.OnClickListener okButtonClickListener = new View.OnClickListener() { + public void onClick(View v) { + // Notify the listeners. + FileChooserCore.this.notifyListeners(FileChooserCore.this.currentFolder, null); + } + }; + + /** + * Implementation of the click listener for when a file item is clicked. + */ + private FileItem.OnFileClickListener fileItemClickListener = new FileItem.OnFileClickListener() { + public void onClick(FileItem source) { + // Verify if the item is a folder. + File file = source.getFile(); + if(file.isDirectory()) { + // Open the folder. + FileChooserCore.this.loadFolder(file); + } else { + // Notify the listeners. + FileChooserCore.this.notifyListeners(file, null); + } + } + }; + + /** + * Add a listener for the event of a file selected. + * + * @param listener The listener to add. + */ + public void addListener(OnFileSelectedListener listener) { + this.listeners.add(listener); + } + + /** + * Removes a listener for the event of a file selected. + * + * @param listener The listener to remove. + */ + public void removeListener(OnFileSelectedListener listener) { + this.listeners.remove(listener); + } + + /** + * Removes all the listeners for the event of a file selected. + */ + public void removeAllListeners() { + this.listeners.clear(); + } + + /** + * Interface definition for a callback to be invoked when a file is selected. + */ + public interface OnFileSelectedListener { + /** + * Called when a file has been selected. + * + * @param file The file selected. + */ + void onFileSelected(File file); + + /** + * Called when an user wants to be create a file. + * + * @param folder The file's parent folder. + * @param name The file's name. + */ + void onFileSelected(File folder, String name); + } + + /** + * Notify to all listeners that a file has been selected or created. + * + * @param file The file or folder selected or the folder in which the file must be created. + * @param name The name of the file that must be created or 'null' if a file was selected (instead of being created). + */ + private void notifyListeners(final File file, final String name) { + // Determine if a file has been selected or created. + final boolean creation = name != null && name.length() > 0; + + // Verify if a confirmation dialog must be show. + if((creation && this.showConfirmationOnCreate || !creation && this.showConfirmationOnSelect)) { + // Create an alert dialog. + Context context = this.chooser.getContext(); + AlertDialog.Builder alert = new AlertDialog.Builder(context); + + // Define the dialog's labels. + String message = null; + if(FileChooserCore.this.labels != null && ((creation && FileChooserCore.this.labels.messageConfirmCreation != null) || (!creation && FileChooserCore.this.labels.messageConfirmSelection != null))) { + message = creation? FileChooserCore.this.labels.messageConfirmCreation : FileChooserCore.this.labels.messageConfirmSelection; + } else { + if(FileChooserCore.this.folderMode) { + message = context.getString(creation? R.string.daidalos_confirm_create_folder : R.string.daidalos_confirm_select_folder); + } else { + message = context.getString(creation? R.string.daidalos_confirm_create_file : R.string.daidalos_confirm_select_file); + } + } + if(message != null) message = message.replace("$file_name", name!=null? name : file.getName()); + String posButton = (FileChooserCore.this.labels != null && FileChooserCore.this.labels.labelConfirmYesButton != null)? FileChooserCore.this.labels.labelConfirmYesButton : context.getString(R.string.daidalos_yes); + String negButton = (FileChooserCore.this.labels != null && FileChooserCore.this.labels.labelConfirmNoButton != null)? FileChooserCore.this.labels.labelConfirmNoButton : context.getString(R.string.daidalos_no); + + // Set the message and the 'yes' and 'no' buttons. + alert.setMessage( message ); + alert.setPositiveButton(posButton, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + // Notify to listeners. + for(int i=0; i 0) { + path = new File(folderPath); + } + + this.loadFolder(path); + } + + /** + * Loads all the files of a folder in the file chooser. + * + * If no path is specified ('folder' is null) the root folder of the SD card is going to be used. + * + * @param folder The folder. + */ + public void loadFolder(File folder) { + // Remove previous files. + LinearLayout root = this.chooser.getRootLayout(); + LinearLayout layout = (LinearLayout) root.findViewById(R.id.linearLayoutFiles); + layout.removeAllViews(); + + // Get the file path. + if(folder == null || !folder.exists()) { + if(defaultFolder != null) { + this.currentFolder = defaultFolder; + } else { + this.currentFolder = Environment.getExternalStorageDirectory(); + } + } else { + this.currentFolder = folder; + } + + // Verify if the path exists. + if(this.currentFolder.exists() && layout != null) { + List fileItems = new LinkedList(); + + // Add the parent folder. + if(this.currentFolder.getParent() != null) { + File parent = new File(this.currentFolder.getParent()); + if(parent.exists()) { + fileItems.add(new FileItem(this.chooser.getContext(), parent, "..")); + } + } + + // Verify if the file is a directory. + if(this.currentFolder.isDirectory()) { + // Get the folder's files. + File[] fileList = this.currentFolder.listFiles(); + if(fileList != null) { + // Order the files alphabetically and separating folders from files. + Arrays.sort(fileList, new Comparator() { + public int compare(File file1, File file2) { + if(file1 != null && file2 != null) { + if(file1.isDirectory() && (!file2.isDirectory())) return -1; + if(file2.isDirectory() && (!file1.isDirectory())) return 1; + return file1.getName().compareTo(file2.getName()); + } + return 0; + } + }); + + // Iterate all the files in the folder. + for(int i=0; i + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog; + +import java.io.File; +import java.util.LinkedList; +import java.util.List; + +import ar.com.daidalos.afiledialog.R; + +import android.app.Dialog; +import android.content.Context; +import android.view.View; +import android.view.WindowManager; +import android.widget.LinearLayout; + +/** + * A file chooser implemented in a Dialog. + */ +public class FileChooserDialog extends Dialog implements FileChooser { + + // ----- Attributes ----- // + + /** + * The core of this file chooser. + */ + private FileChooserCore core; + + /** + * The listeners for the event of select a file. + */ + private List listeners; + + // ----- Constructors ----- // + + /** + * Creates a file chooser dialog which, by default, lists all the files in the SD card. + * + * @param context The current context. + */ + public FileChooserDialog(Context context) { + this(context, null); + } + + /** + * Creates a file chooser dialog which lists all the file of a particular folder. + * + * @param context The current context. + * @param folderPath The folder which files are going to be listed. + */ + public FileChooserDialog(Context context, String folderPath) { + // Call superclass constructor. + super(context); + + // Set layout. + this.setContentView(R.layout.daidalos_file_chooser); + + // Maximize the dialog. + WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); + lp.copyFrom(this.getWindow().getAttributes()); + lp.width = WindowManager.LayoutParams.FILL_PARENT; + lp.height = WindowManager.LayoutParams.FILL_PARENT; + this.getWindow().setAttributes(lp); + + // By default, load the SD card files. + this.core = new FileChooserCore(this); + this.core.loadFolder(folderPath); + + // Initialize attributes. + this.listeners = new LinkedList(); + + // Set the background color. + LinearLayout layout = (LinearLayout) this.findViewById(R.id.rootLayout); + layout.setBackgroundColor(context.getResources().getColor(R.color.daidalos_backgroud)); + + // Add a listener for when a file is selected. + core.addListener(new FileChooserCore.OnFileSelectedListener() { + public void onFileSelected(File folder, String name) { + // Call to the listeners. + for(int i=0; i + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog; + +import java.io.Serializable; + +/** + * Instances of this classes are used to re-define the value of the labels of a file chooser. + * + * If an attribute is set to null, then the default value is going to be used. + */ +public class FileChooserLabels implements Serializable { + + /** + * Static field required by the interface Serializable. + */ + private static final long serialVersionUID = 1L; + + /** + * Default's constructor. + */ + public FileChooserLabels() { + this.labelAddButton = null; + this.labelSelectButton = null; + this.messageConfirmSelection = null; + this.messageConfirmCreation = null; + this.labelConfirmYesButton = null; + this.labelConfirmNoButton = null; + this.createFileDialogTitle = null; + this.createFileDialogTitle = null; + this.createFileDialogAcceptButton = null; + this.createFileDialogCancelButton = null; + } + + /** + * The label for the button used to create a file or a folder. + */ + public String labelAddButton; + + /** + * The label for the button for select the current folder (when using the file chooser for select folders). + */ + public String labelSelectButton; + + /** + * The message displayed by the confirmation dialog, when selecting a file. + * + * In this string, the character sequence '$file_name' is going to be replace by the file's name. + */ + public String messageConfirmSelection; + + /** + * The message displayed by the confirmation dialog, when creating a file. + * + * In this string, the character sequence '$file_name' is going to be replace by the file's name. + */ + public String messageConfirmCreation; + + /** + * The label for the 'yes' button when confirming the selection o creation of a file. + */ + public String labelConfirmYesButton; + + /** + * The label for the 'no' button when confirming the selection o creation of a file. + */ + public String labelConfirmNoButton; + + /** + * The title of the dialog for create a file. + */ + public String createFileDialogTitle; + + /** + * The message of the dialog for create a file. + */ + public String createFileDialogMessage; + + /** + * The label of the 'accept' button in the dialog for create a file. + */ + public String createFileDialogAcceptButton; + + /** + * The label of the 'cancel' button in the dialog for create a file. + */ + public String createFileDialogCancelButton; +} diff --git a/library/app/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java b/library/app/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java new file mode 100644 index 0000000..7aadce3 --- /dev/null +++ b/library/app/src/main/java/ar/com/daidalos/afiledialog/view/FileItem.java @@ -0,0 +1,261 @@ +/* + * + * + * This file is part of aFileDialog. + * + * aFileDialog is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * aFileDialog is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with aFileDialog. If not, see . + */ + +package ar.com.daidalos.afiledialog.view; + +import java.io.File; +import java.util.LinkedList; +import java.util.List; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import ar.com.daidalos.afiledialog.R; + +/** + * This class is used to represents the files that can be selected by the user. + */ +public class FileItem extends LinearLayout { + + // ----- Attributes ----- // + + /** + * The file which is represented by this item. + */ + private File file; + + /** + * The image in which show the file's icon. + */ + private ImageView icon; + + /** + * The label in which show the file's name. + */ + private TextView label; + + /** + * A boolean indicating if the item can be selected. + */ + private boolean selectable; + + /** + * The listeners for the click event. + */ + private List listeners; + + // ----- Constructor ----- // + + /** + * The class main constructor. + * + * @param context The application's context. + */ + public FileItem(Context context) { + super(context); + + // Define the layout. + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + inflater.inflate(R.layout.daidalos_file_item, this, true); + + // Initialize attributes. + this.file = null; + this.selectable = true; + this.icon = (ImageView) this.findViewById(R.id.imageViewIcon); + this.label = (TextView) this.findViewById(R.id.textViewLabel); + this.listeners = new LinkedList(); + + // Add a listener for the click event. + this.setOnClickListener(this.clickListener); + } + + /** + * A class constructor. + * + * @param context The application's context. + * @param file The file represented by this item + */ + public FileItem(Context context, File file) { + this(context); + + // Set the file. + this.setFile(file); + } + + /** + * A class constructor. + * + * @param context The application's context. + * @param file The file represented by this item. + * @param label The label of this item. + */ + public FileItem(Context context, File file, String label) { + this(context, file); + + // Set the label. + this.setLabel(label); + } + + // ----- Get() and Set() methods ----- // + + /** + * Defines the file represented by this item. + * + * @param file A file. + */ + public void setFile(File file) { + if(file != null) { + this.file = file; + + // Replace the label by the file's name. + this.setLabel(file.getName()); + + // Change the icon, depending if the file is a folder or not. + this.updateIcon(); + } + } + + /** + * Returns the file represented by this item. + * + * @return A file. + */ + public File getFile() { + return this.file; + } + + /** + * Changes the label of this item, which by default is the file's name. + * + * This method must be called after invoking the method setFile(), otherwise + * the label is going to be overwritten with the file's name. + * + * @param label A string value. + */ + public void setLabel(String label) { + // Verify if 'label' is not null. + if(label == null) label = ""; + + // Change the label. + this.label.setText(label); + } + + /** + * Verifies if the item can be selected. + * + * @return 'true' if the item can be selected, 'false' if not. + */ + public boolean isSelectable() { + return this.selectable; + } + + /** + * Defines if the item can be selected or not. + * + * @param selectable 'true' if the item can be selected, 'false' if not. + */ + public void setSelectable(boolean selectable) { + // Save the value. + this.selectable = selectable; + + // Update the icon. + this.updateIcon(); + } + + // ----- Miscellaneous methods ----- // + + /** + * Updates the icon according to if the file is a folder and if it can be selected. + */ + private void updateIcon() { + // Define the icon. + int icon = R.drawable.document_gray; + if(this.selectable) { + icon = (this.file != null && file.isDirectory())? R.drawable.folder : R.drawable.document; + } + + // Set the icon. + this.icon.setImageDrawable(getResources().getDrawable( icon )); + + // Change the color of the text. + if(icon != R.drawable.document_gray) { + this.label.setTextColor(getResources().getColor(R.color.daidalos_active_file)); + } else { + this.label.setTextColor(getResources().getColor(R.color.daidalos_inactive_file)); + } + } + + // ----- Events ----- // + + /** + * Listener for the click event. + */ + private View.OnClickListener clickListener = new View.OnClickListener() { + + public void onClick(View v) { + // Verify if the item can be selected. + if(FileItem.this.selectable) { + // Call the listeners. + for(int i=0; iPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+g|T=e(&?%bIv{Y!Z6?ZW5`ITuTr&Cab$Cq?b%#83rViD8N-z_C5#Cp zLZ9JEE@ZfD19|RjD^2cP>p5KKVCQ8FefC>#|LvbQWaRt`eTL#{qOdSv4%FSILdJ@L zj0IuFK-z>@MCdb^Wvv0@m4>Kls>J$+iV+f!`}P5R>o?FKbOJQ_i4C#H+?j@i)@X!o z3=k2r!5^U;=yi1p<3*?# zEI}2o4Am#fvEk%;Y&>0swyUi;{&o;ceNCWg!4V$;IZuYqiBQIlN87RCN(D+z<)Lh_ zKqOK*Sc)o=s6M$4Ems`gy39XXKFWr>l1Kf|9Eqk!$tx1s7zIf{m|QG6yBrGxn> zA1K87!D3YMO3^r6k0Y;-Ld|gsqzoAG5s(jI_|uaVu=Di}RNXH}!HrB5URsNyv)L#a z%thJ2#B9`Gs>9(|eNb~&f%IZ=5{M#!Oa<(E*NK|P6)3u!h5Q>CD7Zu-XR=TNIoBhf{WSM@nk2|{FNZ%AVva;8%bb0 z3H*5!TmMc1A4^gGIu`|x)3J6W0m;{*kZ?X6xfe6B?a6ki1(1M~7zwB~EAX{;sbJtA zN73WYPTIcdX~fM z=t}sVa6{0!)rc7KN9=G260fWgg+}VFC}iG^N9m8bI5@r!n?6^f@F$A>r}0SoVGW|M z2O@OH8^ME~NIV&X=7%k)I8}y>-XuhIh9RiU7yeCN2xuTSc_X0K2LaVS2wd-rz*3^f z4}pb#2rBSLRB1TUYf{j@rvrW=zL3$QQXsKN!dBBoZQLr$6c+tPaJ*;%zgzBze;AIn zFB4JxAq!Q%6r=t(>gRvojIRG|LpOGz4+n_-qSw3s(ShybEol3D1FAljAnPS1?t=)# z+zvw6Wg663claNn?;MCk)iv7C+^E9Fo7LEKvj&@QZA8QEIyBwhjOIJ_XuaErEq9yI zKGK4Y(Jk0I+J@~vbYRE5t?0bJ9lP%Dz?$4p7+C5;Mqk>2VHq*DldPo2^y7 zpQv=c%|P-adh#Rm1HwhCoD5!~gC z&^;uxF94ATf)IT$1hL&=i0>wugI{D0l1%p(nM0|tjkJW+90n{sp@1O?m@wmWgJyx9 z&tP&L1Ld78sP{~Q&hcq5JU5J~UCko+zj$#27v_$m~! zPlFKozz?A#o(Q<^1~0xd+|Jlz)lplx?6HGunh!4V#`5~e|5K;ZXi0KbS+|h6(9En8Ip=hM^#3HRb9vMA}u!*&x9UTeie-&87 zjBESOfI>P0b}30TFi`1|fJUzZ<_t`Q{@Ix@xugS&>$CMZiNBggx{` z$d9WLH0n;d;{vZM&TzkIkCmsb;dIObPJ6B3+-`#vP0QfYW)JtBj^OTdhG*|e_#CCM zI_`$R6CMaY?TOGc-UvVIi-@z7uxEl0b2( z&42;TfB`c;$9pCeQWz*?GEiJc5{)F$DFIHmJhYA~WBv&>k;tNpvqdtd!*fNL4=;rM zunAm-ZLn&{22N)!V9#5EWql@Cwr2_K+RWk5Xo2PJR#?$RvvJT4Zbuxz9b69Y(^TEg zxgzKy7omJFgkPe;57XeO>_!gojx7n3I6f7Xhh- zlmp&c69Pikl0-R4)KfTZV`17}X;DbcI-(?+k-3A@MMCp=RvFPv| zSach}veO7wEsJ4OPa^GRaM-mJPCb@b*>3~4Q}*yY=M29g8vHO9VOPBoam^pmHv$oR zBN%Zv=*i!pL0=0)+*Jyt%M_w~x{^r3sWq_9HWRkvU@iVCFpmU0XG0;42LBb3V3&|c zEs3;}$PN~!?2*Lu12RzSkprhkUW8h=9H#A;hRQApC~cjXxoI0@p;N(uX{|0Sw=9B9 zmoe;mP2qIh0xoBk!SkXM{Dxf-d~G$>-1J5Coj}Bmgdkxw97&^VkUUD^GD6%XZc`52 zj6eddIq{cCXebOeg=Ua-U?5>E5@6YKOs0>UMJ$41I}P}+bkO^qG^l+HlzK_xC~=%Z zi$|Q8KzWepr@!~nwMPP)U8-QOWkDf>K3l@V%tj>`?VAJJ0b_XcS0VBiJ=u{cq}-23 z=0n=8J;^}+Guk)5pi_*O`6zo?i1L?3D1T9evggE8+8jMDK=Ffo6yDE8{%AHl>YSnK zr34967A<5361Ljrv&J1VZ87f}=YMjYes_bo$-(^F#9d;9g9W2>B}7+xKmU$8Y#-P{ zuS*x~bQY-ffZ_%c+rnVVZb@hzQijv888V(Ep!``WDqpTg%^O+_e zMzoGKq4hÐh1zn$YsL3C*t?(Ddf;wfkT}q!#6YlmjDaAZhCp={=rZ zkp&&QS(sv`2svX($eBw*-jc8-?1|-)n6!deMYs|kl9(DuRVqOPmLzX}D6B+V_oEC;l$wRp-#iaeQxk~}&| z=1J-kM#N%dFt9pCzLZ~dGcutPd=4MA(DwCB7xz_#S)Q37{ikd zqN^W^H^pCpH!GOKGmAH&F-b0EL7{F?yG+pdZknaJ^VOqz$W^`tW>ekIauzP;Y00wxQx9Kqm}*6+aUAnFNmMLYW%E>HB3wv9EV# zhUn=Fdnvz{&dB{G4jMv%S}_ukwr2RstG@^gkN_pGFnolo_ScTq;Rh20zHy-rHVGPA z6rornP6Fm6;HrR_k2C{=x}qLR*m?-t3}NzG-q3^7k7fvY=Z2zRQ=ri*W&%=+8NSl; z2?0YM33N${I$2@$`5OPu56ltz-UG#dOQqUR0@Y$P15$b& zOM^xu2~>!YfTRw?pKSg`;J<~Cu>BTRpotK27tMhBW<}6(r1(@JNo^7^{gTATDT#MX zv=7207VhYT8zIMgrU-iLib6pW)N4qfP@Dv`NWl0nWpwLA8J&GhMYM>SU6~KNk;U+T zwE}scGWjq}j53bu-n8R-%^#8mN`{%fWzfEf5|Ics#O2+SnTCt)C6$6dCc!fob!U`3siK zMf%T$Sa!q)b6Yr=yGsqahiAZqHy2hH4B>dy41Nz*BIBnhn6B4@PUZ~p5ioaJ!Y`~U zgo)c?%w4XH$rkcZvLjZ=L)m>2RJcOJFpc100006JX literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-hdpi/document.png b/library/app/src/main/res/drawable-hdpi/document.png new file mode 100644 index 0000000000000000000000000000000000000000..e4fe0be7a31e72615bcabb9a8526bbe6fb53a855 GIT binary patch literal 1848 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 literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-hdpi/folder.png b/library/app/src/main/res/drawable-hdpi/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..b31c6ae238bdce08f1b597e9492a13dd009f4c37 GIT binary patch literal 5908 zcmV+v7whPWP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000a>Nkl=R@IRewg)c*z@uofZ(-xz4NZg zP3GRnO=MrqP2^rPO!MtUOIO0xF6>+mtVfZ{oPpL1CuajB=v}@F`Md)y4100}tS6Aq zSMWAU{3d0f04Wfq2ulE3LM<&Ivm5AEAk%~vf#bNaZReDL4ti02%!l`gOElldATxs zKphFdR1l@$xEhY_I0AK0fPN7!(HJm;j)e0081GStR^#0Z5SUnhSKz#n7=+ z$PbMo-O>y*VMc%`KdA6gxW~=Gbx#0UiQJV0SxLe&KrN#=Z7`CHkiK^D{k#7CP#=IJ zGZFy>*Hfj--t~@!X<%U*1BVBY9UMky+Z-g47DNEyIAKgBpWYWp0dNi2r=jyhNVKoO z=RdplX2UdpI-@Bd;2QV{hzRrh<^#R+F>rVg2j1C-E7mN98#j+720%i9DC8!ymT8!0 zodXS}0M%tn??xiR{H5J^^x+qN*Hxndt#QHI@PZ1#DP)vVRr~6|gXN?%t2F%p?>k095$zIA{6ApbU8{ zB0BpsW(tVsNk+uLs%|0x43H4^9XO7Gp%I+lvjFGybYNC80qs9;s>gI{gLov!Qmla@ zf!|6aII6aav?l3H9tsfeF8b#3yiK)oAFIG0%9YKGE0Qz^hv z<3lMR)#{)~eVHB-ITBYSlP84-PL3d%NX}3h6as|3@MDy-wp8gJV~QH7C8{a~flq=; z%?Jtl#&fs~)=`2%3d9M3s#r-4CB)M(3TdroyOC5N?`}naVW`Hs!Sb_8z6Sqg zR-GSJd~{;~Ffaurs1(6agoLGV-=ps}QUyx9&r-QbDU;7}VmvAZrLGtJNU(xufuWN$agoQ4q`<> zU`*hBu1JCe|3@Ca`>2?*(_u$>1&PlELmr|G$0+wkYVXAWx0R%ya1S4f% zLWmMX1aIxyi`mV|nvqY6s_(c-bxsfg#s>xgP{*8f$DQ*!+k28p>xQP3iCe$>()7;* zL^DMB+gg6^mj$UG@yb;A&F}t#rdcM4R8_AVhC;$Js^&ml3Ju2WW5Z}prMg?@ByrQX zpF0QbFacTwfxAwurz`2HM-_V18$N15#L`X#*}yt8xy@ zZBsBlz7o_Pvqo~XiU?v65U8khDjaQX&A8-~eK1V}9JgA836>eHJ)7Y=XQ0PEz{I3O zTu%TInww_9GEL}`sczg=i)hU5z7l4#4I_IV0l>jG8i>Bi zAobvk2LO8vTU7{!#1Pl%0f@ZX<5dfZJqnbPULa6|%p4w(sZaz+i~*g*i~xpWRg3_s zFaQb7`0CeQn$jSo##kvF0aV3!DIdni;Q;bDfP=<01VA;Ci)C41KcI0G!XW#<@5dF4 z8spjUCj-#207zISvW{IQb*tGFpVK6k@s&Xi(Tx9El5dMy;^j)7=Z2Kv_a68&41+?( zN2@_4HQ4xwQL3IbUZ5!zVO9u)@Xw|n8G)_rpYc-Qg99fO8Q!X;WHYl;H>yP%@V_)h z|J9>{03`fVLWWAnU>*9IW0RmVDAEW8UN0SiNrn8ZGuW%Kxg_;R^wIBA0FpicVdDd% z^Cci4b_5(bHu^6`3PfDq3!t3HM5cE?px(RWQcUHff5JCZ`;n0a;P|I*m;**K*@<8O ze%IHUnvx)*X#R5mNHmwdNi0I?QocD+^A)+WPB2OuD%^ZgVf>f^&=dl~1mFU&{ZFoh zXDl7?;A4M#eD8swllR~AnHLlRntdfMl{5ojD248>G{(m#k!bzXD;M)P0NTw`=n z1CRiKfCFp*X8=sr@_y_H2#y`^9{KymuROBi<;QQ`F}o=_*Nw{1LT($R)Q(+;|FdJ) z;r#%fNG42c-O8SeuDGQ8;?);-t>{d*_9YVrT$jCQ;$SQmj|dnFX*!If`F6OPKwjT% z`i5o!WB^R~#@F1TF&hoP;{%y}SKqwtqUW~W@@9AEoF$G+Wvomj6egv-?K<0c_P?`z zXa6ezPA5!5)?e1UX5*UP%^OztUAcU5#|6v+t>Xcrq44FdXK-WpvrvgycvDNj{Nn&d z{ZG4==cfz+0Gt}09Nciz!McC*IiE z-~YzW{$~KBEYnD@U$yA!4VU$8+O)Q3)3WpDEn-0wkPyg33QUH)w|DSB=1f+$J^k)O ze#oB&Fy@y%9c#~{9ud{pc~JnYC+`2!QyW+JTxUBPq6Ma9;eBQn!zlvECb*9+4E2T;pP25 z_kS<%dw$dhTgP?g*#HnIF!LvOed@tmzHsTca<&W8F!1EFuj7YXcYo1m;6dN`Oo*N9 z4QhkNCIz4=l~BFwR`y)Aadq#etJd_cOC?qN4c~m~+QH%cZvS`kzTvq>jIT45js4<+ z0$|6M%OAd9y=hFX5;1)Lt5z z1^@~mT>t6iw;y=*PWjvwoi75I51_?g{PeuhRE#>Bu4kTY3Y3CigoYCAhr7l{_%NsO qS>f(W5dV*CKGcIg?tec2zX1S~r6ihgZi~GD0000OwvMs$Q8_8nISM!^>PxsujeDCl4&hPxrxkp%Qc^^|l zp6LqAcf3zf1H4aA1Gv-O6ha)ktct9Y+VA@N^9i;p0H%6v>ZJZYQ`zEa396z-gi{r_ zDz)D=vgRv62GCVeRjK{15j7V@v6|2nafFX6W7z2j1_T0a zLyT3pGTubf1lB5)32>bl0*BflrA!$|_(WD2)iJIfV}37=ZKAC zSe3boYtQ=;o0i>)RtBvsI#iT{0!oF1VFeW`jDjF2Q4aE?{pGCAd>o8Kg#neIh*AMY zLl{;F!vLiem7s*x0<9FKAd6LoPz3~G32P+F+cuGOJ5gcC@pU_?C2fmix7g2)SUaQO$NS07~H)#fn!Q<}KQWtX}wW`g2>cMld+`7Rxgq zChaey66SG560JhO66zA!;sK1cWa2AG$9k~VQY??6bOmJsw9@3uL*z;WWa7(Nm{^TA zilc?y#N9O3LcTo2c)6d}SQl-v-pE4^#wb=s(RxaE28f3FQW(yp$ulG9{KcQ7r>7mQ zE!HYxUYex~*7IinL+l*>HR*UaD;HkQhkL(5I@UwN%Wz504M^d!ylo>ANvKPF_TvA< zkugG5;F6x}$s~J8cnev->_(Ic7%lGQgUi3n#XVo36lUpcS9s z)ympRr7}@|6WF)Ae;D{owN1;aZSR50al9h~?-WhbtKK%bDd zhML131oi1Bu1&Qb$Cp199LJ#;j5d|FhW8_i4KO1OI>}J^p2DfreMSVGY9aFlr&90t zyI2FvxQiKMFviSQeP$Ixh#70qj5O%I+O_I2t2XHWqmh2!1~tHpN3kA4n=1iHj?`@c<~3q^X6_Q$AqTDjBU`|!y<&lkqL|m5tG(b z8a!z&j^m(|;?SW(l*?tZ*{m2H9d&3jqBtXh>O-5e4Qp-W*a5=2NL&Oi62BUM)>zE3 zbSHb>aU3d@3cGggA`C-PsT9^)oy}%dHCaO~nwOrm5E54=aDg(&HR4S23Oa#-a^=}w%g?ZP-1iq8PSjE8jYaGZu z$I)?YN8he?F9>)2d$G6a*zm0XB*Rf&gZAjq(8l@CUDSY1tB#!i> zW$VfG%#SYSiZ};)>pHA`qlfDTEYQEwN6>NNEp+uxuqx({Fgr zjI@!4xRc?vk^9+~eU|mzH__dCDI=xb{Cd}4bELS9xRaS!*FXMwtMR-RR%SLMh0Cjl zencr8#Su<4(%}$yGVBU-HX{18v=yPH*+%^Vtknc>2A;%-~DrYFx^3XfuVgvZ{#1tA== zm3>IzAM2{3Iv_d1XG{P6^tN3|PkJMnjs&CWN7%7_CmjoVakUhsa&dMv==2~^ri?&x zVdv*rnfVyM+I1^Kg*S=23mR@+0T9BWFZUu~@toA8d)fw6be=`Yb6DSX6D?jB%2YT~ z*aHjtIOozfMhA!Jd*?u5_n!SnX>vX`=Ti-1HA4RiE>eI3vTn zz+>Ccf0HX6Ans-ebOB>RJST-Cyr#4XAk+mAlJgdQnoE{^iIN)OcYFSpgJUmXtl@tT z-^ZuUeSj5hSFrQwqX>~EtZ*{>Gi8Bu9_|o06oNtaXP?E936!a@DsvS*tsB@fa6kEA z5GkjwmH?EgpiG&itsB_Tb1NxtFnvxh_s@9KYX1Sttf?AlI~)z zT=6Y7ulx=}<8Scr_UqU-_z)5gPo%050PsbM*ZLno;_-ow&k?FZJtYmb2hPA$LkP)8 z=^d0Q6PImh6Y|QT?{grxj)S=uBKvY2EQUbm@ns9^yKiP~$DcD)c$5Em`zDSScH%iH zVov&m=cMo`1tYwA=!a}vb_ef_{)Q2?FUqn>BR$6phXQRv^1%=YfyE-F$AR4Q?9D!f zCzB^^#td~4u&l~l#rp2QLfe3+_ub9@+|x+m;=2(sQ`s%gO|j$XBb>A7Q(UydipiMw%igcweV#Cr~SP);q>w`bxts_4} znKHg?X==JDkQl3Y>Ckt%`s{n?Nq-1Fw5~%Mq$CAsi-`yu_bKm zxs#QdE7&vgJD%M84f4SNzSDv)S|V?|$!d5a#lhT5>>YWE4NGqa9-fbmV$=)@k&32kdEYetna>=j@0>V8+wRsL;po!3ivVwh<9tn z2S<1u9DAAQ>x1Sn=fk`)At|quvleV($B|#Kap_lB-F^*yV=wZ{9baUu(uXfokr95^ zA*!*W=5a>$2Ps`-F^+qRQT^{*cN>vipT*4!r#p%{(#I7s z0NN94*q?ib$KJjfDI_sjHNdmEVp5wB&j54O#VoFqBwy)gfA$%)4d_X4q${L9Xom2R3xy&ZBSNgt4a1d7K^CDWa9r zVb-_52m}Vp)`9;ZSKd#|U4ZYj5}Gp49{4utST|=c`~(#>KHF6}CCov1iHYw zt{bWo)A@yF2$~c(nR$rSAaFQ$(Wh{vkG1AlutDMw=mM`C`T=X&|Ad9fb5Od}ROt1z zOpczHqrb4Jo^rSCiW#&o(m7jFamnrsTpQb;*h4o8r#$aZ}2RaT-x2u^^ z%u@YyIv$U^u~@9(XGbSwU@fk6SikH>j+D1jQrYTKGJpW%vUT{!d}7THI5&Sa?~MKy zS0-mvMl+BOcroEJ@hN!2H_?coTEJ5Q<;Nd?yx;eIj4{$$E2?YUO|NtNPJ-PdDf;s} zab;}Mz0kbOI}5*w@3gROcnl#5)wQnEhDBfn!Xhy`u>C}*E~vWpO^HS)FC>8^umI=+ z&H;LW6w#;EF`}vQd_9Muru`KnQVPI9U?(sD)&Dg-0j3#(!fNKVZ_GoYH{la~d*1Yh$TI-TL>mI4vpNb@sU2=IZ8vL%AXUx0 zz{K0|nK(yizLHaeW#ZhRfQXoK^}1$=$#1{Yn002ovPDHLkV1n#w+^+xt literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-hdpi/no.png b/library/app/src/main/res/drawable-hdpi/no.png new file mode 100644 index 0000000000000000000000000000000000000000..aa1b230feb066721c6d3b2a01fa99712fe890121 GIT binary patch literal 2978 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 VTuR;feB1y4002ovPDHLkV1gZ*W3m7M literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-ldpi/document.png b/library/app/src/main/res/drawable-ldpi/document.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4d98bb415440d2e497999489c273d47908e7fe GIT binary patch literal 836 zcmV-K1H1f*P)Mc{K~z|UwU^6o(?Ar4zhgI*nsmb&wmbw<-yq5sLRpm!Z%UV_ zWtGxINHmQiwJKF0rDMmZi`eOSJmU+3BaLE@$Mb*ZGLx~WDus!N01+VkA5$PxOH_($ z5s82od5eqZ|5$tj+yQs0ngQ%t1A4&gpZE8ti7_C86m3hmyDyOy_wvjtR=;g=9MeBI zcmsR^9$f%{{lp}gBz+doTNFJD?SP!$khqk8_w8qU&Nv|#a{J2Etdt-?Q6alx^8oDnooiRb6>J5tBld|~qIIhxB-Rcfv;uqpp)_=`Y6?04goHyN z?P{Qdc-N43D?(puA>K6&-Xd&FLyMwo3*s%p;0kCEZ_2%W_6P#l;r2m<1ly#c+cL!2 z$6JW|1bklC0tlcU??dJjSJhH;$JPQMf~c0Z){yr;@hrP1C%88-?@pv(LaBNNNFm0(Jea z`0ed2%jFUgq2KS*>-CsUrx&Bq=o7FgPQOVSg+SyUtcqs zOs+}HH%Fc>hIOs>Y`@w?S(^%eLP zdfx^ptpGfCUlb|AuH|3MBSAZ?Y$sdrkK3stz^) O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGXbpQYZbpg<9qoDu*02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+`JRDHB*Ao~jSWyGxNz#xXm0hXq zR%N$ZlWMIlwfc>r%v5MBHRlX^CPTA_YD%f&c?O>7KPHk!Q^8dQ*A!frx|c?lhypE< zfmAFJQVDc)bcBHk6|8}mGeG1q_&_VtN?j`ql(xaOAkv1k1;Y){Zz}JL+-AU=gAi;$ zVs_GM5mlRdH#1ORKq1y^KXQvY1AA2(FoSiw(v9f&__){rgX6$9XnxgR)J!>GgJwXj zl1lre;GXK_uj+PBvy2H83fv1CIRp)^L#dLmtUYr0hx7C(_ zht-8pfW9s+E{Y8>U<@L=7;D=m-D0QTRGtS9p|>(n7VcLZtCosG6>dcInmM2qtns|c zWAGS|YnPXoPNiA^)J2~Toj-6EyTQYF&42-8KMNCJ(qnxu1CIemZUK>xQhlsyu8|H& zjl2)At@^$9Cq9fm1_un3)j~1c%f2DgZ^PjS65hmz@_KK5kHImBVZh80%bD*JccfG4 z-`6?=V?$3wfc?qO>%BkS^d4itG0(BAu4jr$r6M~!JF>m~UADHiWpZ+|tMFHOhf;SU z@(tw0A69R%8+>D9L+0k@WPW~L78e&~X=w@gPrd&;)uY&PjB9-c!X1xz^Wx`!7-s{c z^4Zy0x9;iv>gp=+UwZ!!d1pa0lo<&79~(Y@bD>SZ=r@ti%zSgLSX*0@>FMd;3izUW zmREVd0ZuRJcf7U0HxP@Tw5Xng%;x5%EG#U@`ue)TzbfE)5&UlpJOi--3=LTPOngJ1 z9adIWWO;d6rlzKdorwpY`#9zs<7s7_Lxv?#WZ>%R%565h9|Js5VL;&w+u%~w)~g@UF+8h@9BMb4vap24Ku_OF>CZQ%kh@_q@R1KdN@ku{(CWj kb5_J{#Al;VzIlfJ0IHQ%Wz_{B1^@s607*qoM6N<$f}UyWM*si- literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-ldpi/folder.png b/library/app/src/main/res/drawable-ldpi/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..330cb2e4bf8ac344014dd3d22910de1ae884343a GIT binary patch literal 4260 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 literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-ldpi/ic_launcher.png b/library/app/src/main/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1095584ec21f71cd0afc9e0993aa2209671b590c GIT binary patch literal 1723 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 literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-mdpi/add.png b/library/app/src/main/res/drawable-mdpi/add.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6871a5f1db26436dde6b5f7c151b078ad16948 GIT binary patch literal 2081 zcmV++2;TRJP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+#&7}?lZB+(9YV)f z?dYy=V(VZ%Ethn(4K{K3aToEM)tD?21{BB?Qq;i^c8*FkJglZ+xCY%o9ZeUtbUr#j zTtf_|OARP6sX$0E$HUn7Y8Se%YpH*@f%G6I1{5$a7gB6bI0xVE zqj_{Q+OMkEbhn(k!42%bw-a@96sF4!C}6QkNGs2&IQ-)Q+FmuV<(rMvJS?U9s)p?& z?ZmXGPy`uJK-nmy#K9UDuxSay|<0%)(8}#h7@QQ(yFUb9RH~c z={p@;UQ|>4WigtYc{JVA5!DusBHVxiQ}!yQw43o9``01bzSmO!vXY9&>nRw{WXniB z347Iilwvi$F^nh)kBr$Ep`VfAsGpc3^yaxT8lktS5qi1gdduxXFK?-L_*9|yKfUPL z`n&0L{q!+SZ)>R;Eur{PHo4bQ*?gx4O-})d?XiEDnr*K)QwzN!M8;3(OY%9xkt_#w2m4ryt*tRpNV2&)CkW?}3pv@WY0uxuCDoiJhcMLWE1yAu6u z8QHH_QTc8iwLccK=|>GU?~18>lTXoT2HB63SbZyo_)B4|JfR}7Gn(YCSk@d(ApJxV zSv@J_^{!=oUnWI;IcU!0Q{G$1hTal3_Lbq5Fc0IoLKbirT1T}l%1r{Ry#j}B1+JIu z@fe=T@<)qMJ@qAdR7K9qByvYrlle4})Q4(T4u=snu$;(KfkYn&CiYM`2`3^+?u}v1 z`FPR?63M!pOzxF6R@w_<;&*544-k49&bx*=S_a*4Fr3C4{2>Ha1@UCSpirKc;xDq%46MT~dk!YvV*>Mq);Zh(iwc27r7Te| zOY9Wb95KSa+Z3lhb6n0U-{W{@5_Ts|us>|d?0p~MwQB)^ot}jB_z-z%87r@alX^Rr ztOrTt|2B=HCz)uT4(>kg1lb zwZ&z#jMkPp?JoEpT1=jN3g6EHP;NHDYPZ1l*TzgcXGPeJpg&9Yy56@bGm|Ek z2x(%GOrcD^kj!#qGGtQZy^_tOxmhzMr?@HVar}@8VU=Je1sn{(?{Wav`#$u@*w`+; zHJhXtVFX@Ug53_q_@a0`1`3sseD?U@cQpW;!yit+@N;JZ9xNpNPimIS0!qn%kCEvL zSzw0`{=)%GK5op6^ESBOm_hIp4|3lo5;Wj}vfYpZK0@+tl?84EV5c`>)&<-5;5Mo=fN+r9r2A11wW(^d{GwIWP7y$WPcto00000 LNkvXXu0mjf#;^10 literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-mdpi/document.png b/library/app/src/main/res/drawable-mdpi/document.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9da3d4e7d7e766fd2dd5b4d2ea8324413015bf GIT binary patch literal 1304 zcmV+z1?T#SP)|^<3<$6KjU8;yc^maLVGLpPbv8m3B{ma62y4ePnJfVn=I26)7SIDa!2d;r1TtVIrJU;>9m~l(z{kK|N&jm8F6Y{Msf~7X?#Lg_vfO*nnSy-bNH$MO0XIv8JncfG?XLuI+M+4VF=L zgEIKXnxoeHzR<2#TQ2*;yGEgGtnCRffh*u$H@Iy8I}0#Z4k!4s6=}=Rx;aOn4!+Lo zn?#}UBrb%ojDYIf6nNx-_5db57 z9Kn2dUms!Bb3pgFabsKVSGB9aHi<;_9AI_ws==C+2-~iKl-1Tkz*^2LfTw`B{Rgq} zBreN;AMd%85>mUrEp3mpSYpVjRLOeiiW`gH=z5=g~>Re4g4$OeuU4ZFz>b+4VO82e; z*9EBesz1-?2qBnG6M24q{vGfhNX!QvP8(UBx$MSfy5xCImSrSKLXsq;X-b-=WLbs~ zf?lu3Y&PTK;^N1nqoZ$uKY-XA$9p65f!5*m++TP&CrJ|S@9znMfNr--zyFfGy$|Vj zyM$rLcszbH8jZdNu7JO#l$n=+6(Jk!oF=@ALKH@qff%j6%)OPQd4~VPR%W~hGz|-ket?|ThT)^Ml+}s}?9)1b@2K*(ZoR%?p3Gg)` zMCr1r1oZp;0zM2wZf|dclarIvD2gtDd!Q74s{+b)TD`5W^=X`fI${ORtZVdlswPb+1V-5=J@#dbTXN|0saJ{I(VA^ zYrWCbY~xEQ7Y}{2jNRQ`!Z76O>gw%iH2NZnqF-60jT1aP*K=Sg5kk=Ib{UVyzYGS0 zV#4B(Ho86OB(5B|)#CE<@~6RI@HueF;vu#dJlG>J2WIVdd-V%E)k|hspAdppt3{{N zK?p&+-KN!Q@c1q8 zk8Ou_HJgAA@Dg~z)1_F(qOM7#lxr2HkF5y+5X*en&NuIMlfJoLX8!?)*K3a(K^6r7 O0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGZFaQ7rFac$%%C-Oi02y>eSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+L{Y(hx2^s1{f3ZrvduETU`XXVWqsw> z)%VeL+Zk*)bhq7o?>VQ=_f_4x-n$q6c#b~0ONgM__|fz9_7%b#gg5U9zy+MZE%xym zed80t*Mx8H2*3rLz%BBD$UGqYaCmsAcFPr2u2fV7s8$IzRjt)jO{1=A^}4Dv_V!fW zU~hk40sAfv4%EKD0ln6sb4B6w^i+Y9;RcSO4}ADO;TMq4WOFK;%d1>IukwWgp{NSQ zqAG50YiyTFshUM}}KuC$a)?a?U&A z!jWl#T_h3!_hhl|n)YbBi|e{GCo~b4t_G0Qq^VdL$UT7f zC)e|UUxY9zL4fY-0pz(zUDsXW(&+|g4M8T_@JyLMV$k=@MCLERhdgK8&c0%nwZt9L zD9%=Jc6R1J0?4g&zA5h_>kY045SQ+{gpuz!Bo`oOR59htLY3q>F6?+1aY-2Qh{O5$ zx&H_t3bJ5r<{jsCWL(!pRM>G}(o$4g0_=jzX_0U~h&;QVggBxSgk%E9)mF*7k#Wg~ zMI?-{`}afwkY_ExtQ7UEYL)=f`3CZ)t8iR`h_^~welM8-npo_`OAF-VT#t$e2u9)J z;=;d(;j9*5iq`Em()lFh<4DWT6ANf)mu5Y~mw*s}f|cam$b=PS5P6Uc!{y~=vJub% zMDAVknC>9}nU5pyOInIaCV<>U;o9h!UeC_6`#}X8)J5D##5oSq65fkB5Y+CA=(xF$ zBk#H%6%m*4tq5=@tGL{|tuM;;IKsChz;)j&5rT4mTjYaADNzj|LUzJ37a*%L(&2rjrTSW_SIuA!jw#_8u zUE(;dzI?=WF}5DXH8kFvYhphEIH>LWp4pFbp2@>;5Cd_X2Mq&l8<(hd2ancbc<-|_ zXZM9zfbIJMla{ahAkT5(+8=olm5gnLoYSmqo$^&H2F*>qZStz)zHw;zr^-e!e@k6}&VzQjv9X~hCMLA= z=stskgNO~B|AK(qs*(LZEK_`wuS0i?HU+r(hX52WZk(WP&d$zi^8Nk&e-k0x#QQX< z^DOAu2%yPoZEa1H@9pjVlTQ8<;o~HkcSqux2|)IHdU}qD046E)d9=zzv5_KhfOiQG z(LHcu0Ud-hA9Z0Kw${gQ{lVP6i*bdtZnML+rqA_!Q*GH`>T zUGTAfrel3cc$*NrJn$8P140Bw0(b472Jr6;Xp=Aal56$*{BJgx7oG;%&N>VEAAecC UGaJ%1AOHXW07*qoM6N<$g8r>M)Bpeg literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-mdpi/folder.png b/library/app/src/main/res/drawable-mdpi/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb0c6f791691f3f07711dfd214599798959bf64 GIT binary patch literal 4974 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 literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-mdpi/ic_launcher.png b/library/app/src/main/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a07c69fa5a0f4da5d5efe96eea12a543154dbab6 GIT binary patch literal 2574 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 TpH~Tl00000NkvXXu0mjfwxBx_ literal 0 HcmV?d00001 diff --git a/library/app/src/main/res/drawable-mdpi/tick.png b/library/app/src/main/res/drawable-mdpi/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..fd847a5b5383728a4ed41a3086bdd8a6d87a1076 GIT binary patch literal 4137 zcmV+^5Z3RBP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000G4NklrYfi7{;HObN0r*@(%?HVnAf-aN!SxUJnCi8F5 zB{qMO62-w7;ZtGMh7#p;X-T%gs2gLhctTF%>DrZo zLfr@iy$JZy!lK0Oyqo5c0epJgTtk@LURGifz3eDEe}kB_!Q|gLS-Eh?Vab^H z%$v6k0_oz9WQsvKQ);Hw7`+Rp^nkFw` zZ?S0aC*Jpi*}{m@QCU_XP~L~h=pYn@hiljvQ6##3-z&YL`;9^NH?PkZrO5fh0%MNR zNNI{D8z40K^KboXP{M!kf>WMLxc8{p!g0#E>dHcaQ~Ti!_X5zs@6jd$w& zJ}XEQ@$iMbe0`2eKT0RU-5BvYKtR;>8%m;3nDouyjyptqj+mX3xr~m|geU@x01O!Qo&hB)eO+x)V5qx??LM*bU%~G0Dys-l zy4F>f2x?sv6G11yctFwO#!y;R6zQw`ck~A53qZcQltBkBndG8!KX?@nurL4yj%tx_ zd={b-a(8wP<}j_1khrgka;)nKOR1pNMd1#dpPq&hzA;(ykLz0YHC*1jkUxkp#?a(6 zs0VvZiQ=jtD5XfmLQrcMRJ;~>#^;cfCWg8%#tS7(h0Rr~(=@smT)r*@0~9)a3JBD= z_P2IY66u;$gJ*If02BahmO!$o(v@+gCmoDYL?T*D`Z2N8`@WSio+ zGVwKZ8a*bb{21|`fg%IJ00+Tfz@#@RO9@S<-Z0+$AUi0z{aD`QG*k>YO}%St2yR~Y z0AR>ANl@_`$Vw6bgU8JQ;E|bSz_or7lqFh_YV`OY1mKQbV6z1J)>>Q}2mW9%6|4ed z1fDStvYY^84B-%kBoeI1GvUUd5>pgndr7w1%NBS?su`)j&ibCObagZc} zP>@2%G$P;*%92Qb(Hq8(Jxmgt6Toiki#Ik^q}y$MrV3VAt%v8vFmfL+#7Ms{akV$u`0f7TQvjqnsyyqd z08l8-={PXWlT+p?kzz+(Wi0AvEl03ZNJ1&{(j3qTD(1%R6lHJNK%@ + + + + + + + + + + + +