Merge branch 'gradleWithInternalDependency' into us4_view_text_files
authorJorge Antonio Diaz-Benito Soriano <jorge.diazbenitosoriano@gmail.com>
Mon, 24 Nov 2014 11:57:02 +0000 (12:57 +0100)
committerJorge Antonio Diaz-Benito Soriano <jorge.diazbenitosoriano@gmail.com>
Mon, 24 Nov 2014 11:57:02 +0000 (12:57 +0100)
Conflicts:
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

1  2 
.idea/misc.xml
.idea/modules.xml
android.iml
src/com/owncloud/android/ui/activity/FileDisplayActivity.java

diff --cc .idea/misc.xml
index 0000000,b153e48..cded496
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,10 +1,10 @@@
 -  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
+ <?xml version="1.0" encoding="UTF-8"?>
+ <project version="4">
+   <component name="EntryPointsManager">
+     <entry_points version="2.0" />
+   </component>
++  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+     <output url="file://$PROJECT_DIR$/build/classes" />
+   </component>
+ </project>
index 0000000,92fbe54..0ca17d1
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,10 +1,11 @@@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <project version="4">
+   <component name="ProjectModuleManager">
+     <modules>
+       <module fileurl="file://$PROJECT_DIR$/android.iml" filepath="$PROJECT_DIR$/android.iml" />
+       <module fileurl="file://$PROJECT_DIR$/owncloud-android-library/owncloud-android-library.iml" filepath="$PROJECT_DIR$/owncloud-android-library/owncloud-android-library.iml" />
++      <module fileurl="file://$PROJECT_DIR$/owncloud-android-library/owncloud-android-library.iml" filepath="$PROJECT_DIR$/owncloud-android-library/owncloud-android-library.iml" />
+     </modules>
+   </component>
+ </project>
diff --cc android.iml
index 0000000,4d0d9af..50ce0aa
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,92 +1,92 @@@
 -    <orderEntry type="library" exported="" name="library-4.1.0" level="project" />
+ <?xml version="1.0" encoding="UTF-8"?>
+ <module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
+   <component name="FacetManager">
+     <facet type="android-gradle" name="Android-Gradle">
+       <configuration>
+         <option name="GRADLE_PROJECT_PATH" value=":" />
+       </configuration>
+     </facet>
+     <facet type="android" name="Android">
+       <configuration>
+         <option name="SELECTED_BUILD_VARIANT" value="debug" />
+         <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+         <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+         <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
+         <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+         <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />
+         <option name="ALLOW_USER_CONFIGURATION" value="false" />
+         <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/res" />
+         <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/res" />
+       </configuration>
+     </facet>
+   </component>
+   <component name="NewModuleRootManager" inherit-compiler-output="false">
+     <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+     <exclude-output />
+     <content url="file://$MODULE_DIR$">
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/res" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/resources" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/assets" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/aidl" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/java" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/jni" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/build-types/debug/rs" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+       <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+     </content>
+     <orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
+     <orderEntry type="sourceFolder" forTests="false" />
+     <orderEntry type="library" exported="" name="touch-image-view" level="project" />
+     <orderEntry type="library" exported="" name="disklrucache-2.0.2" level="project" />
+     <orderEntry type="library" exported="" name="support-v4-19.1.0" level="project" />
+     <orderEntry type="library" exported="" name="jcl-over-slf4j-1.7.4" level="project" />
++    <orderEntry type="library" exported="" name="libs/actionbarsherlock_lib-unspecified" level="project" />
+     <orderEntry type="library" exported="" name="commons-codec-1.2" level="project" />
+     <orderEntry type="library" exported="" name="jackrabbit-webdav-2.7.2" level="project" />
+     <orderEntry type="library" exported="" name="commons-httpclient-3.1" level="project" />
+     <orderEntry type="library" exported="" name="slf4j-api-1.7.5" level="project" />
+     <orderEntry type="module" module-name="owncloud-android-library" exported="" />
+   </component>
+ </module>
@@@ -99,10 -107,8 +105,11 @@@ import com.owncloud.android.ui.preview.
  import com.owncloud.android.ui.preview.PreviewVideoActivity;
  import com.owncloud.android.utils.DisplayUtils;
  import com.owncloud.android.utils.ErrorMessageAdapter;
+ import com.owncloud.android.utils.UriUtils;
  
 +import java.io.File;
 +import java.io.IOException;
 +
  
  /**
   * Displays, what files the user has available in his ownCloud.
@@@ -873,22 -906,73 +913,74 @@@ public class FileDisplayActivity extend
          return dialog;
      }
  
      /**
 -     * Translates a content URI of an content to a physical path on the disk
 -     * 
 +     * Translates a content URI of an image to a physical path
 +     * on the disk
 +     *
       * @param uri The URI to resolve
-      * @return The path to the image or null if it could not be found
+      * @return The path to the content or null if it could not be found
       */
      public String getPath(Uri uri) {
-         String[] projection = {MediaStore.Images.Media.DATA};
-         Cursor cursor = managedQuery(uri, projection, null, null, null);
-         if (cursor != null) {
-             int column_index = cursor
-                     .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
-             cursor.moveToFirst();
-             return cursor.getString(column_index);
+         final boolean isKitKatOrLater = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
+         // DocumentProvider
+         if (isKitKatOrLater && DocumentsContract.isDocumentUri(getApplicationContext(), uri)) {
+             // ExternalStorageProvider
+             if (UriUtils.isExternalStorageDocument(uri)) {
+                 final String docId = DocumentsContract.getDocumentId(uri);
+                 final String[] split = docId.split(":");
+                 final String type = split[0];
+                 if ("primary".equalsIgnoreCase(type)) {
+                     return Environment.getExternalStorageDirectory() + "/" + split[1];
+                 }
+             }
+             // DownloadsProvider
+             else if (UriUtils.isDownloadsDocument(uri)) {
+                 final String id = DocumentsContract.getDocumentId(uri);
+                 final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
+                         Long.valueOf(id));
+                 return UriUtils.getDataColumn(getApplicationContext(), contentUri, null, null);
+             }
+             // MediaProvider
+             else if (UriUtils.isMediaDocument(uri)) {
+                 final String docId = DocumentsContract.getDocumentId(uri);
+                 final String[] split = docId.split(":");
+                 final String type = split[0];
+                 Uri contentUri = null;
+                 if ("image".equals(type)) {
+                     contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
+                 } else if ("video".equals(type)) {
+                     contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
+                 } else if ("audio".equals(type)) {
+                     contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
+                 }
+                 final String selection = "_id=?";
 -                final String[] selectionArgs = new String[] { split[1] };
++                final String[] selectionArgs = new String[]{split[1]};
+                 return UriUtils.getDataColumn(getApplicationContext(), contentUri, selection, selectionArgs);
+             }
+             // Documents providers returned as content://...
+             else if (UriUtils.isContentDocument(uri)) {
+                 return uri.toString();
+             }
+         }
+         // MediaStore (and general)
+         else if ("content".equalsIgnoreCase(uri.getScheme())) {
+             // Return the remote address
+             if (UriUtils.isGooglePhotosUri(uri))
+                 return uri.getLastPathSegment();
+             return UriUtils.getDataColumn(getApplicationContext(), uri, null, null);
+         }
+         // File
+         else if ("file".equalsIgnoreCase(uri.getScheme())) {
+             return uri.getPath();
          }
          return null;
      }