From 0fe3c5a896500cee3f09c48951dd7df3e388f704 Mon Sep 17 00:00:00 2001 From: jfmdev Date: Thu, 7 May 2015 09:42:15 +0000 Subject: [PATCH] Migration to GitHub --- .gitignore | 4 + Readme.md | 80 +++ demo/.classpath | 10 + demo/.project | 33 + demo/.settings/org.eclipse.jdt.core.prefs | 5 + .../org.eclipse.ltk.core.refactoring.prefs | 3 + demo/AndroidManifest.xml | 26 + demo/lgpl-3.0.txt | 165 +++++ demo/lint.xml | 3 + demo/proguard.cfg | 40 ++ demo/project.properties | 12 + demo/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4760 bytes demo/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1913 bytes demo/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2750 bytes demo/res/layout/main.xml | 127 ++++ demo/res/values-en/strings.xml | 18 + demo/res/values-es/strings.xml | 18 + demo/res/values-fr/strings.xml | 18 + demo/res/values/strings.xml | 18 + .../test/AFileDialogTestingActivity.java | 397 ++++++++++++ docs/SoftwareDesignDescription.md | 97 +++ docs/SoftwareDesignDescriptionEs.md | 100 +++ docs/UserGuide.md | 247 +++++++ docs/UserGuideEs.md | 247 +++++++ docs/UserGuideFr.md | 248 +++++++ lgpl-3.0.txt | 165 +++++ library/.classpath | 9 + 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/AndroidManifest.xml | 15 + library/lgpl-3.0.txt | 165 +++++ library/lint.xml | 3 + library/proguard.cfg | 40 ++ library/project.properties | 12 + library/res/drawable-hdpi/add.png | Bin 0 -> 3980 bytes library/res/drawable-hdpi/document.png | Bin 0 -> 1848 bytes library/res/drawable-hdpi/document_gray.png | Bin 0 -> 2418 bytes library/res/drawable-hdpi/folder.png | Bin 0 -> 5908 bytes library/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4147 bytes library/res/drawable-hdpi/no.png | Bin 0 -> 2978 bytes library/res/drawable-hdpi/tick.png | Bin 0 -> 4952 bytes library/res/drawable-ldpi/add.png | Bin 0 -> 1363 bytes library/res/drawable-ldpi/document.png | Bin 0 -> 836 bytes library/res/drawable-ldpi/document_gray.png | Bin 0 -> 1066 bytes library/res/drawable-ldpi/folder.png | Bin 0 -> 4260 bytes library/res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1723 bytes library/res/drawable-ldpi/no.png | Bin 0 -> 1288 bytes library/res/drawable-ldpi/tick.png | Bin 0 -> 3565 bytes library/res/drawable-mdpi/add.png | Bin 0 -> 2081 bytes library/res/drawable-mdpi/document.png | Bin 0 -> 1304 bytes library/res/drawable-mdpi/document_gray.png | Bin 0 -> 1726 bytes library/res/drawable-mdpi/folder.png | Bin 0 -> 4974 bytes library/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2574 bytes library/res/drawable-mdpi/no.png | Bin 0 -> 1777 bytes library/res/drawable-mdpi/tick.png | Bin 0 -> 4137 bytes library/res/layout/daidalos_file_chooser.xml | 49 ++ library/res/layout/daidalos_file_item.xml | 21 + library/res/values-en/strings.xml | 26 + library/res/values-es/strings.xml | 26 + library/res/values-fr/strings.xml | 26 + library/res/values/strings.xml | 26 + .../com/daidalos/afiledialog/FileChooser.java | 50 ++ .../afiledialog/FileChooserActivity.java | 227 +++++++ .../daidalos/afiledialog/FileChooserCore.java | 604 ++++++++++++++++++ .../afiledialog/FileChooserDialog.java | 253 ++++++++ .../afiledialog/FileChooserLabels.java | 105 +++ .../daidalos/afiledialog/view/FileItem.java | 261 ++++++++ logo.svg | 1 + 71 files changed, 4057 insertions(+) create mode 100644 .gitignore create mode 100644 Readme.md create mode 100644 demo/.classpath create mode 100644 demo/.project create mode 100644 demo/.settings/org.eclipse.jdt.core.prefs create mode 100644 demo/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100644 demo/AndroidManifest.xml create mode 100644 demo/lgpl-3.0.txt create mode 100644 demo/lint.xml create mode 100644 demo/proguard.cfg create mode 100644 demo/project.properties create mode 100644 demo/res/drawable-hdpi/ic_launcher.png create mode 100644 demo/res/drawable-ldpi/ic_launcher.png create mode 100644 demo/res/drawable-mdpi/ic_launcher.png create mode 100644 demo/res/layout/main.xml create mode 100644 demo/res/values-en/strings.xml create mode 100644 demo/res/values-es/strings.xml create mode 100644 demo/res/values-fr/strings.xml create mode 100644 demo/res/values/strings.xml create mode 100644 demo/src/ar/com/daidalos/afiledialog/test/AFileDialogTestingActivity.java create mode 100644 docs/SoftwareDesignDescription.md create mode 100644 docs/SoftwareDesignDescriptionEs.md create mode 100644 docs/UserGuide.md create mode 100644 docs/UserGuideEs.md create mode 100644 docs/UserGuideFr.md create mode 100644 lgpl-3.0.txt create mode 100644 library/.classpath create mode 100644 library/.project create mode 100644 library/.settings/com.google.appengine.eclipse.core.prefs create mode 100644 library/.settings/com.google.gdt.eclipse.core.prefs create mode 100644 library/.settings/org.eclipse.jdt.core.prefs create mode 100644 library/.settings/org.eclipse.ltk.core.refactoring.prefs create mode 100644 library/AndroidManifest.xml create mode 100644 library/lgpl-3.0.txt create mode 100644 library/lint.xml create mode 100644 library/proguard.cfg create mode 100644 library/project.properties create mode 100644 library/res/drawable-hdpi/add.png create mode 100644 library/res/drawable-hdpi/document.png create mode 100644 library/res/drawable-hdpi/document_gray.png create mode 100644 library/res/drawable-hdpi/folder.png create mode 100644 library/res/drawable-hdpi/ic_launcher.png create mode 100644 library/res/drawable-hdpi/no.png create mode 100644 library/res/drawable-hdpi/tick.png create mode 100644 library/res/drawable-ldpi/add.png create mode 100644 library/res/drawable-ldpi/document.png create mode 100644 library/res/drawable-ldpi/document_gray.png create mode 100644 library/res/drawable-ldpi/folder.png create mode 100644 library/res/drawable-ldpi/ic_launcher.png create mode 100644 library/res/drawable-ldpi/no.png create mode 100644 library/res/drawable-ldpi/tick.png create mode 100644 library/res/drawable-mdpi/add.png create mode 100644 library/res/drawable-mdpi/document.png create mode 100644 library/res/drawable-mdpi/document_gray.png create mode 100644 library/res/drawable-mdpi/folder.png create mode 100644 library/res/drawable-mdpi/ic_launcher.png create mode 100644 library/res/drawable-mdpi/no.png create mode 100644 library/res/drawable-mdpi/tick.png create mode 100644 library/res/layout/daidalos_file_chooser.xml create mode 100644 library/res/layout/daidalos_file_item.xml create mode 100644 library/res/values-en/strings.xml create mode 100644 library/res/values-es/strings.xml create mode 100644 library/res/values-fr/strings.xml create mode 100644 library/res/values/strings.xml create mode 100644 library/src/ar/com/daidalos/afiledialog/FileChooser.java create mode 100644 library/src/ar/com/daidalos/afiledialog/FileChooserActivity.java create mode 100644 library/src/ar/com/daidalos/afiledialog/FileChooserCore.java create mode 100644 library/src/ar/com/daidalos/afiledialog/FileChooserDialog.java create mode 100644 library/src/ar/com/daidalos/afiledialog/FileChooserLabels.java create mode 100644 library/src/ar/com/daidalos/afiledialog/view/FileItem.java create mode 100644 logo.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e2831af --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/demo/gen +/demo/bin +/library/gen +/library/bin diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..dc6002d --- /dev/null +++ b/Readme.md @@ -0,0 +1,80 @@ +aFileDialog +=========== + +**aFileDialog** is an Android library which implements a simple and easy to use _file chooser_. + +His main features are: + * The file chooser can be opened both as a _Dialog_ or as an _Activity_. + * You can filter the files using regular expressions. + * Can select files or folders. + * Can create files and folders. + +How to use it +------------- + +In order to use _aFileDialog_ in your application you must do three steps: + +**1)** Add a reference to the library project (which is located in the [library](library/) folder). Note that, since _aFileDialog_ is a _Android Library project_, it can not be compiled into a binary file (such as a JAR file), so your project must reference to the _aFileDialog_ project, instead of reference to a single JAR file. + +**2)** Declare the activity _FileChooserActivity_ in the _manifest_ file. This can be done by adding the following lines inside the tags `\`: + +```xml + +``` + +**3)** Add the permission _READ_EXTERNAL_STORAGE_ to the _manifest_ file, if you want to access the SD card (and if you are using Android 4.1 or superior). + +```xml + +``` + +Then you must only create an instance of _FileChooserDialog_ and call the _show()_ method or start the activity _FileChooserActivity_. + +Demo +---- + +In the [demo](demo/) folder who will find the project of a sample app that makes uses of _aFileDialog_. + +You can also install this demo app from [Google Play](https://play.google.com/store/apps/details?id=ar.com.daidalos.afiledialog.test). + +Documentation +------------- + +_aFileDialog_ has been designed in order to be easy to use and easy to develop. + +In order to known how to use _aFileDialog_, check the [user guide](docs/UserGuide.md) (also available in [Spanish](docs/UserGuideEs.md) and [French](docs/UserGuideFr.md)). + +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 +------- + +This library 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. + +This library 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 this library; If not, see . \ No newline at end of file diff --git a/demo/.classpath b/demo/.classpath new file mode 100644 index 0000000..df544a7 --- /dev/null +++ b/demo/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/demo/.project b/demo/.project new file mode 100644 index 0000000..f63f09d --- /dev/null +++ b/demo/.project @@ -0,0 +1,33 @@ + + + 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 new file mode 100644 index 0000000..8fc69fa --- /dev/null +++ b/demo/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,5 @@ +#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 new file mode 100644 index 0000000..c0b9b5b --- /dev/null +++ b/demo/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#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/AndroidManifest.xml b/demo/AndroidManifest.xml new file mode 100644 index 0000000..7eb6ce4 --- /dev/null +++ b/demo/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/lgpl-3.0.txt b/demo/lgpl-3.0.txt new file mode 100644 index 0000000..02bbb60 --- /dev/null +++ b/demo/lgpl-3.0.txt @@ -0,0 +1,165 @@ + 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 new file mode 100644 index 0000000..ee0eead --- /dev/null +++ b/demo/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/demo/proguard.cfg b/demo/proguard.cfg new file mode 100644 index 0000000..b1cdf17 --- /dev/null +++ b/demo/proguard.cfg @@ -0,0 +1,40 @@ +-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 new file mode 100644 index 0000000..9ee7d91 --- /dev/null +++ b/demo/project.properties @@ -0,0 +1,12 @@ +# 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=..\\Codigo diff --git a/demo/res/drawable-hdpi/ic_launcher.png b/demo/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc99eb204d27bcb20e3dd203579589598132e83 GIT binary patch literal 4760 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 Ef)UF?jQ{`u literal 0 HcmV?d00001 diff --git a/demo/res/layout/main.xml b/demo/res/layout/main.xml new file mode 100644 index 0000000..9d2ea4f --- /dev/null +++ b/demo/res/layout/main.xml @@ -0,0 +1,127 @@ + + + + + + + + + +