ソースを参照

#819, part 2: Instant uploads, depends on setting

tobiasKaminsky 9 年 前
コミット
4b8a5a9c92

+ 14 - 0
res/values/attrs.xml

@@ -11,4 +11,18 @@
 
 	</declare-styleable>
 
+	<string-array name="pref_behaviour_entries">
+		<item>do nothing</item>
+		<item>copy file to OC folder</item>
+		<item>move file to OC folder</item>
+		<item>delete origin file</item>
+	</string-array>
+
+	<string-array name="pref_behaviour_entryValues">
+		<item>NOTHING</item>
+		<item>COPY</item>
+		<item>MOVE</item>
+		<item>DELETE</item>
+	</string-array>
+
 </resources>

+ 2 - 0
res/values/strings.xml

@@ -364,5 +364,7 @@
     <string name="file_list__footer__files">%1$d files</string>
     <string name="file_list__footer__files_and_folder">%1$d files, 1 folder</string>
     <string name="file_list__footer__files_and_folders">%1$d files, %2$d folders</string>
+    <string name="prefs_instant_behaviour_dialogTitle">Upload file to server and ...</string>
+    <string name="prefs_instant_behaviour_title">Behaviour</string>
 
 </resources>

+ 8 - 1
res/xml/preferences.xml

@@ -26,7 +26,14 @@
 	</PreferenceCategory>
 
     <PreferenceCategory android:title="@string/prefs_category_instant_uploading" android:key="instant_uploading_category">
-         <com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_uploading"
+         <ListPreference android:key="prefs_instant_behaviour"
+			 android:dialogTitle="@string/prefs_instant_behaviour_dialogTitle"
+			 android:title="@string/prefs_instant_behaviour_title"
+			 android:entries="@array/pref_behaviour_entries"
+			 android:entryValues="@array/pref_behaviour_entryValues"
+			 />
+
+		<com.owncloud.android.ui.CheckBoxPreferenceWithLongTitle android:key="instant_uploading"
 	                        android:title="@string/prefs_instant_upload"
 	                        android:summary="@string/prefs_instant_upload_summary"/>
          <com.owncloud.android.ui.PreferenceWithLongSummary

+ 1 - 1
src/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -1530,7 +1530,7 @@ public class FileDataStorageManager {
         //}
     }
 
-    public void triggerMediaScan(String path) {
+    public static void triggerMediaScan(String path) {
         Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
         intent.setData(Uri.fromFile(new File(path)));
         MainApp.getAppContext().sendBroadcast(intent);

+ 25 - 0
src/com/owncloud/android/files/InstantUploadBroadcastReceiver.java

@@ -34,6 +34,7 @@ import android.accounts.Account;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo.State;
@@ -122,6 +123,30 @@ public class InstantUploadBroadcastReceiver extends BroadcastReceiver {
         i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
         i.putExtra(FileUploader.KEY_MIME_TYPE, mime_type);
         i.putExtra(FileUploader.KEY_INSTANT_UPLOAD, true);
+
+        // instant upload behaviour
+        SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+        String behaviour = appPreferences.getString("prefs_instant_behaviour", "NOTHING");
+
+        switch (behaviour){
+            case "NOTHING":
+                Log_OC.d(TAG, "upload file and do nothing");
+                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_FORGET);
+                break;
+            case "COPY":
+                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_COPY);
+                Log_OC.d(TAG, "upload file and copy file to oc folder");
+                break;
+            case "MOVE":
+                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE);
+                Log_OC.d(TAG, "upload file and move file to oc folder");
+                break;
+            case "DELETE":
+                i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_REMOVE);
+                Log_OC.d(TAG, "upload file and delete file in original place");
+                break;
+        }
+
         context.startService(i);
     }
 

+ 1 - 0
src/com/owncloud/android/files/services/FileUploader.java

@@ -103,6 +103,7 @@ public class FileUploader extends Service
     public static final int LOCAL_BEHAVIOUR_COPY = 0;
     public static final int LOCAL_BEHAVIOUR_MOVE = 1;
     public static final int LOCAL_BEHAVIOUR_FORGET = 2;
+    public static final int LOCAL_BEHAVIOUR_REMOVE = 3;
 
     public static final int UPLOAD_SINGLE_FILE = 0;
     public static final int UPLOAD_MULTIPLE_FILES = 1;

+ 6 - 1
src/com/owncloud/android/operations/UploadFileOperation.java

@@ -39,6 +39,7 @@ import android.content.Context;
 import android.net.Uri;
 
 import com.owncloud.android.MainApp;
+import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileUploader;
 import com.owncloud.android.lib.common.OwnCloudClient;
@@ -329,7 +330,9 @@ public class UploadFileOperation extends RemoteOperation {
                 if (result.isSuccess()) {
                     if (mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_FORGET) {
                         mFile.setStoragePath(null);
-
+                    } else if (mLocalBehaviour == FileUploader.LOCAL_BEHAVIOUR_REMOVE){
+                        mFile.setStoragePath(null);
+                        originalFile.delete();
                     } else {
                         mFile.setStoragePath(expectedPath);
                         File fileToMove = null;
@@ -357,6 +360,8 @@ public class UploadFileOperation extends RemoteOperation {
                             }
                         }
                     }
+                    FileDataStorageManager.triggerMediaScan(originalFile.getAbsolutePath());
+                    FileDataStorageManager.triggerMediaScan(expectedFile.getAbsolutePath());
                 }
             }