From: David A. Velasco Date: Tue, 1 Jul 2014 08:05:25 +0000 (+0200) Subject: Merge pull request #549 from owncloud/see_files_shared_with_me X-Git-Tag: oc-android-1.7.0_signed~267 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/21071c6994d4acdba9b4241a764802483b07d476?hp=2e6605be8b54f3f3222696349a15793378b4139b Merge pull request #549 from owncloud/see_files_shared_with_me New icons for files shared with me out of Shared/ folder, for new sharing policy in OC 7 --- diff --git a/owncloud-android-library b/owncloud-android-library index 8f8c29c7..48d43b57 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 8f8c29c776c299a639bc21a5ffbb63aeda07b1f9 +Subproject commit 48d43b576c1411be4bbf8a9b96e351fa18948a2f diff --git a/res/drawable-hdpi/shared_with_me.png b/res/drawable-hdpi/shared_with_me.png new file mode 100644 index 00000000..222172a7 Binary files /dev/null and b/res/drawable-hdpi/shared_with_me.png differ diff --git a/res/drawable-hdpi/shared_with_me_folder.png b/res/drawable-hdpi/shared_with_me_folder.png new file mode 100644 index 00000000..271e7b2d Binary files /dev/null and b/res/drawable-hdpi/shared_with_me_folder.png differ diff --git a/res/drawable-hdpi/sharedlink.png b/res/drawable-hdpi/sharedlink.png index 222172a7..071c622a 100644 Binary files a/res/drawable-hdpi/sharedlink.png and b/res/drawable-hdpi/sharedlink.png differ diff --git a/res/drawable-mdpi/shared_with_me.png b/res/drawable-mdpi/shared_with_me.png new file mode 100644 index 00000000..8300eacf Binary files /dev/null and b/res/drawable-mdpi/shared_with_me.png differ diff --git a/res/drawable-mdpi/shared_with_me_folder.png b/res/drawable-mdpi/shared_with_me_folder.png new file mode 100644 index 00000000..3b8aeeee Binary files /dev/null and b/res/drawable-mdpi/shared_with_me_folder.png differ diff --git a/res/drawable-mdpi/sharedlink.png b/res/drawable-mdpi/sharedlink.png index 8300eacf..95ab1803 100644 Binary files a/res/drawable-mdpi/sharedlink.png and b/res/drawable-mdpi/sharedlink.png differ diff --git a/res/drawable-xhdpi/shared_with_me.png b/res/drawable-xhdpi/shared_with_me.png new file mode 100644 index 00000000..3879663c Binary files /dev/null and b/res/drawable-xhdpi/shared_with_me.png differ diff --git a/res/drawable-xhdpi/sharedlink.png b/res/drawable-xhdpi/sharedlink.png index 3879663c..f474b48a 100644 Binary files a/res/drawable-xhdpi/sharedlink.png and b/res/drawable-xhdpi/sharedlink.png differ diff --git a/res/layout/list_item.xml b/res/layout/list_item.xml index abe0e7f7..9c47aa6c 100644 --- a/res/layout/list_item.xml +++ b/res/layout/list_item.xml @@ -103,16 +103,35 @@ + + + + + + { private boolean mShareByLink; private String mPublicLink; + private String mPermissions; + private String mRemoteId; + /** * Create new {@link OCFile} with given path. @@ -104,6 +107,8 @@ public class OCFile implements Parcelable, Comparable { mEtag = source.readString(); mShareByLink = source.readInt() == 1; mPublicLink = source.readString(); + mPermissions = source.readString(); + mRemoteId = source.readString(); } @Override @@ -124,6 +129,8 @@ public class OCFile implements Parcelable, Comparable { dest.writeString(mEtag); dest.writeInt(mShareByLink ? 1 : 0); dest.writeString(mPublicLink); + dest.writeString(mPermissions); + dest.writeString(mRemoteId); } /** @@ -334,6 +341,8 @@ public class OCFile implements Parcelable, Comparable { mEtag = null; mShareByLink = false; mPublicLink = null; + mPermissions = null; + mRemoteId = null; } /** @@ -518,4 +527,20 @@ public class OCFile implements Parcelable, Comparable { return (result != null) ? result : ""; } + public String getPermissions() { + return mPermissions; + } + + public void setPermissions(String permissions) { + this.mPermissions = permissions; + } + + public String getRemoteId() { + return mRemoteId; + } + + public void setRemoteId(String remoteId) { + this.mRemoteId = remoteId; + } + } diff --git a/src/com/owncloud/android/db/ProviderMeta.java b/src/com/owncloud/android/db/ProviderMeta.java index 2101a688..1adf6971 100644 --- a/src/com/owncloud/android/db/ProviderMeta.java +++ b/src/com/owncloud/android/db/ProviderMeta.java @@ -17,11 +17,11 @@ */ package com.owncloud.android.db; -import com.owncloud.android.MainApp; - import android.net.Uri; import android.provider.BaseColumns; +import com.owncloud.android.MainApp; + /** * Meta-Class that holds various static field information * @@ -31,7 +31,7 @@ import android.provider.BaseColumns; public class ProviderMeta { public static final String DB_NAME = "filelist"; - public static final int DB_VERSION = 6; + public static final int DB_VERSION = 7; private ProviderMeta() { } @@ -68,6 +68,8 @@ public class ProviderMeta { public static final String FILE_ETAG = "etag"; public static final String FILE_SHARE_BY_LINK = "share_by_link"; public static final String FILE_PUBLIC_LINK = "public_link"; + public static final String FILE_PERMISSIONS = "permissions"; + public static final String FILE_REMOTE_ID = "remote_id"; public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME + " collate nocase asc"; diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index a8e230d5..fc4a74e8 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -416,6 +416,8 @@ public class SynchronizeFolderOperation extends RemoteOperation { file.setMimetype(remote.getMimeType()); file.setModificationTimestamp(remote.getModifiedTimestamp()); file.setEtag(remote.getEtag()); + file.setPermissions(remote.getPermissions()); + file.setRemoteId(remote.getRemoteId()); return file; } diff --git a/src/com/owncloud/android/providers/FileContentProvider.java b/src/com/owncloud/android/providers/FileContentProvider.java index c84d66b0..d001bf85 100644 --- a/src/com/owncloud/android/providers/FileContentProvider.java +++ b/src/com/owncloud/android/providers/FileContentProvider.java @@ -93,6 +93,10 @@ public class FileContentProvider extends ContentProvider { ProviderTableMeta.FILE_SHARE_BY_LINK); mFileProjectionMap.put(ProviderTableMeta.FILE_PUBLIC_LINK, ProviderTableMeta.FILE_PUBLIC_LINK); + mFileProjectionMap.put(ProviderTableMeta.FILE_PERMISSIONS, + ProviderTableMeta.FILE_PERMISSIONS); + mFileProjectionMap.put(ProviderTableMeta.FILE_REMOTE_ID, + ProviderTableMeta.FILE_REMOTE_ID); } private static final int SINGLE_FILE = 1; @@ -554,7 +558,9 @@ public class FileContentProvider extends ContentProvider { + ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA + " INTEGER, " + ProviderTableMeta.FILE_ETAG + " TEXT, " + ProviderTableMeta.FILE_SHARE_BY_LINK + " INTEGER, " - + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT );" + + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT, " + + ProviderTableMeta.FILE_PERMISSIONS + " TEXT null," + + ProviderTableMeta.FILE_REMOTE_ID + " TEXT null);" ); // Create table ocshares @@ -643,7 +649,7 @@ public class FileContentProvider extends ContentProvider { } if (!upgraded) Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion); - + if (oldVersion < 6 && newVersion >= 6) { Log_OC.i("SQL", "Entering in the #5 ADD in onUpgrade"); db.beginTransaction(); @@ -655,7 +661,7 @@ public class FileContentProvider extends ContentProvider { db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME + " ADD COLUMN " + ProviderTableMeta.FILE_PUBLIC_LINK + " TEXT " + " DEFAULT NULL"); - + // Create table ocshares db.execSQL("CREATE TABLE " + ProviderTableMeta.OCSHARES_TABLE_NAME + "(" + ProviderTableMeta._ID + " INTEGER PRIMARY KEY, " @@ -673,6 +679,27 @@ public class FileContentProvider extends ContentProvider { + ProviderTableMeta.OCSHARES_USER_ID + " INTEGER, " + ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED + " INTEGER," + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + " TEXT );" ); + + upgraded = true; + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + } + if (!upgraded) + Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion); + + if (oldVersion < 7 && newVersion >= 7) { + Log_OC.i("SQL", "Entering in the #7 ADD in onUpgrade"); + db.beginTransaction(); + try { + db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME + + " ADD COLUMN " + ProviderTableMeta.FILE_PERMISSIONS + " TEXT " + + " DEFAULT NULL"); + + db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME + + " ADD COLUMN " + ProviderTableMeta.FILE_REMOTE_ID + " TEXT " + + " DEFAULT NULL"); upgraded = true; db.setTransactionSuccessful(); diff --git a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java index 656e0042..408154ac 100644 --- a/src/com/owncloud/android/ui/adapter/FileListListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/FileListListAdapter.java @@ -17,8 +17,10 @@ */ package com.owncloud.android.ui.adapter; +import java.util.Vector; + import android.accounts.Account; -import android.content.Context; +import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -28,9 +30,6 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; - -import java.util.Vector; - import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.FileDataStorageManager; @@ -49,6 +48,8 @@ import com.owncloud.android.utils.DisplayUtils; * */ public class FileListListAdapter extends BaseAdapter implements ListAdapter { + private final static String PERMISSION_SHARED_WITH_ME = "S"; + private Context mContext; private OCFile mFile = null; private Vector mFiles = null; @@ -113,7 +114,10 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { fileName.setText(name); ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1); - fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); + ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon); + ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon); + sharedWithMeIconV.setVisibility(View.GONE); + ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2); FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder(); FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder(); @@ -158,7 +162,12 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { } checkBoxV.setVisibility(View.VISIBLE); } - + + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); + + if (checkIfFileIsSharedWithMe(file)) { + sharedWithMeIconV.setVisibility(View.VISIBLE); + } } else { @@ -168,13 +177,19 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp())); checkBoxV.setVisibility(View.GONE); view.findViewById(R.id.imageView3).setVisibility(View.GONE); + + if (checkIfFileIsSharedWithMe(file)) { + fileIcon.setImageResource(R.drawable.shared_with_me_folder); + sharedWithMeIconV.setVisibility(View.VISIBLE); + } else { + fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName())); + } } - - ImageView shareIconV = (ImageView) view.findViewById(R.id.shareIcon); + if (file.isShareByLink()) { - shareIconV.setVisibility(View.VISIBLE); + sharedIconV.setVisibility(View.VISIBLE); } else { - shareIconV.setVisibility(View.INVISIBLE); + sharedIconV.setVisibility(View.GONE); } } @@ -215,4 +230,15 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter { notifyDataSetChanged(); } + /** + * Check if parent folder does not include 'S' permission and if file/folder + * is shared with me + * + * @param file: OCFile + * @return boolean: True if it is shared with me and false if it is not + */ + private boolean checkIfFileIsSharedWithMe(OCFile file) { + return (mFile.getPermissions() != null && !mFile.getPermissions().contains(PERMISSION_SHARED_WITH_ME) + && file.getPermissions() != null && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME)); + } } diff --git a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 5686874e..6190ebee 100644 --- a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -21,10 +21,6 @@ import java.io.File; import java.util.Arrays; import java.util.Comparator; -import com.owncloud.android.R; -import com.owncloud.android.utils.DisplayUtils; - - import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -35,6 +31,9 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; +import com.owncloud.android.R; +import com.owncloud.android.utils.DisplayUtils; + /** * This Adapter populates a ListView with all files and directories contained * in a local directory @@ -136,7 +135,8 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { view.findViewById(R.id.imageView2).setVisibility(View.INVISIBLE); // not GONE; the alignment changes; ugly way to keep it view.findViewById(R.id.imageView3).setVisibility(View.GONE); - view.findViewById(R.id.shareIcon).setVisibility(View.GONE); + view.findViewById(R.id.sharedIcon).setVisibility(View.GONE); + view.findViewById(R.id.sharedWithMeIcon).setVisibility(View.GONE); } return view; diff --git a/src/com/owncloud/android/utils/FileStorageUtils.java b/src/com/owncloud/android/utils/FileStorageUtils.java index e8e8f48b..58dda0da 100644 --- a/src/com/owncloud/android/utils/FileStorageUtils.java +++ b/src/com/owncloud/android/utils/FileStorageUtils.java @@ -97,7 +97,8 @@ public class FileStorageUtils { file.setMimetype(remote.getMimeType()); file.setModificationTimestamp(remote.getModifiedTimestamp()); file.setEtag(remote.getEtag()); - + file.setPermissions(remote.getPermissions()); + file.setRemoteId(remote.getRemoteId()); return file; } @@ -114,6 +115,8 @@ public class FileStorageUtils { file.setMimeType(ocFile.getMimetype()); file.setModifiedTimestamp(ocFile.getModificationTimestamp()); file.setEtag(ocFile.getEtag()); + file.setPermissions(ocFile.getPermissions()); + file.setRemoteId(ocFile.getRemoteId()); return file; }