mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
Add visibility information to group member list
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package org.briarproject.android.privategroup;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.DrawableRes;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.api.privategroup.Visibility;
|
||||
|
||||
import static org.briarproject.api.privategroup.Visibility.INVISIBLE;
|
||||
|
||||
public class VisibilityHelper {
|
||||
|
||||
public static String getVisibilityString(Context ctx, Visibility v,
|
||||
String contact) {
|
||||
switch (v) {
|
||||
case VISIBLE:
|
||||
return ctx.getString(R.string.groups_reveal_visible);
|
||||
case REVEALED_BY_US:
|
||||
return ctx.getString(
|
||||
R.string.groups_reveal_visible_revealed_by_us);
|
||||
case REVEALED_BY_CONTACT:
|
||||
return ctx.getString(
|
||||
R.string.groups_reveal_visible_revealed_by_contact,
|
||||
contact);
|
||||
case INVISIBLE:
|
||||
return ctx.getString(R.string.groups_reveal_invisible);
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown visibility");
|
||||
}
|
||||
}
|
||||
|
||||
@DrawableRes
|
||||
public static int getVisibilityIcon(Visibility v) {
|
||||
if (v == INVISIBLE) {
|
||||
return R.drawable.ic_visibility_off;
|
||||
}
|
||||
return R.drawable.ic_visibility;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package org.briarproject.android.privategroup;
|
||||
|
||||
import android.support.annotation.StringRes;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.api.privategroup.Visibility;
|
||||
|
||||
public class VisibilityStringProvider {
|
||||
|
||||
@StringRes
|
||||
public static int getVisibilityStringId(Visibility v) {
|
||||
switch (v) {
|
||||
case VISIBLE:
|
||||
return R.string.groups_reveal_visible;
|
||||
case REVEALED_BY_US:
|
||||
return R.string.groups_reveal_visible_revealed_by_us;
|
||||
case REVEALED_BY_CONTACT:
|
||||
return R.string.groups_reveal_visible_revealed_by_contact;
|
||||
case INVISIBLE:
|
||||
return R.string.groups_reveal_invisible;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown visibility");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,7 +16,8 @@ import org.briarproject.android.threaded.ThreadItemAdapter.ThreadItemListener;
|
||||
import org.briarproject.api.nullsafety.NotNullByDefault;
|
||||
|
||||
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
||||
import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityStringId;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityIcon;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityString;
|
||||
import static org.briarproject.api.identity.Author.Status.OURSELVES;
|
||||
import static org.briarproject.api.identity.Author.Status.UNKNOWN;
|
||||
import static org.briarproject.api.privategroup.Visibility.INVISIBLE;
|
||||
@@ -83,11 +84,11 @@ class JoinMessageItemViewHolder
|
||||
options.setVisibility(View.GONE);
|
||||
} else {
|
||||
icon.setVisibility(View.VISIBLE);
|
||||
icon.setImageResource(getVisibilityIcon(item.getVisibility()));
|
||||
info.setVisibility(View.VISIBLE);
|
||||
info.setText(getVisibilityStringId(item.getVisibility()));
|
||||
|
||||
info.setText(getVisibilityString(getContext(), item.getVisibility(),
|
||||
item.getAuthor().getName()));
|
||||
if (item.getVisibility() == INVISIBLE) {
|
||||
icon.setImageResource(R.drawable.ic_visibility_off);
|
||||
options.setVisibility(View.VISIBLE);
|
||||
options.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -99,7 +100,6 @@ class JoinMessageItemViewHolder
|
||||
}
|
||||
});
|
||||
} else {
|
||||
icon.setImageResource(R.drawable.ic_visibility);
|
||||
options.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ class MemberListAdapter extends
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(MemberListItem m1, MemberListItem m2) {
|
||||
if (m1.isSharing() != m2.isSharing()) return false;
|
||||
if (m1.getVisibility() != m2.getVisibility()) return false;
|
||||
if (m1.getStatus() != m2.getStatus()) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import org.briarproject.api.identity.Author;
|
||||
import org.briarproject.api.identity.Author.Status;
|
||||
import org.briarproject.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.api.privategroup.GroupMember;
|
||||
import org.briarproject.api.privategroup.Visibility;
|
||||
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
@@ -15,11 +16,11 @@ class MemberListItem {
|
||||
|
||||
private final Author member;
|
||||
private final Status status;
|
||||
private final boolean sharing;
|
||||
private final Visibility visibility;
|
||||
|
||||
public MemberListItem(GroupMember groupMember) {
|
||||
this.member = groupMember.getAuthor();
|
||||
this.sharing = groupMember.getVisibility() != INVISIBLE;
|
||||
this.visibility = groupMember.getVisibility();
|
||||
this.status = groupMember.getStatus();
|
||||
}
|
||||
|
||||
@@ -27,8 +28,8 @@ class MemberListItem {
|
||||
return member;
|
||||
}
|
||||
|
||||
public boolean isSharing() {
|
||||
return sharing;
|
||||
public Visibility getVisibility() {
|
||||
return visibility;
|
||||
}
|
||||
|
||||
public Status getStatus() {
|
||||
|
||||
@@ -4,35 +4,45 @@ import android.support.annotation.UiThread;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.briarproject.R;
|
||||
import org.briarproject.android.view.AuthorView;
|
||||
import org.briarproject.api.nullsafety.NotNullByDefault;
|
||||
|
||||
import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityIcon;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityString;
|
||||
import static org.briarproject.api.identity.Author.Status.OURSELVES;
|
||||
import static org.briarproject.api.identity.Author.Status.UNKNOWN;
|
||||
|
||||
@UiThread
|
||||
@NotNullByDefault
|
||||
class MemberListItemHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private final AuthorView author;
|
||||
private final ImageView sharing;
|
||||
private final ImageView icon;
|
||||
private final TextView info;
|
||||
|
||||
MemberListItemHolder(View v) {
|
||||
super(v);
|
||||
author = (AuthorView) v.findViewById(R.id.authorView);
|
||||
sharing = (ImageView) v.findViewById(R.id.sharingView);
|
||||
icon = (ImageView) v.findViewById(R.id.icon);
|
||||
info = (TextView) v.findViewById(R.id.info);
|
||||
}
|
||||
|
||||
protected void bind(MemberListItem item) {
|
||||
author.setAuthor(item.getMember());
|
||||
author.setAuthorStatus(item.getStatus());
|
||||
if (item.isSharing() && item.getStatus() != OURSELVES) {
|
||||
sharing.setVisibility(VISIBLE);
|
||||
if (item.getStatus() == OURSELVES || item.getStatus() == UNKNOWN) {
|
||||
icon.setVisibility(View.GONE);
|
||||
info.setVisibility(View.GONE);
|
||||
} else {
|
||||
sharing.setVisibility(INVISIBLE);
|
||||
icon.setVisibility(View.VISIBLE);
|
||||
icon.setImageResource(getVisibilityIcon(item.getVisibility()));
|
||||
info.setVisibility(View.VISIBLE);
|
||||
info.setText(
|
||||
getVisibilityString(info.getContext(), item.getVisibility(),
|
||||
item.getMember().getName()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,8 @@ import org.briarproject.android.contactselection.BaseSelectableContactHolder;
|
||||
import org.briarproject.api.nullsafety.NotNullByDefault;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import static org.briarproject.android.privategroup.VisibilityStringProvider.getVisibilityStringId;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityIcon;
|
||||
import static org.briarproject.android.privategroup.VisibilityHelper.getVisibilityString;
|
||||
import static org.briarproject.android.util.AndroidUtils.GREY_OUT;
|
||||
import static org.briarproject.api.privategroup.Visibility.INVISIBLE;
|
||||
|
||||
@@ -32,13 +33,10 @@ public class RevealableContactViewHolder
|
||||
OnContactClickListener<RevealableContactItem> listener) {
|
||||
super.bind(item, listener);
|
||||
|
||||
info.setText(getVisibilityStringId(item.getVisibility()));
|
||||
|
||||
if (item.getVisibility() == INVISIBLE) {
|
||||
icon.setImageResource(R.drawable.ic_visibility_off);
|
||||
} else {
|
||||
icon.setImageResource(R.drawable.ic_visibility);
|
||||
}
|
||||
icon.setImageResource(getVisibilityIcon(item.getVisibility()));
|
||||
info.setText(
|
||||
getVisibilityString(info.getContext(), item.getVisibility(),
|
||||
item.getContact().getAuthor().getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user