Add visibility and OPTIONS button to private group join notices

This commit is contained in:
Torsten Grote
2016-11-11 14:51:56 -02:00
parent c4a152b543
commit 980a6d18bb
21 changed files with 367 additions and 118 deletions

View File

@@ -1,30 +1,110 @@
package org.briarproject.android.privategroup.conversation;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.UiThread;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import org.briarproject.R;
import org.briarproject.android.privategroup.reveal.RevealContactsActivity;
import org.briarproject.android.threaded.BaseThreadItemViewHolder;
import org.briarproject.android.threaded.ThreadItemAdapter;
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.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;
@UiThread
@NotNullByDefault
public class JoinMessageItemViewHolder
extends BaseThreadItemViewHolder<GroupMessageItem> {
extends BaseThreadItemViewHolder<JoinMessageItem> {
public JoinMessageItemViewHolder(View v) {
private final boolean isCreator;
private final ImageView icon;
private final TextView info;
private final Button options;
public JoinMessageItemViewHolder(View v, boolean isCreator) {
super(v);
this.isCreator = isCreator;
icon = (ImageView) v.findViewById(R.id.icon);
info = (TextView) v.findViewById(R.id.info);
options = (Button) v.findViewById(R.id.optionsButton);
}
@Override
public void bind(final ThreadItemAdapter<GroupMessageItem> adapter,
final ThreadItemListener<GroupMessageItem> listener,
final GroupMessageItem item, int pos) {
public void bind(ThreadItemAdapter<JoinMessageItem> adapter,
ThreadItemListener<JoinMessageItem> listener, JoinMessageItem item,
int pos) {
super.bind(adapter, listener, item, pos);
textView.setText(getContext().getString(R.string.groups_member_joined));
if (isCreator) bindForCreator(item);
else bind(item);
}
private void bindForCreator(final JoinMessageItem item) {
if (item.isInitial()) {
textView.setText(
getContext().getString(R.string.groups_member_created_you));
} else {
textView.setText(
getContext().getString(R.string.groups_member_joined,
item.getAuthor().getName()));
}
icon.setVisibility(View.GONE);
info.setVisibility(View.GONE);
options.setVisibility(View.GONE);
}
private void bind(final JoinMessageItem item) {
final Context ctx = getContext();
if (item.isInitial()) {
textView.setText(ctx.getString(R.string.groups_member_created,
item.getAuthor().getName()));
} else {
if (item.getStatus() == OURSELVES) {
textView.setText(
ctx.getString(R.string.groups_member_joined_you));
} else {
textView.setText(ctx.getString(R.string.groups_member_joined,
item.getAuthor().getName()));
}
}
if (item.getStatus() == OURSELVES || item.getStatus() == UNKNOWN) {
icon.setVisibility(View.GONE);
info.setVisibility(View.GONE);
options.setVisibility(View.GONE);
} else {
icon.setVisibility(View.VISIBLE);
info.setVisibility(View.VISIBLE);
info.setText(getVisibilityString(item.getVisibility()));
if (item.getVisibility() == INVISIBLE) {
icon.setImageResource(R.drawable.ic_visibility_off);
options.setVisibility(View.VISIBLE);
options.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i =
new Intent(ctx, RevealContactsActivity.class);
i.putExtra(GROUP_ID, item.getGroupId().getBytes());
ctx.startActivity(i);
}
});
} else {
icon.setImageResource(R.drawable.ic_visibility);
options.setVisibility(View.GONE);
}
}
}
}