New icons for files shared with me out of Shared/ folder, for new sharing policy in OC 7
-Subproject commit 8f8c29c776c299a639bc21a5ffbb63aeda07b1f9
+Subproject commit 48d43b576c1411be4bbf8a9b96e351fa18948a2f
\r
</LinearLayout>\r
\r
+ <LinearLayout\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="match_parent"\r
+ android:gravity="center_vertical"\r
+ android:orientation="vertical">\r
+\r
<ImageView\r
- android:id="@+id/shareIcon"\r
+ android:id="@+id/sharedIcon"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_gravity="center_vertical"\r
android:layout_marginLeft="4dp"\r
+ android:layout_marginBottom="4dp"\r
android:layout_marginRight="4dp"\r
android:src="@drawable/sharedlink" />\r
\r
<ImageView\r
+ android:id="@+id/sharedWithMeIcon"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_gravity="center_vertical"\r
+ android:layout_marginLeft="4dp"\r
+ android:layout_marginRight="4dp"\r
+ android:layout_marginTop="4dp"\r
+ android:src="@drawable/shared_with_me" />\r
+\r
+ </LinearLayout>\r
+\r
+ <ImageView\r
android:id="@+id/custom_checkbox"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
+ cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
+ cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
boolean sameRemotePath = fileExists(file.getRemotePath());
if (sameRemotePath ||
cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
+ cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
+ cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
boolean existsByPath = fileExists(file.getRemotePath());
if (existsByPath || fileExists(file.getFileId())) {
cv.put(ProviderTableMeta.FILE_ETAG, folder.getEtag());
cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, folder.isShareByLink() ? 1 : 0);
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, folder.getPublicLink());
+ cv.put(ProviderTableMeta.FILE_PERMISSIONS, folder.getPermissions());
+ cv.put(ProviderTableMeta.FILE_REMOTE_ID, folder.getRemoteId());
operations.add(ContentProviderOperation.newUpdate(ProviderTableMeta.CONTENT_URI).
withValues(cv).
file.setShareByLink(c.getInt(
c.getColumnIndex(ProviderTableMeta.FILE_SHARE_BY_LINK)) == 1 ? true : false);
file.setPublicLink(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PUBLIC_LINK)));
+ file.setPermissions(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PERMISSIONS)));
+ file.setRemoteId(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID)));
}
return file;
cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
cv.put(ProviderTableMeta.FILE_SHARE_BY_LINK, file.isShareByLink() ? 1 : 0);
cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
+ cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
+ cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
boolean existsByPath = fileExists(file.getRemotePath());
if (existsByPath || fileExists(file.getFileId())) {
private boolean mShareByLink;
private String mPublicLink;
+ private String mPermissions;
+ private String mRemoteId;
+
/**
* Create new {@link OCFile} with given path.
mEtag = source.readString();
mShareByLink = source.readInt() == 1;
mPublicLink = source.readString();
+ mPermissions = source.readString();
+ mRemoteId = source.readString();
}
@Override
dest.writeString(mEtag);
dest.writeInt(mShareByLink ? 1 : 0);
dest.writeString(mPublicLink);
+ dest.writeString(mPermissions);
+ dest.writeString(mRemoteId);
}
/**
mEtag = null;
mShareByLink = false;
mPublicLink = null;
+ mPermissions = null;
+ mRemoteId = null;
}
/**
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;
+ }
+
}
*/\r
package com.owncloud.android.db;\r
\r
-import com.owncloud.android.MainApp;\r
-\r
import android.net.Uri;\r
import android.provider.BaseColumns;\r
\r
+import com.owncloud.android.MainApp;\r
+\r
/**\r
* Meta-Class that holds various static field information\r
* \r
public class ProviderMeta {\r
\r
public static final String DB_NAME = "filelist";\r
- public static final int DB_VERSION = 6;\r
+ public static final int DB_VERSION = 7;\r
\r
private ProviderMeta() {\r
}\r
public static final String FILE_ETAG = "etag";\r
public static final String FILE_SHARE_BY_LINK = "share_by_link";\r
public static final String FILE_PUBLIC_LINK = "public_link";\r
+ public static final String FILE_PERMISSIONS = "permissions";\r
+ public static final String FILE_REMOTE_ID = "remote_id";\r
\r
public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME\r
+ " collate nocase asc";\r
file.setMimetype(remote.getMimeType());
file.setModificationTimestamp(remote.getModifiedTimestamp());
file.setEtag(remote.getEtag());
+ file.setPermissions(remote.getPermissions());
+ file.setRemoteId(remote.getRemoteId());
return file;
}
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;
+ 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
}
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();
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, "
+ 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();
*/\r
package com.owncloud.android.ui.adapter;\r
\r
+import java.util.Vector;\r
+\r
import android.accounts.Account;\r
-import android.content.Context;
+import android.content.Context;\r
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.view.ViewGroup;\r
import android.widget.ListView;\r
import android.widget.TextView;\r
\r
-\r
-import java.util.Vector;\r
-\r
import com.owncloud.android.R;\r
import com.owncloud.android.authentication.AccountUtils;\r
import com.owncloud.android.datamodel.FileDataStorageManager;\r
* \r
*/\r
public class FileListListAdapter extends BaseAdapter implements ListAdapter {\r
+ private final static String PERMISSION_SHARED_WITH_ME = "S";\r
+\r
private Context mContext;\r
private OCFile mFile = null;\r
private Vector<OCFile> mFiles = null;\r
\r
fileName.setText(name);\r
ImageView fileIcon = (ImageView) view.findViewById(R.id.imageView1);\r
- fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
+ ImageView sharedIconV = (ImageView) view.findViewById(R.id.sharedIcon);\r
+ ImageView sharedWithMeIconV = (ImageView) view.findViewById(R.id.sharedWithMeIcon);\r
+ sharedWithMeIconV.setVisibility(View.GONE);\r
+\r
ImageView localStateView = (ImageView) view.findViewById(R.id.imageView2);\r
FileDownloaderBinder downloaderBinder = mTransferServiceGetter.getFileDownloaderBinder();\r
FileUploaderBinder uploaderBinder = mTransferServiceGetter.getFileUploaderBinder();\r
}\r
checkBoxV.setVisibility(View.VISIBLE);\r
}\r
- \r
+\r
+ fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
+\r
+ if (checkIfFileIsSharedWithMe(file)) {\r
+ sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ }\r
} \r
else {\r
\r
lastModV.setText(DisplayUtils.unixTimeToHumanReadable(file.getModificationTimestamp()));\r
checkBoxV.setVisibility(View.GONE);\r
view.findViewById(R.id.imageView3).setVisibility(View.GONE);\r
+\r
+ if (checkIfFileIsSharedWithMe(file)) {\r
+ fileIcon.setImageResource(R.drawable.shared_with_me_folder);\r
+ sharedWithMeIconV.setVisibility(View.VISIBLE);\r
+ } else {\r
+ fileIcon.setImageResource(DisplayUtils.getResourceId(file.getMimetype(), file.getFileName()));\r
+ }\r
}\r
- \r
- ImageView shareIconV = (ImageView) view.findViewById(R.id.shareIcon);\r
+\r
if (file.isShareByLink()) {\r
- shareIconV.setVisibility(View.VISIBLE);\r
+ sharedIconV.setVisibility(View.VISIBLE);\r
} else {\r
- shareIconV.setVisibility(View.INVISIBLE);\r
+ sharedIconV.setVisibility(View.GONE);\r
}\r
}\r
\r
notifyDataSetChanged();\r
}\r
\r
+ /**\r
+ * Check if parent folder does not include 'S' permission and if file/folder\r
+ * is shared with me\r
+ * \r
+ * @param file: OCFile\r
+ * @return boolean: True if it is shared with me and false if it is not\r
+ */\r
+ private boolean checkIfFileIsSharedWithMe(OCFile file) {\r
+ return (mFile.getPermissions() != null && !mFile.getPermissions().contains(PERMISSION_SHARED_WITH_ME)\r
+ && file.getPermissions() != null && file.getPermissions().contains(PERMISSION_SHARED_WITH_ME));\r
+ }\r
}\r
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;
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
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;
file.setMimetype(remote.getMimeType());
file.setModificationTimestamp(remote.getModifiedTimestamp());
file.setEtag(remote.getEtag());
-
+ file.setPermissions(remote.getPermissions());
+ file.setRemoteId(remote.getRemoteId());
return file;
}
file.setMimeType(ocFile.getMimetype());
file.setModifiedTimestamp(ocFile.getModificationTimestamp());
file.setEtag(ocFile.getEtag());
+ file.setPermissions(ocFile.getPermissions());
+ file.setRemoteId(ocFile.getRemoteId());
return file;
}