Merge remote-tracking branch 'upstream/develop' into triggerMediaScan
authortobiasKaminsky <tobias@kaminsky.me>
Sat, 29 Nov 2014 11:18:02 +0000 (12:18 +0100)
committertobiasKaminsky <tobias@kaminsky.me>
Sat, 29 Nov 2014 11:18:02 +0000 (12:18 +0100)
-fr/strings.xml

Conflicts:
src/com/owncloud/android/datamodel/FileDataStorageManager.java
src/com/owncloud/android/datamodel/OCFile.java

1  2 
owncloud-android-library
src/com/owncloud/android/datamodel/FileDataStorageManager.java
src/com/owncloud/android/datamodel/OCFile.java

diff --combined owncloud-android-library
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 2799b3e853c79e8ebb37051c92dfcc43f8d63788
 -Subproject commit 7ff0bc0d837edea90b075140f8caba308ce7d378
++Subproject commit 5bd0d7387712ce3f53869294761ac4d8537841cd
@@@ -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);
                      }
                  }
              }
                          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);
                              }
                          }
                      }
                  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);
                  }
              }
          }
              }
              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);
          }
          
      }
                  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)) {
  
  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 android.os.Parcel;
- import android.os.Parcelable;
- import android.webkit.MimeTypeMap;
 +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>() {
@@@ -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.
-      * 
+      * <p/>
       * 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) {
          dest.writeString(mRemoteId);
          dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0);
      }
-     
      /**
       * Gets the ID of the file
-      * 
+      *
       * @return the file ID
       */
      public long getFileId() {
  
      /**
       * Returns the remote path of the file on ownCloud
-      * 
+      *
       * @return The remote path to the file
       */
      public String getRemotePath() {
      /**
       * 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() {
  
      /**
       * Use this to find out if this file is a folder.
-      * 
+      *
       * @return true if it is a folder
       */
      public boolean isFolder() {
  
      /**
       * Use this to check if this file is available locally
-      * 
+      *
       * @return true if it is
       */
      public boolean isDown() {
          }
          return false;
      }
-     
      /**
       * The path, where the file is stored locally
-      * 
+      *
       * @return The local path to the file
       */
      public String getStoragePath() {
  
      /**
       * Can be used to set the path where the file is stored
-      * 
+      *
       * @param storage_path to set
       */
      public void setStoragePath(String storage_path) {
  
      /**
       * Get a UNIX timestamp of the file creation time
-      * 
+      *
       * @return A UNIX timestamp of the time that file was created
       */
      public long getCreationTimestamp() {
  
      /**
       * Set a UNIX timestamp of the time the file was created
-      * 
+      *
       * @param creation_timestamp to set
       */
      public void setCreationTimestamp(long creation_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 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;
  
      /**
       * 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 
+      * <p/>
+      * 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;
  
      /**
       * 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 
+      * <p/>
+      * 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 
+      * <p/>
+      * 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() {
      /**
       * 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()) {
  
      /**
       * Sets the ID of the file
-      * 
+      *
       * @param file_id to set
       */
      public void setFileId(long file_id) {
  
      /**
       * Sets the Mime-Type of the
-      * 
+      *
       * @param mimetype to set
       */
      public void setMimetype(String mimetype) {
  
      /**
       * Sets the ID of the parent folder
-      * 
+      *
       * @param parent_id to set
       */
      public void setParentId(long parent_id) {
  
      /**
       * Sets the file size in bytes
-      * 
+      *
       * @param file_len to set
       */
      public void setFileLength(long file_len) {
  
      /**
       * Returns the size of the file in bytes
-      * 
+      *
       * @return The filesize in bytes
       */
      public long getFileLength() {
  
      /**
       * Returns the ID of the parent Folder
-      * 
+      *
       * @return The ID
       */
      public long getParentId() {
  
      /**
       * Check, if this file needs updating
-      * 
+      *
       * @return
       */
      public boolean needsUpdatingWhileSaving() {
          return mNeedsUpdating;
      }
-     
      public boolean needsUpdateThumbnail() {
          return mNeedsUpdateThumbnail;
      }
      public long getLastSyncDateForProperties() {
          return mLastSyncDateForProperties;
      }
-     
      public void setLastSyncDateForProperties(long lastSyncDate) {
          mLastSyncDateForProperties = lastSyncDate;
      }
-     
      public long getLastSyncDateForData() {
          return mLastSyncDateForData;
      }
      public void setKeepInSync(boolean keepInSync) {
          mKeepInSync = keepInSync;
      }
-     
      public boolean keepInSync() {
          return mKeepInSync;
      }
-     
      @Override
      public int describeContents() {
-         return this.hashCode();
+         return ((Object) this).hashCode();
      }
  
      @Override
  
      @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;
      }
  
      public void setEtag(String etag) {
          this.mEtag = etag;
      }
-     
-     
      public boolean isShareByLink() {
          return mShareByLink;
      }
          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('.');