mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
97 lines
2.6 KiB
Java
97 lines
2.6 KiB
Java
package org.briarproject.android.threaded;
|
|
|
|
import android.support.annotation.UiThread;
|
|
import android.view.View;
|
|
import android.widget.TextView;
|
|
|
|
import org.briarproject.R;
|
|
import org.briarproject.android.threaded.ThreadItemAdapter.ThreadItemListener;
|
|
import org.briarproject.api.nullsafety.NotNullByDefault;
|
|
|
|
import static android.view.View.GONE;
|
|
import static android.view.View.INVISIBLE;
|
|
import static android.view.View.VISIBLE;
|
|
|
|
@UiThread
|
|
@NotNullByDefault
|
|
public class ThreadPostViewHolder<I extends ThreadItem>
|
|
extends BaseThreadItemViewHolder<I> {
|
|
|
|
private final TextView lvlText, repliesText;
|
|
private final View[] lvls;
|
|
private final View chevron, replyButton;
|
|
|
|
public ThreadPostViewHolder(View v) {
|
|
super(v);
|
|
|
|
lvlText = (TextView) v.findViewById(R.id.nested_line_text);
|
|
repliesText = (TextView) v.findViewById(R.id.replies);
|
|
int[] nestedLineIds = {
|
|
R.id.nested_line_1, R.id.nested_line_2, R.id.nested_line_3,
|
|
R.id.nested_line_4, R.id.nested_line_5
|
|
};
|
|
lvls = new View[nestedLineIds.length];
|
|
for (int i = 0; i < lvls.length; i++) {
|
|
lvls[i] = v.findViewById(nestedLineIds[i]);
|
|
}
|
|
chevron = v.findViewById(R.id.chevron);
|
|
replyButton = v.findViewById(R.id.btn_reply);
|
|
}
|
|
|
|
// TODO improve encapsulation, so we don't need to pass the adapter here
|
|
@Override
|
|
public void bind(final ThreadItemAdapter<I> adapter,
|
|
final ThreadItemListener<I> listener, final I item, int pos) {
|
|
super.bind(adapter, listener, item, pos);
|
|
|
|
for (int i = 0; i < lvls.length; i++) {
|
|
lvls[i].setVisibility(i < item.getLevel() ? VISIBLE : GONE);
|
|
}
|
|
if (item.getLevel() > 5) {
|
|
lvlText.setVisibility(VISIBLE);
|
|
lvlText.setText("" + item.getLevel());
|
|
} else {
|
|
lvlText.setVisibility(GONE);
|
|
}
|
|
|
|
int replies = adapter.getReplyCount(item);
|
|
if (replies == 0) {
|
|
repliesText.setText("");
|
|
} else {
|
|
repliesText.setText(getContext().getResources()
|
|
.getQuantityString(R.plurals.message_replies, replies,
|
|
replies));
|
|
}
|
|
|
|
if (item.hasDescendants()) {
|
|
chevron.setVisibility(VISIBLE);
|
|
if (item.isShowingDescendants()) {
|
|
chevron.setSelected(false);
|
|
} else {
|
|
chevron.setSelected(true);
|
|
}
|
|
chevron.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
chevron.setSelected(!chevron.isSelected());
|
|
if (chevron.isSelected()) {
|
|
adapter.hideDescendants(item);
|
|
} else {
|
|
adapter.showDescendants(item);
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
chevron.setVisibility(INVISIBLE);
|
|
}
|
|
replyButton.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
listener.onReplyClick(item);
|
|
adapter.scrollTo(item);
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|