Merge branch 'master' into sdcard-save sd-android-1.7.2
authorPeter Henn <Peter.Henn@web.de>
Wed, 8 Jul 2015 00:47:05 +0000 (00:47 +0000)
committerPeter Henn <Peter.Henn@web.de>
Wed, 8 Jul 2015 00:47:05 +0000 (00:47 +0000)
need to merge especially changes in:
src/com/owncloud/android/utils/FileStorageUtils.java

1  2 
src/com/owncloud/android/utils/FileStorageUtils.java

@@@ -35,45 -44,21 +44,50 @@@ import android.webkit.MimeTypeMap
  
  /**
   * Static methods to help in access to local file system.
-  * 
-  * @author David A. Velasco
   */
  public class FileStorageUtils {
 -  
 -    
 -    //private static final String LOG_TAG = "FileStorageUtils";
+     public static Integer mSortOrder;
+     public static Boolean mSortAscending;
+     public static final Integer SORT_NAME = 0;
+     public static final Integer SORT_DATE = 1;
+     public static final Integer SORT_SIZE = 2;
++
++
 +    //private static final String TAG = FileStorageUtils.class.getSimpleName();
 +
 +    @SuppressLint("NewApi")
 +    private static final File getBaseStorePath() {
 +        File baseStoragePath = Environment.getExternalStorageDirectory();
 +        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
 +            File[] dirs = MainApp.getAppContext().getExternalFilesDirs(null);
 +            if (dirs.length > 1) {
 +                baseStoragePath = dirs[1];
 +            }
 +        }
 +        return baseStoragePath;
 +    }
 +
 +    @SuppressLint("NewApi")
 +    private static final String getBaseStorePathString() {
 +        File baseStoragePath = Environment.getExternalStorageDirectory();
 +        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
 +            File[] dirs = MainApp.getAppContext().getExternalFilesDirs(null);
 +            if (dirs.length > 1) {
 +                baseStoragePath = dirs[1];
 +            }
 +            return baseStoragePath.getAbsolutePath();
 +        } else {
 +            return baseStoragePath.getAbsolutePath() + "/" + MainApp.getDataFolder();
 +        }
 +    }
 +
  
      public static final String getSavePath(String accountName) {
 -        File sdCard = Environment.getExternalStorageDirectory();
 -        return sdCard.getAbsolutePath() + "/" + MainApp.getDataFolder() + "/" + Uri.encode(accountName, "@");
 +        //File sdCard = Environment.getExternalStorageDirectory();
 +        //return sdCard.getAbsolutePath() + "/" + MainApp.getDataFolder() + "/" + Uri.encode(accountName, "@");
          // URL encoding is an 'easy fix' to overcome that NTFS and FAT32 don't allow ":" in file names, that can be in the accountName since 0.1.190B
 +        //return getBaseStorePath().getAbsolutePath()  + "/" + Uri.encode(accountName, "@");
 +        return getBaseStorePathString()  + "/" + Uri.encode(accountName, "@");
      }
  
      public static final String getDefaultSavePathFor(String accountName, OCFile file) {
          file.setRemoteId(remote.getRemoteId());
          return file;
      }
--    
++
      /**
       * Creates and populates a new {@link RemoteFile} object with the data read from an {@link OCFile}.
       * 
          file.setRemoteId(ocFile.getRemoteId());
          return file;
      }
 -    
++
+     /**
 -     * Sorts all filenames, regarding last user decision 
++     * Sorts all filenames, regarding last user decision
+      */
+     public static Vector<OCFile> sortFolder(Vector<OCFile> files){
+         switch (mSortOrder){
+         case 0:
+             files = FileStorageUtils.sortByName(files);
+             break;
+         case 1:
+             files = FileStorageUtils.sortByDate(files);
+             break;
 -        case 2: 
++        case 2:
+            // mFiles = FileStorageUtils.sortBySize(mSortAscending);
+             break;
+         }
 -       
++
+         return files;
+     }
 -    
