From: tobiasKaminsky Date: Sat, 29 Nov 2014 11:18:02 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/develop' into triggerMediaScan X-Git-Tag: oc-android-1.7.0_signed~90^2~9 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/eaa3b1ef566ec3301dc648e6e57b39af7915392f?ds=inline;hp=-c Merge remote-tracking branch 'upstream/develop' into triggerMediaScan -fr/strings.xml Conflicts: src/com/owncloud/android/datamodel/FileDataStorageManager.java src/com/owncloud/android/datamodel/OCFile.java --- eaa3b1ef566ec3301dc648e6e57b39af7915392f diff --combined owncloud-android-library index 2799b3e8,7ff0bc0d..5bd0d738 --- a/owncloud-android-library +++ b/owncloud-android-library @@@ -1,1 -1,1 +1,1 @@@ - Subproject commit 2799b3e853c79e8ebb37051c92dfcc43f8d63788 -Subproject commit 7ff0bc0d837edea90b075140f8caba308ce7d378 ++Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd diff --combined src/com/owncloud/android/datamodel/FileDataStorageManager.java index 7bc1b71b,b10e525c..abaafa5f --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@@ -33,6 -33,7 +33,6 @@@ import com.owncloud.android.lib.resourc import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.utils.FileStorageUtils; - import android.accounts.Account; import android.content.ContentProviderClient; import android.content.ContentProviderOperation; @@@ -40,7 -41,6 +40,7 @@@ import android.content.ContentProviderR import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; +import android.content.Intent; import android.content.OperationApplicationException; import android.database.Cursor; import android.net.Uri; @@@ -346,13 -346,7 +346,13 @@@ public class FileDataStorageManager ).withSelection(where, whereArgs).build()); if (file.isDown()) { + String path = file.getStoragePath(); new File(file.getStoragePath()).delete(); + + // Notify MediaScanner about removed file + Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent.setData(Uri.fromFile(new File(path))); + MainApp.getAppContext().sendBroadcast(intent); } } } @@@ -548,17 -542,11 +548,17 @@@ success &= removeLocalFolder(file); } else { if (file.isDown()) { + String path = file.getStoragePath(); File localFile = new File(file.getStoragePath()); success &= localFile.delete(); if (success) { file.setStoragePath(null); saveFile(file); + + // Notify MediaScanner about removed file + Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent.setData(Uri.fromFile(new File(path))); + MainApp.getAppContext().sendBroadcast(intent); } } } @@@ -580,13 -568,7 +580,13 @@@ if (localFile.isDirectory()) { success &= removeLocalFolder(localFile); } else { + String path = localFile.getAbsolutePath(); success &= localFile.delete(); + + // Notify MediaScanner about removed file + Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent.setData(Uri.fromFile(new File(path))); + MainApp.getAppContext().sendBroadcast(intent); } } } @@@ -805,18 -787,6 +805,18 @@@ } Log_OC.d(TAG, "Local file RENAMED : " + renamed); + // Notify MediaScanner about removed file + Intent intent1 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent1.setData(Uri.fromFile(new File(file.getStoragePath()))); + MainApp.getAppContext().sendBroadcast(intent1); + + // Notify MediaScanner about new file/folder + Intent intent2 = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent2.setData(Uri.fromFile(new File(defaultSavePath + targetPath))); + MainApp.getAppContext().sendBroadcast(intent2); + + Log_OC.d(TAG, "uri old: " + file.getStoragePath()); + Log_OC.d(TAG, "uri new: " + defaultSavePath + targetPath); } } @@@ -1432,7 -1402,7 +1432,7 @@@ path = path + FileUtils.PATH_SEPARATOR; } - // Update OCFile with data from share: ShareByLink �and publicLink? + // Update OCFile with data from share: ShareByLink and publicLink OCFile file = getFileByPath(path); if (file != null) { if (share.getShareType().equals(ShareType.PUBLIC_LINK)) { diff --combined src/com/owncloud/android/datamodel/OCFile.java index 6a4ada20,853b01c5..70a51547 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@@ -18,18 -18,16 +18,19 @@@ package com.owncloud.android.datamodel; + import android.os.Parcel; + import android.os.Parcelable; + import android.webkit.MimeTypeMap; + + import com.owncloud.android.lib.common.utils.Log_OC; + import java.io.File; -import third_parties.daveKoeller.AlphanumComparator; +import com.owncloud.android.MainApp; - import com.owncloud.android.lib.common.utils.Log_OC; +import third_parties.daveKoeller.AlphanumComparator; +import android.content.Intent; +import android.net.Uri; - import android.os.Parcel; - import android.os.Parcelable; - import android.webkit.MimeTypeMap; - public class OCFile implements Parcelable, Comparable { public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@@ -48,7 -46,7 +49,7 @@@ public static final String ROOT_PATH = PATH_SEPARATOR; private static final String TAG = OCFile.class.getSimpleName(); - + private long mId; private long mParentId; private long mLength; @@@ -64,7 -62,7 +65,7 @@@ private boolean mKeepInSync; private String mEtag; - + private boolean mShareByLink; private String mPublicLink; @@@ -76,9 -74,9 +77,9 @@@ /** * Create new {@link OCFile} with given path. - * + *

