Copy user id to clipboard (#840)
Co-Authored-By: M M Arif <mmarif@noreply.codeberg.org> Co-Committed-By: M M Arif <mmarif@noreply.codeberg.org>
This commit is contained in:
parent
ff915f1813
commit
328dbaa01c
@ -16,6 +16,7 @@ import com.amulyakhare.textdrawable.TextDrawable;
|
|||||||
import org.gitnex.tea4j.models.UserInfo;
|
import org.gitnex.tea4j.models.UserInfo;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -26,19 +27,22 @@ import java.util.List;
|
|||||||
|
|
||||||
public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdapter.UsersViewHolder> implements Filterable {
|
public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdapter.UsersViewHolder> implements Filterable {
|
||||||
|
|
||||||
private List<UserInfo> usersList;
|
private final List<UserInfo> usersList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
private List<UserInfo> usersListFull;
|
private final List<UserInfo> usersListFull;
|
||||||
|
|
||||||
static class UsersViewHolder extends RecyclerView.ViewHolder {
|
static class UsersViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private ImageView userAvatar;
|
private String userLoginId;
|
||||||
private TextView userFullName;
|
|
||||||
private TextView userEmail;
|
private final ImageView userAvatar;
|
||||||
private ImageView userRole;
|
private final TextView userFullName;
|
||||||
private TextView userName;
|
private final TextView userEmail;
|
||||||
|
private final ImageView userRole;
|
||||||
|
private final TextView userName;
|
||||||
|
|
||||||
private UsersViewHolder(View itemView) {
|
private UsersViewHolder(View itemView) {
|
||||||
|
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
||||||
userAvatar = itemView.findViewById(R.id.userAvatar);
|
userAvatar = itemView.findViewById(R.id.userAvatar);
|
||||||
@ -47,10 +51,17 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
userEmail = itemView.findViewById(R.id.userEmail);
|
userEmail = itemView.findViewById(R.id.userEmail);
|
||||||
userRole = itemView.findViewById(R.id.userRole);
|
userRole = itemView.findViewById(R.id.userRole);
|
||||||
|
|
||||||
|
userAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AdminGetUsersAdapter(Context mCtx, List<UserInfo> usersListMain) {
|
public AdminGetUsersAdapter(Context mCtx, List<UserInfo> usersListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.usersList = usersListMain;
|
this.usersList = usersListMain;
|
||||||
usersListFull = new ArrayList<>(usersList);
|
usersListFull = new ArrayList<>(usersList);
|
||||||
@ -59,6 +70,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public AdminGetUsersAdapter.UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public AdminGetUsersAdapter.UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
|
||||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_admin_users, parent, false);
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_admin_users, parent, false);
|
||||||
return new AdminGetUsersAdapter.UsersViewHolder(v);
|
return new AdminGetUsersAdapter.UsersViewHolder(v);
|
||||||
}
|
}
|
||||||
@ -68,6 +80,8 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
|
|
||||||
UserInfo currentItem = usersList.get(position);
|
UserInfo currentItem = usersList.get(position);
|
||||||
|
|
||||||
|
holder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
if(!currentItem.getFullname().equals("")) {
|
if(!currentItem.getFullname().equals("")) {
|
||||||
|
|
||||||
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
||||||
@ -89,6 +103,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(currentItem.getIs_admin()) {
|
if(currentItem.getIs_admin()) {
|
||||||
|
|
||||||
holder.userRole.setVisibility(View.VISIBLE);
|
holder.userRole.setVisibility(View.VISIBLE);
|
||||||
TextDrawable drawable = TextDrawable.builder()
|
TextDrawable drawable = TextDrawable.builder()
|
||||||
.beginConfig()
|
.beginConfig()
|
||||||
@ -101,6 +116,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
holder.userRole.setImageDrawable(drawable);
|
holder.userRole.setImageDrawable(drawable);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
holder.userRole.setVisibility(View.GONE);
|
holder.userRole.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,14 +133,15 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
return usersFilter;
|
return usersFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Filter usersFilter = new Filter() {
|
private final Filter usersFilter = new Filter() {
|
||||||
@Override
|
@Override
|
||||||
protected FilterResults performFiltering(CharSequence constraint) {
|
protected FilterResults performFiltering(CharSequence constraint) {
|
||||||
List<UserInfo> filteredList = new ArrayList<>();
|
List<UserInfo> filteredList = new ArrayList<>();
|
||||||
|
|
||||||
if (constraint == null || constraint.length() == 0) {
|
if (constraint == null || constraint.length() == 0) {
|
||||||
filteredList.addAll(usersListFull);
|
filteredList.addAll(usersListFull);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||||
|
|
||||||
for (UserInfo item : usersListFull) {
|
for (UserInfo item : usersListFull) {
|
||||||
@ -142,6 +159,7 @@ public class AdminGetUsersAdapter extends RecyclerView.Adapter<AdminGetUsersAdap
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void publishResults(CharSequence constraint, FilterResults results) {
|
protected void publishResults(CharSequence constraint, FilterResults results) {
|
||||||
|
|
||||||
usersList.clear();
|
usersList.clear();
|
||||||
usersList.addAll((List) results.values);
|
usersList.addAll((List) results.values);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
|
@ -12,6 +12,7 @@ import android.widget.TextView;
|
|||||||
import org.gitnex.tea4j.models.Collaborators;
|
import org.gitnex.tea4j.models.Collaborators;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -21,21 +22,32 @@ import java.util.List;
|
|||||||
|
|
||||||
public class CollaboratorsAdapter extends BaseAdapter {
|
public class CollaboratorsAdapter extends BaseAdapter {
|
||||||
|
|
||||||
private List<Collaborators> collaboratorsList;
|
private final List<Collaborators> collaboratorsList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
|
|
||||||
private class ViewHolder {
|
private static class ViewHolder {
|
||||||
|
|
||||||
private ImageView collaboratorAvatar;
|
private String userLoginId;
|
||||||
private TextView collaboratorName;
|
|
||||||
|
private final ImageView collaboratorAvatar;
|
||||||
|
private final TextView collaboratorName;
|
||||||
|
|
||||||
ViewHolder(View v) {
|
ViewHolder(View v) {
|
||||||
|
|
||||||
collaboratorAvatar = v.findViewById(R.id.collaboratorAvatar);
|
collaboratorAvatar = v.findViewById(R.id.collaboratorAvatar);
|
||||||
collaboratorName = v.findViewById(R.id.collaboratorName);
|
collaboratorName = v.findViewById(R.id.collaboratorName);
|
||||||
|
|
||||||
|
collaboratorAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public CollaboratorsAdapter(Context mCtx, List<Collaborators> collaboratorsListMain) {
|
public CollaboratorsAdapter(Context mCtx, List<Collaborators> collaboratorsListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.collaboratorsList = collaboratorsListMain;
|
this.collaboratorsList = collaboratorsListMain;
|
||||||
}
|
}
|
||||||
@ -62,17 +74,18 @@ public class CollaboratorsAdapter extends BaseAdapter {
|
|||||||
ViewHolder viewHolder = null;
|
ViewHolder viewHolder = null;
|
||||||
|
|
||||||
if (finalView == null) {
|
if (finalView == null) {
|
||||||
|
|
||||||
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_collaborators, null);
|
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_collaborators, null);
|
||||||
viewHolder = new ViewHolder(finalView);
|
viewHolder = new ViewHolder(finalView);
|
||||||
finalView.setTag(viewHolder);
|
finalView.setTag(viewHolder);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
viewHolder = (ViewHolder) finalView.getTag();
|
viewHolder = (ViewHolder) finalView.getTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
initData(viewHolder, position);
|
initData(viewHolder, position);
|
||||||
return finalView;
|
return finalView;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initData(ViewHolder viewHolder, int position) {
|
private void initData(ViewHolder viewHolder, int position) {
|
||||||
@ -80,6 +93,8 @@ public class CollaboratorsAdapter extends BaseAdapter {
|
|||||||
Collaborators currentItem = collaboratorsList.get(position);
|
Collaborators currentItem = collaboratorsList.get(position);
|
||||||
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.collaboratorAvatar);
|
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.collaboratorAvatar);
|
||||||
|
|
||||||
|
viewHolder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
if(!currentItem.getFull_name().equals("")) {
|
if(!currentItem.getFull_name().equals("")) {
|
||||||
|
|
||||||
viewHolder.collaboratorName.setText(Html.fromHtml(currentItem.getFull_name()));
|
viewHolder.collaboratorName.setText(Html.fromHtml(currentItem.getFull_name()));
|
||||||
|
@ -65,6 +65,7 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
|
|||||||
|
|
||||||
class IssueCommentViewHolder extends RecyclerView.ViewHolder {
|
class IssueCommentViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private String userLoginId;
|
||||||
private IssueComments issueComment;
|
private IssueComments issueComment;
|
||||||
|
|
||||||
private final ImageView avatar;
|
private final ImageView avatar;
|
||||||
@ -227,6 +228,13 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
avatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -311,6 +319,8 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
|
|||||||
String timeFormat = tinyDB.getString("dateFormat");
|
String timeFormat = tinyDB.getString("dateFormat");
|
||||||
IssueComments issueComment = issuesComments.get(position);
|
IssueComments issueComment = issuesComments.get(position);
|
||||||
|
|
||||||
|
holder.userLoginId = issueComment.getUser().getLogin();
|
||||||
|
|
||||||
holder.issueComment = issueComment;
|
holder.issueComment = issueComment;
|
||||||
holder.author.setText(issueComment.getUser().getUsername());
|
holder.author.setText(issueComment.getUser().getUsername());
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import org.gitnex.tea4j.models.Issues;
|
|||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.activities.IssueDetailActivity;
|
import org.mian.gitnex.activities.IssueDetailActivity;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.ClickListener;
|
import org.mian.gitnex.helpers.ClickListener;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import org.mian.gitnex.helpers.TimeHelper;
|
import org.mian.gitnex.helpers.TimeHelper;
|
||||||
@ -101,6 +102,8 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||||||
|
|
||||||
class IssuesHolder extends RecyclerView.ViewHolder {
|
class IssuesHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private String userLoginId;
|
||||||
|
|
||||||
private final TextView issueNumber;
|
private final TextView issueNumber;
|
||||||
private final ImageView issueAssigneeAvatar;
|
private final ImageView issueAssigneeAvatar;
|
||||||
private final TextView issueTitle;
|
private final TextView issueTitle;
|
||||||
@ -118,9 +121,9 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||||||
LinearLayout frameCommentsCount = itemView.findViewById(R.id.frameCommentsCount);
|
LinearLayout frameCommentsCount = itemView.findViewById(R.id.frameCommentsCount);
|
||||||
issueCreatedTime = itemView.findViewById(R.id.issueCreatedTime);
|
issueCreatedTime = itemView.findViewById(R.id.issueCreatedTime);
|
||||||
|
|
||||||
issueTitle.setOnClickListener(v -> {
|
issueTitle.setOnClickListener(title -> {
|
||||||
|
|
||||||
Context context = v.getContext();
|
Context context = title.getContext();
|
||||||
|
|
||||||
Intent intent = new Intent(context, IssueDetailActivity.class);
|
Intent intent = new Intent(context, IssueDetailActivity.class);
|
||||||
intent.putExtra("issueNumber", issueNumber.getText());
|
intent.putExtra("issueNumber", issueNumber.getText());
|
||||||
@ -131,9 +134,10 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
|
||||||
});
|
});
|
||||||
frameCommentsCount.setOnClickListener(v -> {
|
|
||||||
|
|
||||||
Context context = v.getContext();
|
frameCommentsCount.setOnClickListener(commentsCount -> {
|
||||||
|
|
||||||
|
Context context = commentsCount.getContext();
|
||||||
|
|
||||||
Intent intent = new Intent(context, IssueDetailActivity.class);
|
Intent intent = new Intent(context, IssueDetailActivity.class);
|
||||||
intent.putExtra("issueNumber", issueNumber.getText());
|
intent.putExtra("issueNumber", issueNumber.getText());
|
||||||
@ -145,6 +149,13 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
issueAssigneeAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
@ -154,12 +165,7 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||||||
final String locale = tinyDb.getString("locale");
|
final String locale = tinyDb.getString("locale");
|
||||||
final String timeFormat = tinyDb.getString("dateFormat");
|
final String timeFormat = tinyDb.getString("dateFormat");
|
||||||
|
|
||||||
if(!issuesModel.getUser().getFull_name().equals("")) {
|
userLoginId = issuesModel.getUser().getLogin();
|
||||||
issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getFull_name(), context));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
issueAssigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.issueCreator) + issuesModel.getUser().getLogin(), context));
|
|
||||||
}
|
|
||||||
|
|
||||||
PicassoService.getInstance(context).get().load(issuesModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(issueAssigneeAvatar);
|
PicassoService.getInstance(context).get().load(issuesModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(issueAssigneeAvatar);
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import android.widget.TextView;
|
|||||||
import org.gitnex.tea4j.models.UserInfo;
|
import org.gitnex.tea4j.models.UserInfo;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -24,26 +25,36 @@ import java.util.List;
|
|||||||
|
|
||||||
public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
||||||
|
|
||||||
private List<UserInfo> membersList;
|
private final List<UserInfo> membersList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
private List<UserInfo> membersListFull;
|
private final List<UserInfo> membersListFull;
|
||||||
|
|
||||||
private class ViewHolder {
|
private static class ViewHolder {
|
||||||
|
|
||||||
private ImageView memberAvatar;
|
private String userLoginId;
|
||||||
private TextView memberName;
|
|
||||||
|
private final ImageView memberAvatar;
|
||||||
|
private final TextView memberName;
|
||||||
|
|
||||||
ViewHolder(View v) {
|
ViewHolder(View v) {
|
||||||
|
|
||||||
memberAvatar = v.findViewById(R.id.memberAvatar);
|
memberAvatar = v.findViewById(R.id.memberAvatar);
|
||||||
memberName = v.findViewById(R.id.memberName);
|
memberName = v.findViewById(R.id.memberName);
|
||||||
|
|
||||||
|
memberAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public MembersByOrgAdapter(Context mCtx, List<UserInfo> membersListMain) {
|
public MembersByOrgAdapter(Context mCtx, List<UserInfo> membersListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.membersList = membersListMain;
|
this.membersList = membersListMain;
|
||||||
membersListFull = new ArrayList<>(membersList);
|
membersListFull = new ArrayList<>(membersList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -68,17 +79,18 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
|||||||
MembersByOrgAdapter.ViewHolder viewHolder = null;
|
MembersByOrgAdapter.ViewHolder viewHolder = null;
|
||||||
|
|
||||||
if (finalView == null) {
|
if (finalView == null) {
|
||||||
|
|
||||||
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_org, null);
|
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_org, null);
|
||||||
viewHolder = new MembersByOrgAdapter.ViewHolder(finalView);
|
viewHolder = new ViewHolder(finalView);
|
||||||
finalView.setTag(viewHolder);
|
finalView.setTag(viewHolder);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
viewHolder = (MembersByOrgAdapter.ViewHolder) finalView.getTag();
|
viewHolder = (MembersByOrgAdapter.ViewHolder) finalView.getTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
initData(viewHolder, position);
|
initData(viewHolder, position);
|
||||||
return finalView;
|
return finalView;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initData(MembersByOrgAdapter.ViewHolder viewHolder, int position) {
|
private void initData(MembersByOrgAdapter.ViewHolder viewHolder, int position) {
|
||||||
@ -86,6 +98,8 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
|||||||
UserInfo currentItem = membersList.get(position);
|
UserInfo currentItem = membersList.get(position);
|
||||||
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(viewHolder.memberAvatar);
|
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(viewHolder.memberAvatar);
|
||||||
|
|
||||||
|
viewHolder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
if(!currentItem.getFullname().equals("")) {
|
if(!currentItem.getFullname().equals("")) {
|
||||||
|
|
||||||
viewHolder.memberName.setText(Html.fromHtml(currentItem.getFullname()));
|
viewHolder.memberName.setText(Html.fromHtml(currentItem.getFullname()));
|
||||||
@ -102,14 +116,17 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
|||||||
return membersFilter;
|
return membersFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Filter membersFilter = new Filter() {
|
private final Filter membersFilter = new Filter() {
|
||||||
@Override
|
@Override
|
||||||
protected FilterResults performFiltering(CharSequence constraint) {
|
protected FilterResults performFiltering(CharSequence constraint) {
|
||||||
List<UserInfo> filteredList = new ArrayList<>();
|
List<UserInfo> filteredList = new ArrayList<>();
|
||||||
|
|
||||||
if (constraint == null || constraint.length() == 0) {
|
if (constraint == null || constraint.length() == 0) {
|
||||||
|
|
||||||
filteredList.addAll(membersListFull);
|
filteredList.addAll(membersListFull);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
String filterPattern = constraint.toString().toLowerCase().trim();
|
String filterPattern = constraint.toString().toLowerCase().trim();
|
||||||
|
|
||||||
for (UserInfo item : membersListFull) {
|
for (UserInfo item : membersListFull) {
|
||||||
@ -127,6 +144,7 @@ public class MembersByOrgAdapter extends BaseAdapter implements Filterable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void publishResults(CharSequence constraint, FilterResults results) {
|
protected void publishResults(CharSequence constraint, FilterResults results) {
|
||||||
|
|
||||||
membersList.clear();
|
membersList.clear();
|
||||||
membersList.addAll((List) results.values);
|
membersList.addAll((List) results.values);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
|
@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import org.gitnex.tea4j.models.UserInfo;
|
import org.gitnex.tea4j.models.UserInfo;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -21,26 +22,36 @@ import java.util.List;
|
|||||||
|
|
||||||
public class ProfileFollowersAdapter extends RecyclerView.Adapter<ProfileFollowersAdapter.FollowersViewHolder> {
|
public class ProfileFollowersAdapter extends RecyclerView.Adapter<ProfileFollowersAdapter.FollowersViewHolder> {
|
||||||
|
|
||||||
private List<UserInfo> followersList;
|
private final List<UserInfo> followersList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
|
|
||||||
static class FollowersViewHolder extends RecyclerView.ViewHolder {
|
static class FollowersViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private ImageView userAvatar;
|
private String userLoginId;
|
||||||
private TextView userFullName;
|
|
||||||
private TextView userName;
|
private final ImageView userAvatar;
|
||||||
|
private final TextView userFullName;
|
||||||
|
private final TextView userName;
|
||||||
|
|
||||||
private FollowersViewHolder(View itemView) {
|
private FollowersViewHolder(View itemView) {
|
||||||
|
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
||||||
userAvatar = itemView.findViewById(R.id.userAvatar);
|
userAvatar = itemView.findViewById(R.id.userAvatar);
|
||||||
userFullName = itemView.findViewById(R.id.userFullName);
|
userFullName = itemView.findViewById(R.id.userFullName);
|
||||||
userName = itemView.findViewById(R.id.userName);
|
userName = itemView.findViewById(R.id.userName);
|
||||||
|
|
||||||
|
userAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProfileFollowersAdapter(Context mCtx, List<UserInfo> followersListMain) {
|
public ProfileFollowersAdapter(Context mCtx, List<UserInfo> followersListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.followersList = followersListMain;
|
this.followersList = followersListMain;
|
||||||
}
|
}
|
||||||
@ -48,8 +59,9 @@ public class ProfileFollowersAdapter extends RecyclerView.Adapter<ProfileFollowe
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ProfileFollowersAdapter.FollowersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public ProfileFollowersAdapter.FollowersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
|
||||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_profile_followers, parent, false);
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_profile_followers, parent, false);
|
||||||
return new ProfileFollowersAdapter.FollowersViewHolder(v);
|
return new FollowersViewHolder(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -57,6 +69,8 @@ public class ProfileFollowersAdapter extends RecyclerView.Adapter<ProfileFollowe
|
|||||||
|
|
||||||
UserInfo currentItem = followersList.get(position);
|
UserInfo currentItem = followersList.get(position);
|
||||||
|
|
||||||
|
holder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
if(!currentItem.getFullname().equals("")) {
|
if(!currentItem.getFullname().equals("")) {
|
||||||
|
|
||||||
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
||||||
|
@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import org.gitnex.tea4j.models.UserInfo;
|
import org.gitnex.tea4j.models.UserInfo;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -21,26 +22,36 @@ import java.util.List;
|
|||||||
|
|
||||||
public class ProfileFollowingAdapter extends RecyclerView.Adapter<ProfileFollowingAdapter.FollowingViewHolder> {
|
public class ProfileFollowingAdapter extends RecyclerView.Adapter<ProfileFollowingAdapter.FollowingViewHolder> {
|
||||||
|
|
||||||
private List<UserInfo> followingList;
|
private final List<UserInfo> followingList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
|
|
||||||
static class FollowingViewHolder extends RecyclerView.ViewHolder {
|
static class FollowingViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private ImageView userAvatar;
|
private String userLoginId;
|
||||||
private TextView userFullName;
|
|
||||||
private TextView userName;
|
private final ImageView userAvatar;
|
||||||
|
private final TextView userFullName;
|
||||||
|
private final TextView userName;
|
||||||
|
|
||||||
private FollowingViewHolder(View itemView) {
|
private FollowingViewHolder(View itemView) {
|
||||||
|
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
|
||||||
userAvatar = itemView.findViewById(R.id.userAvatar);
|
userAvatar = itemView.findViewById(R.id.userAvatar);
|
||||||
userFullName = itemView.findViewById(R.id.userFullName);
|
userFullName = itemView.findViewById(R.id.userFullName);
|
||||||
userName = itemView.findViewById(R.id.userName);
|
userName = itemView.findViewById(R.id.userName);
|
||||||
|
|
||||||
|
userAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProfileFollowingAdapter(Context mCtx, List<UserInfo> followingListMain) {
|
public ProfileFollowingAdapter(Context mCtx, List<UserInfo> followingListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.followingList = followingListMain;
|
this.followingList = followingListMain;
|
||||||
}
|
}
|
||||||
@ -48,8 +59,9 @@ public class ProfileFollowingAdapter extends RecyclerView.Adapter<ProfileFollowi
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public ProfileFollowingAdapter.FollowingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public ProfileFollowingAdapter.FollowingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
|
||||||
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_profile_following, parent, false);
|
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_profile_following, parent, false);
|
||||||
return new ProfileFollowingAdapter.FollowingViewHolder(v);
|
return new FollowingViewHolder(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -57,6 +69,8 @@ public class ProfileFollowingAdapter extends RecyclerView.Adapter<ProfileFollowi
|
|||||||
|
|
||||||
UserInfo currentItem = followingList.get(position);
|
UserInfo currentItem = followingList.get(position);
|
||||||
|
|
||||||
|
holder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
if(!currentItem.getFullname().equals("")) {
|
if(!currentItem.getFullname().equals("")) {
|
||||||
|
|
||||||
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
holder.userFullName.setText(Html.fromHtml(currentItem.getFullname()));
|
||||||
|
@ -18,6 +18,7 @@ import org.gitnex.tea4j.models.PullRequests;
|
|||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.activities.IssueDetailActivity;
|
import org.mian.gitnex.activities.IssueDetailActivity;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.ClickListener;
|
import org.mian.gitnex.helpers.ClickListener;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import org.mian.gitnex.helpers.TimeHelper;
|
import org.mian.gitnex.helpers.TimeHelper;
|
||||||
@ -98,6 +99,8 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||||||
|
|
||||||
class PullRequestsHolder extends RecyclerView.ViewHolder {
|
class PullRequestsHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
private String userLoginId;
|
||||||
|
|
||||||
private final TextView prNumber;
|
private final TextView prNumber;
|
||||||
private final TextView prMergeable;
|
private final TextView prMergeable;
|
||||||
private final TextView prHeadBranch;
|
private final TextView prHeadBranch;
|
||||||
@ -142,6 +145,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
frameCommentsCount.setOnClickListener(v -> {
|
frameCommentsCount.setOnClickListener(v -> {
|
||||||
|
|
||||||
Context context = v.getContext();
|
Context context = v.getContext();
|
||||||
@ -159,7 +163,13 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||||||
tinyDb.putString("prForkFullName", prForkFullName.getText().toString());
|
tinyDb.putString("prForkFullName", prForkFullName.getText().toString());
|
||||||
tinyDb.putString("issueType", "Pull");
|
tinyDb.putString("issueType", "Pull");
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
|
});
|
||||||
|
|
||||||
|
assigneeAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -171,19 +181,9 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||||||
final String locale = tinyDb.getString("locale");
|
final String locale = tinyDb.getString("locale");
|
||||||
final String timeFormat = tinyDb.getString("dateFormat");
|
final String timeFormat = tinyDb.getString("dateFormat");
|
||||||
|
|
||||||
if(!prModel.getUser().getFull_name().equals("")) {
|
userLoginId = prModel.getUser().getLogin();
|
||||||
assigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.prCreator) + prModel.getUser().getFull_name(), context));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
assigneeAvatar.setOnClickListener(new ClickListener(context.getResources().getString(R.string.prCreator) + prModel.getUser().getLogin(), context));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(prModel.getUser().getAvatar_url() != null) {
|
PicassoService.getInstance(context).get().load(prModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(assigneeAvatar);
|
||||||
PicassoService.getInstance(context).get().load(prModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(assigneeAvatar);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
PicassoService.getInstance(context).get().load(prModel.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(assigneeAvatar);
|
|
||||||
}
|
|
||||||
|
|
||||||
String prNumber_ = "<font color='" + ResourcesCompat.getColor(context.getResources(), R.color.lightGray, null) + "'>" + context.getResources().getString(R.string.hash) + prModel.getNumber() + "</font>";
|
String prNumber_ = "<font color='" + ResourcesCompat.getColor(context.getResources(), R.color.lightGray, null) + "'>" + context.getResources().getString(R.string.hash) + prModel.getNumber() + "</font>";
|
||||||
prTitle.setText(HtmlCompat.fromHtml(prNumber_ + " " + EmojiParser.parseToUnicode(prModel.getTitle()), HtmlCompat.FROM_HTML_MODE_LEGACY));
|
prTitle.setText(HtmlCompat.fromHtml(prNumber_ + " " + EmojiParser.parseToUnicode(prModel.getTitle()), HtmlCompat.FROM_HTML_MODE_LEGACY));
|
||||||
|
@ -17,6 +17,7 @@ import org.mian.gitnex.activities.IssueDetailActivity;
|
|||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
import org.mian.gitnex.database.api.RepositoriesApi;
|
import org.mian.gitnex.database.api.RepositoriesApi;
|
||||||
import org.mian.gitnex.database.models.Repository;
|
import org.mian.gitnex.database.models.Repository;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.ClickListener;
|
import org.mian.gitnex.helpers.ClickListener;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import org.mian.gitnex.helpers.TimeHelper;
|
import org.mian.gitnex.helpers.TimeHelper;
|
||||||
@ -33,9 +34,9 @@ import java.util.Locale;
|
|||||||
|
|
||||||
public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapter.SearchViewHolder> {
|
public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapter.SearchViewHolder> {
|
||||||
|
|
||||||
private List<Issues> searchedList;
|
private final List<Issues> searchedList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
private TinyDB tinyDb;
|
private final TinyDB tinyDb;
|
||||||
|
|
||||||
public SearchIssuesAdapter(List<Issues> dataList, Context mCtx) {
|
public SearchIssuesAdapter(List<Issues> dataList, Context mCtx) {
|
||||||
|
|
||||||
@ -46,12 +47,14 @@ public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapte
|
|||||||
|
|
||||||
class SearchViewHolder extends RecyclerView.ViewHolder {
|
class SearchViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
private TextView issueNumber;
|
private String userLoginId;
|
||||||
private ImageView issueAssigneeAvatar;
|
|
||||||
private TextView issueTitle;
|
private final TextView issueNumber;
|
||||||
private TextView issueCreatedTime;
|
private final ImageView issueAssigneeAvatar;
|
||||||
private TextView issueCommentsCount;
|
private final TextView issueTitle;
|
||||||
private TextView repoFullName;
|
private final TextView issueCreatedTime;
|
||||||
|
private final TextView issueCommentsCount;
|
||||||
|
private final TextView repoFullName;
|
||||||
|
|
||||||
private SearchViewHolder(View itemView) {
|
private SearchViewHolder(View itemView) {
|
||||||
|
|
||||||
@ -100,6 +103,13 @@ public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapte
|
|||||||
|
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
issueAssigneeAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -120,12 +130,7 @@ public class SearchIssuesAdapter extends RecyclerView.Adapter<SearchIssuesAdapte
|
|||||||
String locale = tinyDb.getString("locale");
|
String locale = tinyDb.getString("locale");
|
||||||
String timeFormat = tinyDb.getString("dateFormat");
|
String timeFormat = tinyDb.getString("dateFormat");
|
||||||
|
|
||||||
if(!currentItem.getUser().getFull_name().equals("")) {
|
holder.userLoginId = currentItem.getUser().getLogin();
|
||||||
holder.issueAssigneeAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCreator) + currentItem.getUser().getFull_name(), mCtx));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
holder.issueAssigneeAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCreator) + currentItem.getUser().getLogin(), mCtx));
|
|
||||||
}
|
|
||||||
|
|
||||||
PicassoService
|
PicassoService
|
||||||
.getInstance(mCtx).get().load(currentItem.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(holder.issueAssigneeAvatar);
|
.getInstance(mCtx).get().load(currentItem.getUser().getAvatar_url()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(holder.issueAssigneeAvatar);
|
||||||
|
@ -13,6 +13,7 @@ import android.widget.TextView;
|
|||||||
import org.gitnex.tea4j.models.UserInfo;
|
import org.gitnex.tea4j.models.UserInfo;
|
||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import org.mian.gitnex.helpers.TinyDB;
|
import org.mian.gitnex.helpers.TinyDB;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -23,24 +24,34 @@ import java.util.List;
|
|||||||
|
|
||||||
public class TeamMembersByOrgAdapter extends BaseAdapter {
|
public class TeamMembersByOrgAdapter extends BaseAdapter {
|
||||||
|
|
||||||
private List<UserInfo> teamMembersList;
|
private final List<UserInfo> teamMembersList;
|
||||||
private Context mCtx;
|
private final Context mCtx;
|
||||||
|
|
||||||
private static class ViewHolder {
|
private static class ViewHolder {
|
||||||
|
|
||||||
private ImageView memberAvatar;
|
private String userLoginId;
|
||||||
private TextView memberName;
|
|
||||||
|
private final ImageView memberAvatar;
|
||||||
|
private final TextView memberName;
|
||||||
|
|
||||||
ViewHolder(View v) {
|
ViewHolder(View v) {
|
||||||
|
|
||||||
memberAvatar = v.findViewById(R.id.memberAvatar);
|
memberAvatar = v.findViewById(R.id.memberAvatar);
|
||||||
memberName = v.findViewById(R.id.memberName);
|
memberName = v.findViewById(R.id.memberName);
|
||||||
|
|
||||||
|
memberAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
Context context = loginId.getContext();
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(context, userLoginId, context.getString(R.string.copyLoginIdToClipBoard, userLoginId));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TeamMembersByOrgAdapter(Context mCtx, List<UserInfo> membersListMain) {
|
public TeamMembersByOrgAdapter(Context mCtx, List<UserInfo> membersListMain) {
|
||||||
|
|
||||||
this.mCtx = mCtx;
|
this.mCtx = mCtx;
|
||||||
this.teamMembersList = membersListMain;
|
this.teamMembersList = membersListMain;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -65,17 +76,18 @@ public class TeamMembersByOrgAdapter extends BaseAdapter {
|
|||||||
TeamMembersByOrgAdapter.ViewHolder viewHolder = null;
|
TeamMembersByOrgAdapter.ViewHolder viewHolder = null;
|
||||||
|
|
||||||
if (finalView == null) {
|
if (finalView == null) {
|
||||||
|
|
||||||
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_team_by_org, null);
|
finalView = LayoutInflater.from(mCtx).inflate(R.layout.list_members_by_team_by_org, null);
|
||||||
viewHolder = new ViewHolder(finalView);
|
viewHolder = new ViewHolder(finalView);
|
||||||
finalView.setTag(viewHolder);
|
finalView.setTag(viewHolder);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
viewHolder = (TeamMembersByOrgAdapter.ViewHolder) finalView.getTag();
|
viewHolder = (TeamMembersByOrgAdapter.ViewHolder) finalView.getTag();
|
||||||
}
|
}
|
||||||
|
|
||||||
initData(viewHolder, position);
|
initData(viewHolder, position);
|
||||||
return finalView;
|
return finalView;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initData(TeamMembersByOrgAdapter.ViewHolder viewHolder, int position) {
|
private void initData(TeamMembersByOrgAdapter.ViewHolder viewHolder, int position) {
|
||||||
@ -83,6 +95,8 @@ public class TeamMembersByOrgAdapter extends BaseAdapter {
|
|||||||
UserInfo currentItem = teamMembersList.get(position);
|
UserInfo currentItem = teamMembersList.get(position);
|
||||||
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar);
|
PicassoService.getInstance(mCtx).get().load(currentItem.getAvatar()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar);
|
||||||
|
|
||||||
|
viewHolder.userLoginId = currentItem.getLogin();
|
||||||
|
|
||||||
final TinyDB tinyDb = TinyDB.getInstance(mCtx);
|
final TinyDB tinyDb = TinyDB.getInstance(mCtx);
|
||||||
Typeface myTypeface;
|
Typeface myTypeface;
|
||||||
|
|
||||||
@ -112,6 +126,5 @@ public class TeamMembersByOrgAdapter extends BaseAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
viewHolder.memberName.setTypeface(myTypeface);
|
viewHolder.memberName.setTypeface(myTypeface);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ import com.squareup.picasso.Callback;
|
|||||||
import org.mian.gitnex.R;
|
import org.mian.gitnex.R;
|
||||||
import org.mian.gitnex.activities.MainActivity;
|
import org.mian.gitnex.activities.MainActivity;
|
||||||
import org.mian.gitnex.clients.PicassoService;
|
import org.mian.gitnex.clients.PicassoService;
|
||||||
|
import org.mian.gitnex.helpers.AppUtil;
|
||||||
import org.mian.gitnex.helpers.ColorInverter;
|
import org.mian.gitnex.helpers.ColorInverter;
|
||||||
import org.mian.gitnex.helpers.RoundedTransformation;
|
import org.mian.gitnex.helpers.RoundedTransformation;
|
||||||
import org.mian.gitnex.helpers.TinyDB;
|
import org.mian.gitnex.helpers.TinyDB;
|
||||||
@ -76,6 +77,11 @@ public class ProfileFragment extends Fragment {
|
|||||||
userLanguage.setText(R.string.notSupported);
|
userLanguage.setText(R.string.notSupported);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
userAvatar.setOnClickListener(loginId -> {
|
||||||
|
|
||||||
|
AppUtil.copyToClipboard(ctx, tinyDb.getString("userLogin"), ctx.getString(R.string.copyLoginIdToClipBoard, tinyDb.getString("userLogin")));
|
||||||
|
});
|
||||||
|
|
||||||
userFullName.setText(Html.fromHtml(tinyDb.getString("userFullname")));
|
userFullName.setText(Html.fromHtml(tinyDb.getString("userFullname")));
|
||||||
userLogin.setText(getString(R.string.usernameWithAt, tinyDb.getString("userLogin")));
|
userLogin.setText(getString(R.string.usernameWithAt, tinyDb.getString("userLogin")));
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package org.mian.gitnex.helpers;
|
package org.mian.gitnex.helpers;
|
||||||
|
|
||||||
|
import android.content.ClipData;
|
||||||
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
@ -21,6 +23,7 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Author M M Arif
|
* Author M M Arif
|
||||||
@ -245,4 +248,14 @@ public class AppUtil {
|
|||||||
return (int) (context.getResources().getDisplayMetrics().scaledDensity * sp);
|
return (int) (context.getResources().getDisplayMetrics().scaledDensity * sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void copyToClipboard(Context ctx, CharSequence data, String message) {
|
||||||
|
|
||||||
|
ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(ctx).getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
|
assert clipboard != null;
|
||||||
|
|
||||||
|
ClipData clip = ClipData.newPlainText(data, data);
|
||||||
|
clipboard.setPrimaryClip(clip);
|
||||||
|
|
||||||
|
Toasty.info(ctx, message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -733,4 +733,5 @@
|
|||||||
<string name="codeBlockWhiteOnGrey">White on Grey</string>
|
<string name="codeBlockWhiteOnGrey">White on Grey</string>
|
||||||
<string name="codeBlockDarkOnWhite">Dark on White</string>
|
<string name="codeBlockDarkOnWhite">Dark on White</string>
|
||||||
|
|
||||||
|
<string name="copyLoginIdToClipBoard">Login ID \'%s\' copied to clipboard</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user