Forráskód Böngészése

implement the same for videos and do some code cleanup

Timo Witte 8 éve
szülő
commit
3c388ad120

+ 4 - 0
res/xml/preferences.xml

@@ -41,6 +41,10 @@
 	    <com.owncloud.android.ui.PreferenceWithLongSummary
 							android:title="@string/prefs_instant_video_upload_path_title"
 							android:key="instant_video_upload_path" />
+		<com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle
+			android:title="@string/prefs_instant_upload_path_use_subfolders_title"
+			android:summary="@string/prefs_instant_upload_path_use_subfolders_summary"
+			android:key="instant_video_upload_path_use_subfolders" />
 	    <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle
 	        				android:title="@string/instant_video_upload_on_wifi"
 	        				android:key="instant_video_upload_on_wifi"/>

+ 5 - 0
src/com/owncloud/android/db/PreferenceManager.java

@@ -40,6 +40,7 @@ public abstract class PreferenceManager {
     private static final String PREF__INSTANT_UPLOAD_PATH_USE_SUBFOLDERS = "instant_upload_path_use_subfolders";
     private static final String PREF__INSTANT_UPLOAD_ON_WIFI = "instant_upload_on_wifi";
     private static final String PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI = "instant_video_upload_on_wifi";
+    private static final String PREF__INSTANT_VIDEO_UPLOAD_PATH_USE_SUBFOLDERS = "instant_video_upload_path_use_subfolders";
 
     public static boolean instantPictureUploadEnabled(Context context) {
         return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOADING, false);
@@ -57,6 +58,10 @@ public abstract class PreferenceManager {
         return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOAD_ON_WIFI, false);
     }
 
+    public static boolean instantVideoUploadPathUseSubfolders(Context context) {
+        return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOAD_PATH_USE_SUBFOLDERS, false);
+    }
+
     public static boolean instantVideoUploadViaWiFiOnly(Context context) {
         return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_VIDEO_UPLOAD_ON_WIFI, false);
     }

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

@@ -163,6 +163,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         String file_path = null;
         String file_name = null;
         String mime_type = null;
+        long date_taken = 0;
 
         Log_OC.i(TAG, "New video received");
 
@@ -188,6 +189,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         file_name = c.getString(c.getColumnIndex(Video.Media.DISPLAY_NAME));
         mime_type = c.getString(c.getColumnIndex(Video.Media.MIME_TYPE));
         c.close();
+        date_taken = System.currentTimeMillis();
         Log_OC.d(TAG, file_path + "");
 
         int behaviour = getUploadBehaviour(context);
@@ -196,7 +198,7 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
                 context,
                 account,
                 file_path,
-                FileStorageUtils.getInstantVideoUploadFilePath(context, file_name),
+                FileStorageUtils.getInstantVideoUploadFilePath(context, file_name, date_taken),
                 behaviour,
                 mime_type,
                 true,           // create parent folder if not existent

+ 5 - 1
src/com/owncloud/android/ui/activity/Preferences.java

@@ -114,6 +114,7 @@ public class Preferences extends PreferenceActivity
     private Preference mPrefInstantUploadPathWiFi;
     private Preference mPrefInstantVideoUpload;
     private Preference mPrefInstantVideoUploadPath;
+    private Preference mPrefInstantVideoUploadUseSubfolders;
     private Preference mPrefInstantVideoUploadPathWiFi;
     private String mUploadVideoPath;
 
@@ -428,7 +429,8 @@ public class Preferences extends PreferenceActivity
                     }
                 });
         }
-        
+
+        mPrefInstantVideoUploadUseSubfolders = findPreference("instant_video_upload_path_use_subfolders");
         mPrefInstantVideoUploadPathWiFi =  findPreference("instant_video_upload_on_wifi");
         mPrefInstantVideoUpload = findPreference("instant_video_uploading");
         toggleInstantVideoOptions(((CheckBoxPreference) mPrefInstantVideoUpload).isChecked());
@@ -491,9 +493,11 @@ public class Preferences extends PreferenceActivity
         if (value){
             mPrefInstantUploadCategory.addPreference(mPrefInstantVideoUploadPathWiFi);
             mPrefInstantUploadCategory.addPreference(mPrefInstantVideoUploadPath);
+            mPrefInstantUploadCategory.addPreference(mPrefInstantVideoUploadUseSubfolders);
         } else {
             mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPathWiFi);
             mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadPath);
+            mPrefInstantUploadCategory.removePreference(mPrefInstantVideoUploadUseSubfolders);
         }
     }
 

+ 33 - 13
src/com/owncloud/android/utils/FileStorageUtils.java

@@ -120,6 +120,27 @@ public class FileStorageUtils {
         return Environment.getExternalStorageDirectory() + File.separator + MainApp.getDataFolder() + File.separator + "log";
     }
 
+    /**
+     * Returns the a string like 2016/08/ for the passed date. If date is 0 an empty
+     * string is returned
+     *
+     * @param date: date in microseconds since 1st January 1970
+     * @return
+     */
+    private static String getSubpathFromDate(long date) {
+        try {
+            if(date == 0) {
+                return "";
+            }
+            SimpleDateFormat formatter = new SimpleDateFormat(
+                    "yyyy" + OCFile.PATH_SEPARATOR + "MM" + OCFile.PATH_SEPARATOR, Locale.ENGLISH);
+            return formatter.format(new Date(date));
+        }
+        catch(RuntimeException ex) {
+            return "";
+        }
+    }
+
     /**
      * Returns the InstantUploadFilePath on the owncloud instance
      *
@@ -132,18 +153,12 @@ public class FileStorageUtils {
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
         String uploadPathdef = context.getString(R.string.instant_upload_path);
         String uploadPath = pref.getString("instant_upload_path", uploadPathdef);
-        String subFolders = null;
-        if(dateTaken != 0 && 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(dateTaken));
-                Date d = new Date(dateTaken);
-            }
-            catch(RuntimeException ex) {
-                // don´t use a subfolder if we can´t parse the date
-            }
+        String subPath = "";
+        if(com.owncloud.android.db.PreferenceManager.instantPictureUploadPathUseSubfolders(context)) {
+           subPath = getSubpathFromDate(dateTaken);
         }
-        String value = uploadPath + OCFile.PATH_SEPARATOR + (subFolders != null ? subFolders : "") + (fileName == null ? "" : fileName);
+        String value = uploadPath + OCFile.PATH_SEPARATOR + subPath
+                + (fileName == null ? "" : fileName);
         return value;
     }
 
@@ -153,11 +168,16 @@ public class FileStorageUtils {
      * @param fileName: video file name
      * @return String: video file path composed
      */
-    public static String getInstantVideoUploadFilePath(Context context, String fileName) {
+    public static String getInstantVideoUploadFilePath(Context context, String fileName, long dateTaken) {
         SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
         String uploadVideoPathdef = context.getString(R.string.instant_upload_path);
         String uploadVideoPath = pref.getString("instant_video_upload_path", uploadVideoPathdef);
-        String value = uploadVideoPath + OCFile.PATH_SEPARATOR +  (fileName == null ? "" : fileName);
+        String subPath = "";
+        if(com.owncloud.android.db.PreferenceManager.instantVideoUploadPathUseSubfolders(context)) {
+            subPath = getSubpathFromDate(dateTaken);
+        }
+        String value = uploadVideoPath + OCFile.PATH_SEPARATOR + subPath
+                + (fileName == null ? "" : fileName);
         return value;
     }