* The path received must be URL-decoded. Path separator must be OCFile.PATH_SEPARATOR, and it must be the first character in 'path'. - * + * * @param path The remote path of the file. */ public OCFile(String path) { @@@ -92,7 -90,7 +93,7 @@@ /** * Reconstruct from parcel - * + * * @param source The source parcel */ private OCFile(Parcel source) { @@@ -140,10 -138,10 +141,10 @@@ dest.writeString(mRemoteId); dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0); } - + /** * Gets the ID of the file - * + * * @return the file ID */ public long getFileId() { @@@ -152,7 -150,7 +153,7 @@@ /** * Returns the remote path of the file on ownCloud - * + * * @return The remote path to the file */ public String getRemotePath() { @@@ -162,7 -160,7 +163,7 @@@ /** * Can be used to check, whether or not this file exists in the database * already - * + * * @return true, if the file exists in the database */ public boolean fileExists() { @@@ -171,7 -169,7 +172,7 @@@ /** * Use this to find out if this file is a folder. - * + * * @return true if it is a folder */ public boolean isFolder() { @@@ -180,7 -178,7 +181,7 @@@ /** * Use this to check if this file is available locally - * + * * @return true if it is */ public boolean isDown() { @@@ -190,10 -188,10 +191,10 @@@ } return false; } - + /** * The path, where the file is stored locally - * + * * @return The local path to the file */ public String getStoragePath() { @@@ -202,7 -200,7 +203,7 @@@ /** * Can be used to set the path where the file is stored - * + * * @param storage_path to set */ public void setStoragePath(String storage_path) { @@@ -211,7 -209,7 +212,7 @@@ /** * Get a UNIX timestamp of the file creation time - * + * * @return A UNIX timestamp of the time that file was created */ public long getCreationTimestamp() { @@@ -220,7 -218,7 +221,7 @@@ /** * Set a UNIX timestamp of the time the file was created - * + * * @param creation_timestamp to set */ public void setCreationTimestamp(long creation_timestamp) { @@@ -230,8 -228,8 +231,8 @@@ /** * Get a UNIX timestamp of the file modification time. * - * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server - * in the last synchronization of the properties of this file. + * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server + * in the last synchronization of the properties of this file. */ public long getModificationTimestamp() { return mModifiedTimestamp; @@@ -239,22 -237,22 +240,22 @@@ /** * Set a UNIX timestamp of the time the time the file was modified. - * - * To update with the value returned by the server in every synchronization of the properties + *

+ * To update with the value returned by the server in every synchronization of the properties * of this file. - * + * * @param modification_timestamp to set */ public void setModificationTimestamp(long modification_timestamp) { mModifiedTimestamp = modification_timestamp; } - + /** * Get a UNIX timestamp of the file modification time. * - * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server - * in the last synchronization of THE CONTENTS of this file. + * @return A UNIX timestamp of the modification time, corresponding to the value returned by the server + * in the last synchronization of THE CONTENTS of this file. */ public long getModificationTimestampAtLastSyncForData() { return mModifiedTimestampAtLastSyncForData; @@@ -262,60 -260,48 +263,59 @@@ /** * Set a UNIX timestamp of the time the time the file was modified. - * - * To update with the value returned by the server in every synchronization of THE CONTENTS + *

+ * To update with the value returned by the server in every synchronization of THE CONTENTS * of this file. - * - * @param modification_timestamp to set + * + * @param modificationTimestamp to set */ public void setModificationTimestampAtLastSyncForData(long modificationTimestamp) { mModifiedTimestampAtLastSyncForData = modificationTimestamp; } - - + /** * Returns the filename and "/" for the root directory - * + * * @return The name of the file */ public String getFileName() { File f = new File(getRemotePath()); return f.getName().length() == 0 ? ROOT_PATH : f.getName(); } - + /** * Sets the name of the file - * - * Does nothing if the new name is null, empty or includes "/" ; or if the file is the root directory + *

+ * Does nothing if the new name is null, empty or includes "/" ; or if the file is the root directory */ public void setFileName(String name) { Log_OC.d(TAG, "OCFile name changin from " + mRemotePath); if (name != null && name.length() > 0 && !name.contains(PATH_SEPARATOR) && !mRemotePath.equals(ROOT_PATH)) { String parent = (new File(getRemotePath())).getParent(); parent = (parent.endsWith(PATH_SEPARATOR)) ? parent : parent + PATH_SEPARATOR; - mRemotePath = parent + name; + mRemotePath = parent + name; if (isFolder()) { 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); } } /** * Can be used to get the Mimetype - * + * * @return the Mimetype as a String */ public String getMimetype() { @@@ -325,10 -311,10 +325,10 @@@ /** * Adds a file to this directory. If this file is not a directory, an * exception gets thrown. - * + * * @param file to add * @throws IllegalStateException if you try to add a something and this is - * not a directory + * not a directory */ public void addFile(OCFile file) throws IllegalStateException { if (isFolder()) { @@@ -367,7 -353,7 +367,7 @@@ /** * Sets the ID of the file - * + * * @param file_id to set */ public void setFileId(long file_id) { @@@ -376,7 -362,7 +376,7 @@@ /** * Sets the Mime-Type of the - * + * * @param mimetype to set */ public void setMimetype(String mimetype) { @@@ -385,7 -371,7 +385,7 @@@ /** * Sets the ID of the parent folder - * + * * @param parent_id to set */ public void setParentId(long parent_id) { @@@ -394,7 -380,7 +394,7 @@@ /** * Sets the file size in bytes - * + * * @param file_len to set */ public void setFileLength(long file_len) { @@@ -403,7 -389,7 +403,7 @@@ /** * Returns the size of the file in bytes - * + * * @return The filesize in bytes */ public long getFileLength() { @@@ -412,7 -398,7 +412,7 @@@ /** * Returns the ID of the parent Folder - * + * * @return The ID */ public long getParentId() { @@@ -421,13 -407,13 +421,13 @@@ /** * Check, if this file needs updating - * + * * @return */ public boolean needsUpdatingWhileSaving() { return mNeedsUpdating; } - + public boolean needsUpdateThumbnail() { return mNeedsUpdateThumbnail; } @@@ -439,11 -425,11 +439,11 @@@ public long getLastSyncDateForProperties() { return mLastSyncDateForProperties; } - + public void setLastSyncDateForProperties(long lastSyncDate) { mLastSyncDateForProperties = lastSyncDate; } - + public long getLastSyncDateForData() { return mLastSyncDateForData; } @@@ -455,14 -441,14 +455,14 @@@ public void setKeepInSync(boolean keepInSync) { mKeepInSync = keepInSync; } - + public boolean keepInSync() { return mKeepInSync; } - + @Override public int describeContents() { - return this.hashCode(); + return ((Object) this).hashCode(); } @Override @@@ -479,13 -465,13 +479,13 @@@ @Override public boolean equals(Object o) { - if(o instanceof OCFile){ + if (o instanceof OCFile) { OCFile that = (OCFile) o; - if(that != null){ + if (that != null) { return this.mId == that.mId; } } - + return false; } @@@ -503,8 -489,8 +503,8 @@@ public void setEtag(String etag) { this.mEtag = etag; } - - + + public boolean isShareByLink() { return mShareByLink; } @@@ -529,22 -515,28 +529,28 @@@ return 0; } - /** @return 'True' if the file contains audio */ + /** + * @return 'True' if the file contains audio + */ public boolean isAudio() { return (mMimeType != null && mMimeType.startsWith("audio/")); } - /** @return 'True' if the file contains video */ + /** + * @return 'True' if the file contains video + */ public boolean isVideo() { return (mMimeType != null && mMimeType.startsWith("video/")); } - /** @return 'True' if the file contains an image */ + /** + * @return 'True' if the file contains an image + */ public boolean isImage() { return ((mMimeType != null && mMimeType.startsWith("image/")) || - getMimeTypeFromName().startsWith("image/")); + getMimeTypeFromName().startsWith("image/")); } - + public String getMimeTypeFromName() { String extension = ""; int pos = mRemotePath.lastIndexOf('.');