mirror of
https://github.com/nextcloud/android.git
synced 2024-11-26 23:28:42 +03:00
Trigger MediaScan for every downloaded file in a renamed or moved folder
This commit is contained in:
parent
5167e646ad
commit
1e9ff8c5fa
3 changed files with 22 additions and 20 deletions
|
@ -23,6 +23,7 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import com.owncloud.android.MainApp;
|
||||
|
@ -644,6 +645,8 @@ public class FileDataStorageManager {
|
|||
ArrayList<ContentProviderOperation> operations =
|
||||
new ArrayList<ContentProviderOperation>(c.getCount());
|
||||
String defaultSavePath = FileStorageUtils.getSavePath(mAccount.name);
|
||||
List<String> originalPathsToTriggerMediaScan = new ArrayList<String>();
|
||||
List<String> newPathsToTriggerMediaScan = new ArrayList<String>();
|
||||
if (c.moveToFirst()) {
|
||||
int lengthOfOldPath = file.getRemotePath().length();
|
||||
int lengthOfOldStoragePath = defaultSavePath.length() + lengthOfOldPath;
|
||||
|
@ -657,11 +660,14 @@ public class FileDataStorageManager {
|
|||
if (child.getStoragePath() != null &&
|
||||
child.getStoragePath().startsWith(defaultSavePath)) {
|
||||
// update link to downloaded content - but local move is not done here!
|
||||
cv.put(
|
||||
ProviderTableMeta.FILE_STORAGE_PATH,
|
||||
defaultSavePath + targetPath +
|
||||
child.getStoragePath().substring(lengthOfOldStoragePath)
|
||||
);
|
||||
String targetLocalPath = defaultSavePath + targetPath +
|
||||
child.getStoragePath().substring(lengthOfOldStoragePath);
|
||||
|
||||
cv.put(ProviderTableMeta.FILE_STORAGE_PATH, targetLocalPath);
|
||||
|
||||
originalPathsToTriggerMediaScan.add(child.getStoragePath());
|
||||
newPathsToTriggerMediaScan.add(targetLocalPath);
|
||||
|
||||
}
|
||||
if (child.getRemotePath().equals(file.getRemotePath())) {
|
||||
cv.put(
|
||||
|
@ -696,11 +702,12 @@ public class FileDataStorageManager {
|
|||
}
|
||||
|
||||
/// 4. move in local file system
|
||||
String localPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, file);
|
||||
File localFile = new File(localPath);
|
||||
String originalLocalPath = FileStorageUtils.getDefaultSavePathFor(mAccount.name, file);
|
||||
String targetLocalPath = defaultSavePath + targetPath;
|
||||
File localFile = new File(originalLocalPath);
|
||||
boolean renamed = false;
|
||||
if (localFile.exists()) {
|
||||
File targetFile = new File(defaultSavePath + targetPath);
|
||||
File targetFile = new File(targetLocalPath);
|
||||
File targetFolder = targetFile.getParentFile();
|
||||
if (!targetFolder.exists()) {
|
||||
targetFolder.mkdirs();
|
||||
|
@ -709,19 +716,17 @@ public class FileDataStorageManager {
|
|||
}
|
||||
|
||||
if (renamed) {
|
||||
if (file.isFolder()) {
|
||||
|
||||
} else {
|
||||
Iterator<String> it = originalPathsToTriggerMediaScan.iterator();
|
||||
while (it.hasNext()) {
|
||||
// Notify MediaScanner about removed file
|
||||
triggerMediaScan(file.getStoragePath());
|
||||
|
||||
triggerMediaScan(it.next());
|
||||
}
|
||||
it = newPathsToTriggerMediaScan.iterator();
|
||||
while (it.hasNext()) {
|
||||
// Notify MediaScanner about new file/folder
|
||||
triggerMediaScan(defaultSavePath + targetPath);
|
||||
triggerMediaScan(it.next());
|
||||
}
|
||||
}
|
||||
|
||||
Log_OC.d(TAG, "uri old: " + file.getStoragePath());
|
||||
Log_OC.d(TAG, "uri new: " + defaultSavePath + targetPath);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@ import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation;
|
|||
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
* Operation to find out what authentication method requires
|
||||
|
|
|
@ -29,8 +29,6 @@ import com.owncloud.android.lib.resources.files.RenameRemoteFileOperation;
|
|||
import com.owncloud.android.operations.common.SyncOperation;
|
||||
import com.owncloud.android.utils.FileStorageUtils;
|
||||
|
||||
import android.accounts.Account;
|
||||
|
||||
|
||||
/**
|
||||
* Remote operation performing the rename of a remote file (or folder?) in the ownCloud server.
|
||||
|
|
Loading…
Reference in a new issue