diff --git a/.pullapprove.yml b/.pullapprove.yml
index a74f45a25326..97232704e729 100644
--- a/.pullapprove.yml
+++ b/.pullapprove.yml
@@ -14,7 +14,7 @@ group_defaults:
ignored: true
approve_by_comment:
enabled: true
- approve_regex: '^(Approved|:shipit:|:\+1:|LGTM)'
+ approve_regex: '^(Approved|:shipit:|:\+1:|LGTM|Merge)'
reject_regex: '^(Rejected|:-1:)'
reset_on_push:
enabled: false
diff --git a/drawable_resources/folder_external.svg b/drawable_resources/folder_external.svg
new file mode 100644
index 000000000000..79f546dae65b
--- /dev/null
+++ b/drawable_resources/folder_external.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
index 91744124cf96..bd81d6840ece 100644
--- a/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
+++ b/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java
@@ -37,6 +37,7 @@
import com.owncloud.android.MainApp;
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
+import com.owncloud.android.lib.common.network.WebdavEntry;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
@@ -479,6 +480,7 @@ private ContentValues createContentValueForFile(OCFile file, OCFile folder) {
cv.put(ProviderTableMeta.FILE_ETAG_IN_CONFLICT, file.getEtagInConflict());
cv.put(ProviderTableMeta.FILE_FAVORITE, file.getIsFavorite());
cv.put(ProviderTableMeta.FILE_IS_ENCRYPTED, file.isEncrypted());
+ cv.put(ProviderTableMeta.FILE_MOUNT_TYPE, file.getMountType().ordinal());
return cv;
}
@@ -971,6 +973,8 @@ private OCFile createFileInstance(Cursor c) {
if (file.isEncrypted()) {
file.setFileName(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_NAME)));
}
+ file.setMountType(WebdavEntry.MountType.values()[c.getInt(
+ c.getColumnIndex(ProviderTableMeta.FILE_MOUNT_TYPE))]);
}
return file;
}
diff --git a/src/main/java/com/owncloud/android/datamodel/OCFile.java b/src/main/java/com/owncloud/android/datamodel/OCFile.java
index 82338405923f..944cf0386d78 100644
--- a/src/main/java/com/owncloud/android/datamodel/OCFile.java
+++ b/src/main/java/com/owncloud/android/datamodel/OCFile.java
@@ -32,6 +32,7 @@
import android.support.v4.content.FileProvider;
import com.owncloud.android.R;
+import com.owncloud.android.lib.common.network.WebdavEntry;
import com.owncloud.android.lib.common.network.WebdavUtils;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.utils.MimeType;
@@ -97,6 +98,8 @@ public OCFile[] newArray(int size) {
private boolean mIsEncrypted;
+ private WebdavEntry.MountType mMountType;
+
/**
* URI to the local path of the file contents, if stored in the device; cached after first call
* to {@link #getStorageUri()}
@@ -160,6 +163,7 @@ private OCFile(Parcel source) {
mIsFavorite = source.readInt() == 1;
mIsEncrypted = source.readInt() == 1;
mEncryptedFileName = source.readString();
+ mMountType = (WebdavEntry.MountType) source.readSerializable();
}
@Override
@@ -189,6 +193,7 @@ public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mIsFavorite ? 1 : 0);
dest.writeInt(mIsEncrypted ? 1 : 0);
dest.writeString(mEncryptedFileName);
+ dest.writeSerializable(mMountType);
}
public boolean getIsFavorite() {
@@ -517,6 +522,7 @@ private void resetData() {
mIsFavorite = false;
mIsEncrypted = false;
mEncryptedFileName = null;
+ mMountType = WebdavEntry.MountType.INTERNAL;
}
/**
@@ -780,4 +786,11 @@ public boolean canReshare() {
return permissions != null && permissions.contains(PERMISSION_CAN_RESHARE);
}
+ public WebdavEntry.MountType getMountType() {
+ return mMountType;
+ }
+
+ public void setMountType(WebdavEntry.MountType mountType) {
+ mMountType = mountType;
+ }
}
diff --git a/src/main/java/com/owncloud/android/db/ProviderMeta.java b/src/main/java/com/owncloud/android/db/ProviderMeta.java
index ecbbd54691f9..7fe02b943361 100644
--- a/src/main/java/com/owncloud/android/db/ProviderMeta.java
+++ b/src/main/java/com/owncloud/android/db/ProviderMeta.java
@@ -32,7 +32,7 @@
public class ProviderMeta {
public static final String DB_NAME = "filelist";
- public static final int DB_VERSION = 30;
+ public static final int DB_VERSION = 31;
private ProviderMeta() {
}
@@ -102,6 +102,7 @@ static public class ProviderTableMeta implements BaseColumns {
public static final String FILE_ETAG_IN_CONFLICT = "etag_in_conflict";
public static final String FILE_FAVORITE = "favorite";
public static final String FILE_IS_ENCRYPTED = "is_encrypted";
+ public static final String FILE_MOUNT_TYPE = "mount_type";
public static final String [] FILE_ALL_COLUMNS = {_ID, FILE_PARENT, FILE_NAME
, FILE_CREATION, FILE_MODIFIED,
diff --git a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
index fb6d4e695312..3cfaf3ad55f1 100644
--- a/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
+++ b/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java
@@ -432,6 +432,7 @@ private void synchronizeData(ArrayList