diff options
author | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-09-03 18:23:48 +0000 |
---|---|---|
committer | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-09-11 18:29:00 +0000 |
commit | a3c3a13e8499e994b198b80566cdee9af9a7f2da (patch) | |
tree | 3dcab8964e2b123085aba80d293118d358e2f533 /android/source | |
parent | 04e66812efedb0be635d60b4c1bb3f89113dfdad (diff) |
Android: provide an ID to document providers
This ID will be useful to get an instance of a document provider back
from a different activity.
Change-Id: I9419ea23d51f8e9ffd70252bd8e367cf51bde1ad
Diffstat (limited to 'android/source')
5 files changed, 44 insertions, 9 deletions
diff --git a/android/source/src/java/org/libreoffice/storage/DocumentProviderFactory.java b/android/source/src/java/org/libreoffice/storage/DocumentProviderFactory.java index d6e4ca1671fc..b8c05341d18a 100644 --- a/android/source/src/java/org/libreoffice/storage/DocumentProviderFactory.java +++ b/android/source/src/java/org/libreoffice/storage/DocumentProviderFactory.java @@ -57,9 +57,9 @@ public final class DocumentProviderFactory { // initialize document providers list instance.providers = new IDocumentProvider[3]; - instance.providers[0] = new LocalDocumentsDirectoryProvider(); - instance.providers[1] = new LocalDocumentsProvider(); - instance.providers[2] = new OwnCloudProvider(context); + instance.providers[0] = new LocalDocumentsDirectoryProvider(0); + instance.providers[1] = new LocalDocumentsProvider(1); + instance.providers[2] = new OwnCloudProvider(2, context); // initialize document provider names list instance.providerNames = new String[instance.providers.length]; @@ -80,13 +80,14 @@ public final class DocumentProviderFactory { } /** - * Retrieve the provider associated to a certain position. + * Retrieve the provider associated to a certain id. * - * @param position - * @return document provider in that position. + * @param id + * @return document provider with that id. */ - public IDocumentProvider getProvider(int position) { - return providers[position]; + public IDocumentProvider getProvider(int id) { + // as for now, id == position in providers array + return providers[id]; } /** diff --git a/android/source/src/java/org/libreoffice/storage/IDocumentProvider.java b/android/source/src/java/org/libreoffice/storage/IDocumentProvider.java index bbfdecd94d48..edb026ff9433 100644 --- a/android/source/src/java/org/libreoffice/storage/IDocumentProvider.java +++ b/android/source/src/java/org/libreoffice/storage/IDocumentProvider.java @@ -43,4 +43,15 @@ public interface IDocumentProvider { * @return string resource pointing to the provider name. */ int getNameResource(); + + /** + * Provides the unique ID for a document provider instance in a program. + * + * This ID should be set when the instance is built. It could be used to + * tell two instances of the same document provider apart, e. g. two + * instances of OwnCloudProvider pointing to different servers. + * + * @return Unique ID for a document provider instance. + */ + int getId(); } diff --git a/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsDirectoryProvider.java b/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsDirectoryProvider.java index 92d93d6ae075..fb4236969cb2 100644 --- a/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsDirectoryProvider.java +++ b/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsDirectoryProvider.java @@ -25,6 +25,10 @@ import android.os.Environment; */ public class LocalDocumentsDirectoryProvider extends LocalDocumentsProvider { + public LocalDocumentsDirectoryProvider(int id) { + super(id); + } + @Override public IFile getRootDirectory() { File documentsDirectory = new File( diff --git a/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsProvider.java b/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsProvider.java index cc96ef0a46de..a1a84e8af55b 100644 --- a/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsProvider.java +++ b/android/source/src/java/org/libreoffice/storage/local/LocalDocumentsProvider.java @@ -23,6 +23,12 @@ import android.os.Environment; */ public class LocalDocumentsProvider implements IDocumentProvider { + private int id; + + public LocalDocumentsProvider(int id) { + this.id = id; + } + @Override public IFile getRootDirectory() { return new LocalFile(Environment.getExternalStorageDirectory()); @@ -37,4 +43,9 @@ public class LocalDocumentsProvider implements IDocumentProvider { public int getNameResource() { return R.string.local_file_system; } + + @Override + public int getId() { + return id; + } } diff --git a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java index 66e4633fe5c6..bf866b92fef7 100644 --- a/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java +++ b/android/source/src/java/org/libreoffice/storage/owncloud/OwnCloudProvider.java @@ -29,6 +29,8 @@ import com.owncloud.android.lib.resources.files.RemoteFile; public class OwnCloudProvider implements IDocumentProvider, OnSharedPreferenceChangeListener { + private int id; + private Context context; private OwnCloudClient client; private File cacheDir; @@ -37,7 +39,8 @@ public class OwnCloudProvider implements IDocumentProvider, private String userName; private String password; - public OwnCloudProvider(Context context) { + public OwnCloudProvider(int id, Context context) { + this.id = id; this.context = context; // read preferences @@ -169,4 +172,9 @@ public class OwnCloudProvider implements IDocumentProvider, if (changed) setupClient(); } + + @Override + public int getId() { + return id; + } } |