Browse Source

Refactoring: get MediaScan trigger out of OCFile for renaming

David A. Velasco 10 years ago
parent
commit
c95eb327f8

+ 6 - 0
src/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -1579,4 +1579,10 @@ public class FileDataStorageManager {
         //}
     }
 
+    public 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);
+    }
+
 }

+ 0 - 15
src/com/owncloud/android/datamodel/OCFile.java

@@ -26,11 +26,7 @@ import com.owncloud.android.lib.common.utils.Log_OC;
 
 import java.io.File;
 
-import com.owncloud.android.MainApp;
-
 import third_parties.daveKoeller.AlphanumComparator;
-import android.content.Intent;
-import android.net.Uri;
 public class OCFile implements Parcelable, Comparable<OCFile> {
 
     public static final Parcelable.Creator<OCFile> CREATOR = new Parcelable.Creator<OCFile>() {
@@ -299,17 +295,6 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
                 mRemotePath += PATH_SEPARATOR;
             }
             Log_OC.d(TAG, "OCFile name changed to " + mRemotePath);
-            
-            // Notify MediaScanner about removed file
-            Intent intent1 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
-            intent1.setData(Uri.fromFile(new File(this.getStoragePath())));
-            MainApp.getAppContext().sendBroadcast(intent1);
-            
-            // Notify MediaScanner about new file
-            Intent intent2 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
-            String folder = new File(this.getStoragePath()).getParent();
-            intent2.setData(Uri.fromFile(new File(folder+ PATH_SEPARATOR+name)));
-            MainApp.getAppContext().sendBroadcast(intent2);
         }
     }
 

+ 9 - 2
src/com/owncloud/android/operations/RenameFileOperation.java

@@ -134,12 +134,19 @@ public class RenameFileOperation extends SyncOperation {
         
         // try to rename the local copy of the file
         if (mFile.isDown()) {
-            File f = new File(mFile.getStoragePath());
+            String oldPath = mFile.getStoragePath();
+            File f = new File(oldPath);
             String parentStoragePath = f.getParent();
             if (!parentStoragePath.endsWith(File.separator))
                 parentStoragePath += File.separator;
             if (f.renameTo(new File(parentStoragePath + mNewName))) {
-                mFile.setStoragePath(parentStoragePath + mNewName);
+                String newPath = parentStoragePath + mNewName;
+                mFile.setStoragePath(newPath);
+
+                // notify MediaScanner about removed file - TODO really works?
+                getStorageManager().triggerMediaScan(oldPath);
+                // notify to scan about new file
+                getStorageManager().triggerMediaScan(newPath);
             }
             // else - NOTHING: the link to the local file is kept although the local name can't be updated
             // TODO - study conditions when this could be a problem