浏览代码

make InstantUploader honor the SubFolder setting

Timo Witte 8 年之前
父节点
当前提交
bd8ab1039d

+ 4 - 1
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java

@@ -83,6 +83,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         String file_path = null;
         String file_name = null;
         String mime_type = null;
+        String date_taken = null;
 
         Log_OC.i(TAG, "New photo received");
 
@@ -116,6 +117,8 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         file_path = c.getString(c.getColumnIndex(Images.Media.DATA));
         file_name = c.getString(c.getColumnIndex(Images.Media.DISPLAY_NAME));
         mime_type = c.getString(c.getColumnIndex(Images.Media.MIME_TYPE));
+        // date_taken = c.getString(c.getColumnIndex(Images.Media.DATE_TAKEN)); does not seem to work for all cameras
+        date_taken = Long.toString(System.currentTimeMillis());
         c.close();
 
         if (file_path.equals(lastUploadedPhotoPath)) {
@@ -134,7 +137,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
                 context,
                 account,
                 file_path,
-                FileStorageUtils.getInstantUploadFilePath(context, file_name),
+                FileStorageUtils.getInstantUploadFilePath(context, file_name, date_taken),
                 behaviour,
                 mime_type,
                 true,           // create parent folder if not existent

+ 24 - 2
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -21,8 +21,11 @@
 package com.owncloud.android.utils;
 
 import java.io.File;
+import java.text.SimpleDateFormat;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Date;
+import java.util.Locale;
 import java.util.Vector;
 
 import third_parties.daveKoeller.AlphanumComparator;
@@ -117,11 +120,30 @@ public class FileStorageUtils {
         return Environment.getExternalStorageDirectory() + File.separator + MainApp.getDataFolder() + File.separator + "log";
     }
 
-    public static String getInstantUploadFilePath(Context context, String fileName) {
+    /**
+     * Returns the InstantUploadFilePath on the owncloud instance
+     *
+     * @param context
+     * @param fileName
+     * @param dateTaken: Time in milliseconds since 1970 when the picture was taken.
+     * @return
+     */
+    public static String getInstantUploadFilePath(Context context, String fileName, String dateTaken) {
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
         String uploadPathdef = context.getString(R.string.instant_upload_path);
         String uploadPath = pref.getString("instant_upload_path", uploadPathdef);
-        String value = uploadPath + OCFile.PATH_SEPARATOR +  (fileName == null ? "" : fileName);
+        String subFolders = "";
+        if(dateTaken != null && com.owncloud.android.db.PreferenceManager.instantPictureUploadPathUseSubfolders(context)) {
+            try {
+                SimpleDateFormat formatter = new SimpleDateFormat("yyyy" + OCFile.PATH_SEPARATOR + "MM" + OCFile.PATH_SEPARATOR, Locale.ENGLISH);
+                subFolders = formatter.format(new Date(Long.parseLong(dateTaken)));
+                Date d = new Date(Long.parseLong((dateTaken)));
+            }
+            catch(RuntimeException ex) {
+                // don´t use a subfolder if we can´t parse the date
+            }
+        }
+        String value = uploadPath + OCFile.PATH_SEPARATOR + subFolders + (fileName == null ? "" : fileName);
         return value;
     }