++
+     /**
+      * Sorts list by Date
+      * @param files
+      */
+     public static Vector<OCFile> sortByDate(Vector<OCFile> files){
+         final Integer val;
+         if (mSortAscending){
+             val = 1;
+         } else {
+             val = -1;
+         }
 -        
++
+         Collections.sort(files, new Comparator<OCFile>() {
+             public int compare(OCFile o1, OCFile o2) {
+                 if (o1.isFolder() && o2.isFolder()) {
+                     Long obj1 = o1.getModificationTimestamp();
+                     return val * obj1.compareTo(o2.getModificationTimestamp());
+                 }
+                 else if (o1.isFolder()) {
+                     return -1;
+                 } else if (o2.isFolder()) {
+                     return 1;
+                 } else if (o1.getModificationTimestamp() == 0 || o2.getModificationTimestamp() == 0){
+                     return 0;
+                 } else {
+                     Long obj1 = o1.getModificationTimestamp();
+                     return val * obj1.compareTo(o2.getModificationTimestamp());
+                 }
+             }
+         });
 -        
++
+         return files;
+     }
+ //    /**
+ //     * Sorts list by Size
+ //     * @param sortAscending true: ascending, false: descending
+ //     */
+ //    public static Vector<OCFile> sortBySize(Vector<OCFile> files){
+ //        final Integer val;
+ //        if (mSortAscending){
+ //            val = 1;
+ //        } else {
+ //            val = -1;
+ //        }
 -//        
++//
+ //        Collections.sort(files, new Comparator<OCFile>() {
+ //            public int compare(OCFile o1, OCFile o2) {
+ //                if (o1.isFolder() && o2.isFolder()) {
+ //                    Long obj1 = getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o1)));
+ //                    return val * obj1.compareTo(getFolderSize(new File(FileStorageUtils.getDefaultSavePathFor(mAccount.name, o2))));
+ //                }
+ //                else if (o1.isFolder()) {
+ //                    return -1;
+ //                } else if (o2.isFolder()) {
+ //                    return 1;
+ //                } else if (o1.getFileLength() == 0 || o2.getFileLength() == 0){
+ //                    return 0;
+ //                } else {
+ //                    Long obj1 = o1.getFileLength();
+ //                    return val * obj1.compareTo(o2.getFileLength());
+ //                }
+ //            }
+ //        });
 -//        
++//
+ //        return files;
+ //    }
+     /**
+      * Sorts list by Name
+      * @param files     files to sort
+      */
+     public static Vector<OCFile> sortByName(Vector<OCFile> files){
+         final Integer val;
+         if (mSortAscending){
+             val = 1;
+         } else {
+             val = -1;
+         }
+         Collections.sort(files, new Comparator<OCFile>() {
+             public int compare(OCFile o1, OCFile o2) {
+                 if (o1.isFolder() && o2.isFolder()) {
+                     return val * o1.getRemotePath().toLowerCase().compareTo(o2.getRemotePath().toLowerCase());
+                 } else if (o1.isFolder()) {
+                     return -1;
+                 } else if (o2.isFolder()) {
+                     return 1;
+                 }
+                 return val * new AlphanumComparator().compare(o1, o2);
+             }
+         });
 -        
++
+         return files;
+     }
 -    
++
+     /**
+      * Local Folder size
+      * @param dir File
+      * @return Size in bytes
+      */
+     public static long getFolderSize(File dir) {
+         if (dir.exists()) {
+             long result = 0;
+             File[] fileList = dir.listFiles();
+             for(int i = 0; i < fileList.length; i++) {
+                 if(fileList[i].isDirectory()) {
+                     result += getFolderSize(fileList[i]);
+                 } else {
+                     result += fileList[i].length();
+                 }
+             }
+             return result;
+         }
+         return 0;
+     }
+     /**
+      * Mimetype String of a file
+      * @param path
+      * @return
+      */
+     public static String getMimeTypeFromName(String path) {
+         String extension = "";
+         int pos = path.lastIndexOf('.');
+         if (pos >= 0) {
+             extension = path.substring(pos + 1);
+         }
+         String result = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase());
+         return (result != null) ? result : "";
+     }
    
  }