Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-04-24 12:08:58 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2020-04-24 15:12:11 +0300
commit9c719f71585c10f6d6e4cce207abe4ab8e587ad0 (patch)
tree7bc31220be2cd12b072c2facd6b82bacf1708897 /app/src/main
parentd0e9f234fce30abfb667a936d0f51ffa45055388 (diff)
#396 Filter cards
Remember label and user filter
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/model/internal/FilterInformation.java43
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java15
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java47
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java40
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java109
-rw-r--r--app/src/main/res/layout/dialog_filter.xml23
-rw-r--r--app/src/main/res/layout/item_filter_label.xml27
-rw-r--r--app/src/main/res/layout/item_filter_user.xml (renamed from app/src/main/res/layout/item_user.xml)21
-rw-r--r--app/src/main/res/layout/item_label.xml39
9 files changed, 188 insertions, 176 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/internal/FilterInformation.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/internal/FilterInformation.java
index c8619636f..448d0bf3e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/model/internal/FilterInformation.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/internal/FilterInformation.java
@@ -8,14 +8,16 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import it.niedermann.nextcloud.deck.model.Label;
+import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.enums.EDueType;
public class FilterInformation implements Serializable {
private EDueType dueType = EDueType.NO_FILTER;
@NonNull
- private List<Long> userIDs = new ArrayList<>();
+ private List<User> users = new ArrayList<>();
@NonNull
- private List<Long> labelIDs = new ArrayList<>();
+ private List<Label> labels = new ArrayList<>();
public EDueType getDueType() {
return dueType;
@@ -25,49 +27,46 @@ public class FilterInformation implements Serializable {
this.dueType = dueType;
}
- @NotNull
- public List<Long> getUserIDs() {
- return userIDs;
+ @NonNull
+ public List<User> getUsers() {
+ return users;
}
@NotNull
- public List<Long> getLabelIDs() {
- return labelIDs;
+ public List<Label> getLabels() {
+ return labels;
}
- public void addUserId(long id) {
- userIDs.add(id);
+ public void addAllLabels(List<Label> labels) {
+ this.labels.addAll(labels);
}
- public void removeUserId(Long id) {
- userIDs.remove(id);
+ public void addAllUsers(List<User> users) {
+ this.users.addAll(users);
}
- public void addAllLabelIds(List<Long> ids) {
- labelIDs.addAll(ids);
+ public void clearLabels() {
+ labels.clear();
}
- public void clearLabelIds() {
- labelIDs.clear();
- }
-
- public void removeLabelId(Long id) {
- labelIDs.remove(id);
+ public void clearUsers() {
+ users.clear();
}
/**
* @return whether or not any filter is set
*/
public boolean hasActiveFilter() {
- return (dueType != null && dueType != EDueType.NO_FILTER) || userIDs.size() > 0 || labelIDs.size() > 0;
+ return (dueType != null && dueType != EDueType.NO_FILTER) || users.size() > 0 || labels.size() > 0;
}
+ @NotNull
@Override
public String toString() {
return "FilterInformation{" +
"dueType=" + dueType +
- ", userIDs=" + userIDs +
- ", labelIDs=" + labelIDs +
+ ", users=" + users +
+ ", labels=" + labels +
'}';
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
index 038386457..5943dc244 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
@@ -29,6 +29,7 @@ import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.full.FullStack;
import it.niedermann.nextcloud.deck.model.interfaces.AbstractRemoteEntity;
+import it.niedermann.nextcloud.deck.model.interfaces.IRemoteEntity;
import it.niedermann.nextcloud.deck.model.internal.FilterInformation;
import it.niedermann.nextcloud.deck.model.ocs.Activity;
import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
@@ -171,15 +172,15 @@ public class DataBaseAdapter {
args.add(accountId);
args.add(localStackId);
- if (!filter.getLabelIDs().isEmpty()){
+ if (!filter.getLabels().isEmpty()){
query.append("and exists(select 1 from joincardwithlabel where c.localId = cardId and labelId in (");
- fillSqlWithListValues(query, args, filter.getLabelIDs());
+ fillSqlWithListValues(query, args, filter.getLabels());
query.append(")) ");
}
- if (!filter.getUserIDs().isEmpty()){
+ if (!filter.getUsers().isEmpty()){
query.append("and exists(select 1 from JoinCardWithUser where c.localId = cardId and userId in (");
- fillSqlWithListValues(query, args, filter.getLabelIDs());
+ fillSqlWithListValues(query, args, filter.getLabels());
query.append(")) ");
}
if (filter.getDueType() != EDueType.NO_FILTER){
@@ -208,13 +209,13 @@ public class DataBaseAdapter {
}
- private void fillSqlWithListValues(StringBuilder query, List<Object> args, List<Long> labelIDs) {
- for (int i = 0; i < labelIDs.size(); i++) {
+ private void fillSqlWithListValues(StringBuilder query, List<Object> args, List<? extends IRemoteEntity> entities) {
+ for (int i = 0; i < entities.size(); i++) {
if (i > 0) {
query.append(", ");
}
query.append("?");
- args.add(labelIDs.get(i));
+ args.add(entities.get(i).getLocalId());
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
index b3b3eea47..f5817c4ef 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
@@ -5,13 +5,14 @@ import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
+import android.widget.LinearLayout;
import androidx.annotation.NonNull;
+import androidx.annotation.Px;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
-import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogFilterBinding;
import it.niedermann.nextcloud.deck.model.Account;
@@ -29,12 +30,17 @@ public class FilterDialogFragment extends BrandedDialogFragment {
private static final String KEY_ACCOUNT = "account";
private static final String KEY_BOARD_ID = "board_id";
+ private DialogFilterBinding binding;
private MainViewModel viewModel;
private LabelFilterAdapter labelAdapter;
private UserFilterAdapter userAdapter;
private OverdueFilterAdapter overdueAdapter;
private FilterInformation filterInformation;
+ @Px
+ private int avatarSize;
+ private LinearLayout.LayoutParams avatarLayoutParams;
+
private Account account;
private long boardId;
@@ -73,14 +79,12 @@ public class FilterDialogFragment extends BrandedDialogFragment {
final AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
- final DialogFilterBinding binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
+ SyncManager syncManager = new SyncManager(requireActivity());
+
+ binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
overdueAdapter = new OverdueFilterAdapter(requireContext());
- userAdapter = new UserFilterAdapter(requireContext());
-
binding.overdue.setAdapter(overdueAdapter);
- binding.people.setAdapter(userAdapter);
-
binding.overdue.setSelection(overdueAdapter.getPosition(this.filterInformation.getDueType()));
binding.overdue.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
@@ -94,32 +98,16 @@ public class FilterDialogFragment extends BrandedDialogFragment {
}
});
- SyncManager syncManager = new SyncManager(requireActivity());
-
observeOnce(syncManager.findProposalsForLabelsToAssign(account.getId(), boardId), requireActivity(), (labels) -> {
- labelAdapter = new LabelFilterAdapter(requireContext(), labels, this.filterInformation.getLabelIDs());
+ labelAdapter = new LabelFilterAdapter(requireContext(), labels, this.filterInformation.getLabels());
binding.labels.setNestedScrollingEnabled(false);
binding.labels.setAdapter(labelAdapter);
});
observeOnce(syncManager.findProposalsForUsersToAssign(account.getId(), boardId), requireActivity(), (users) -> {
- userAdapter.addAll(users);
- userAdapter.notifyDataSetChanged();
- for (long userId : this.filterInformation.getUserIDs()) {
- binding.people.setSelection(userAdapter.getPosition(userId));
- }
- binding.people.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- DeckLog.info("clicked position: " + position);
- filterInformation.addUserId(userAdapter.getItemId(position));
- }
-
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- // Nothing to do
- }
- });
+ userAdapter = new UserFilterAdapter(requireContext(), account, users, this.filterInformation.getUsers());
+ binding.users.setNestedScrollingEnabled(false);
+ binding.users.setAdapter(userAdapter);
});
return dialogBuilder
@@ -128,9 +116,10 @@ public class FilterDialogFragment extends BrandedDialogFragment {
.setNeutralButton(android.R.string.cancel, null)
.setNegativeButton(R.string.simple_clear, (a, b) -> viewModel.postFilterInformation(null))
.setPositiveButton(R.string.simple_filter, (a, b) -> {
- // Nach dieser Zeile ist labelAdapter.getSelected() leer
- filterInformation.clearLabelIds();
- filterInformation.addAllLabelIds(labelAdapter.getSelected());
+ filterInformation.clearLabels();
+ filterInformation.addAllLabels(labelAdapter.getSelected());
+ filterInformation.clearUsers();
+ filterInformation.addAllUsers(userAdapter.getSelected());
viewModel.postFilterInformation(filterInformation);
})
.create();
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java
index 184603bb6..82a75cec9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/LabelFilterAdapter.java
@@ -1,21 +1,23 @@
package it.niedermann.nextcloud.deck.ui.filter;
import android.content.Context;
+import android.content.res.ColorStateList;
+import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.chip.Chip;
+
import java.util.ArrayList;
import java.util.List;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.util.ViewUtil;
+import it.niedermann.nextcloud.deck.util.ColorUtil;
@SuppressWarnings("WeakerAccess")
public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter.LabelViewHolder> {
@@ -24,13 +26,13 @@ public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter.
@NonNull
private final List<Label> labels = new ArrayList<>();
@NonNull
- private final List<Long> selectedLabelIds = new ArrayList<>();
+ private final List<Label> selectedLabels = new ArrayList<>();
- public LabelFilterAdapter(@NonNull Context context, @NonNull List<Label> labels, @NonNull List<Long> selectedLabelIds) {
+ public LabelFilterAdapter(@NonNull Context context, @NonNull List<Label> labels, @NonNull List<Label> selectedLabels) {
super();
this.context = context;
this.labels.addAll(labels);
- this.selectedLabelIds.addAll(selectedLabelIds);
+ this.selectedLabels.addAll(selectedLabels);
setHasStableIds(true);
notifyDataSetChanged();
}
@@ -43,7 +45,7 @@ public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter.
@NonNull
@Override
public LabelViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
- View view = LayoutInflater.from(context).inflate(R.layout.item_label, viewGroup, false);
+ View view = LayoutInflater.from(context).inflate(R.layout.item_filter_label, viewGroup, false);
return new LabelViewHolder(view);
}
@@ -57,32 +59,34 @@ public class LabelFilterAdapter extends RecyclerView.Adapter<LabelFilterAdapter.
return labels.size();
}
- public List<Long> getSelected() {
- return selectedLabelIds;
+ public List<Label> getSelected() {
+ return selectedLabels;
}
class LabelViewHolder extends RecyclerView.ViewHolder {
// TODO Use ViewBinding
- private TextView textView;
- private ImageView imageView;
+ private Chip chip;
LabelViewHolder(@NonNull View itemView) {
super(itemView);
- textView = itemView.findViewById(R.id.displayname);
- imageView = itemView.findViewById(R.id.label);
+ chip = itemView.findViewById(R.id.label);
}
void bind(final Label label) {
- imageView.setImageDrawable(ViewUtil.getTintedImageView(imageView.getContext(), R.drawable.ic_label_grey600_24dp, "#" + label.getColor()));
- textView.setText(label.getTitle());
+ chip.setText(label.getTitle());
+ final int labelColor = Color.parseColor("#" + label.getColor());
+ chip.setChipBackgroundColor(ColorStateList.valueOf(labelColor));
+ final int color = ColorUtil.getForegroundColorForBackgroundColor(labelColor);
+ chip.setTextColor(color);
+ itemView.setSelected(selectedLabels.contains(label));
itemView.setOnClickListener(view -> {
- if (selectedLabelIds.contains(label.getLocalId())) {
- selectedLabelIds.remove(label.getLocalId());
+ if (selectedLabels.contains(label)) {
+ selectedLabels.remove(label);
itemView.setSelected(false);
} else {
- selectedLabelIds.add(label.getLocalId());
+ selectedLabels.add(label);
itemView.setSelected(true);
}
});
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
index d1baa900f..49cb5ae6a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/UserFilterAdapter.java
@@ -4,68 +4,97 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
+import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.NoSuchElementException;
+import java.util.ArrayList;
+import java.util.List;
+import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.User;
+import it.niedermann.nextcloud.deck.util.ViewUtil;
-public class UserFilterAdapter extends ArrayAdapter<User> {
+import static it.niedermann.nextcloud.deck.util.DimensionUtil.dpToPx;
+@SuppressWarnings("WeakerAccess")
+public class UserFilterAdapter extends RecyclerView.Adapter<UserFilterAdapter.UserViewHolder> {
+ final int avatarSize;
+ @NonNull
+ private final Context context;
+ @NonNull
+ private final Account account;
@NonNull
- private final LayoutInflater inflater;
+ private final List<User> users = new ArrayList<>();
+ @NonNull
+ private final List<User> selectedUsers = new ArrayList<>();
- @SuppressWarnings("WeakerAccess")
- public UserFilterAdapter(@NonNull Context context) {
- super(context, android.R.layout.simple_list_item_multiple_choice, android.R.id.text1);
- inflater = LayoutInflater.from(context);
+ public UserFilterAdapter(@NonNull Context context, @NonNull Account account, @NonNull List<User> users, @NonNull List<User> selectedUsers) {
+ super();
+ this.account = account;
+ this.context = context;
+ this.users.addAll(users);
+ this.selectedUsers.addAll(selectedUsers);
+ setHasStableIds(true);
+ notifyDataSetChanged();
+ avatarSize = dpToPx(context, R.dimen.avatar_size);
}
@Override
- public boolean hasStableIds() {
- return true;
+ public long getItemId(int position) {
+ return users.get(position).getLocalId();
}
+ @NonNull
@Override
- public long getItemId(int position) {
- final User user = getItem(position);
- if(user == null) {
- throw new NoSuchElementException();
- }
- return user.getLocalId();
+ public UserViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+ View view = LayoutInflater.from(context).inflate(R.layout.item_filter_user, viewGroup, false);
+ return new UserViewHolder(view);
}
@Override
- public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
- return getView(position, convertView, parent);
+ public void onBindViewHolder(@NonNull UserViewHolder viewHolder, int position) {
+ viewHolder.bind(users.get(position));
}
- @SuppressWarnings("WeakerAccess")
- public int getPosition(long labelId) {
- for (int i = 0; i < getCount(); i++) {
- if (getItemId(i) == labelId) {
- return i;
- }
- }
- throw new NoSuchElementException();
+ @Override
+ public int getItemCount() {
+ return users.size();
}
- @NotNull
- @Override
- public View getView(int position, View convertView, @NotNull ViewGroup parent) {
- final View view;
- if (convertView == null) {
- view = inflater.inflate(android.R.layout.simple_list_item_multiple_choice, parent, false);
- } else {
- view = convertView;
+ public List<User> getSelected() {
+ return selectedUsers;
+ }
+
+ class UserViewHolder extends RecyclerView.ViewHolder {
+
+ // TODO Use ViewBinding
+ private TextView displayName;
+ private ImageView avatar;
+
+ UserViewHolder(@NonNull View itemView) {
+ super(itemView);
+ displayName = itemView.findViewById(R.id.displayName);
+ avatar = itemView.findViewById(R.id.avatar);
+ }
+
+ void bind(final User user) {
+ displayName.setText(user.getDisplayname());
+ ViewUtil.addAvatar(avatar, account.getUrl(), user.getUid(), avatarSize, R.drawable.ic_person_grey600_24dp);
+ itemView.setSelected(selectedUsers.contains(user));
+
+ itemView.setOnClickListener(view -> {
+ if (selectedUsers.contains(user)) {
+ selectedUsers.remove(user);
+ itemView.setSelected(false);
+ } else {
+ selectedUsers.add(user);
+ itemView.setSelected(true);
+ }
+ });
}
- ((TextView) view.findViewById(android.R.id.text1)).setText(getItem(position).getDisplayname());
- return view;
}
-}
+} \ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_filter.xml b/app/src/main/res/layout/dialog_filter.xml
index ccdd64e69..938eb41dd 100644
--- a/app/src/main/res/layout/dialog_filter.xml
+++ b/app/src/main/res/layout/dialog_filter.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- xmlns:app="http://schemas.android.com/apk/res-auto">
+ android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
@@ -24,27 +24,28 @@
android:choiceMode="multipleChoice"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="4"
- tools:listitem="@layout/item_user" />
+ tools:listitem="@layout/item_filter_label" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/spacer_2x"
android:labelFor="@id/overdue"
- android:text="@string/filter_by_assigned_user"
- android:visibility="gone" />
+ android:text="@string/filter_by_assigned_user" />
- <ListView
- android:id="@+id/people"
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/users"
android:layout_width="match_parent"
- android:layout_height="150dp"
+ android:layout_height="wrap_content"
android:choiceMode="multipleChoice"
- android:visibility="gone"
- tools:layout_height="150dp"
- tools:listitem="@android:layout/simple_list_item_multiple_choice" />
+ app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+ tools:itemCount="4"
+ tools:listitem="@layout/item_filter_user" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/spacer_2x"
android:labelFor="@id/overdue"
android:text="@string/filter_by_duedate" />
diff --git a/app/src/main/res/layout/item_filter_label.xml b/app/src/main/res/layout/item_filter_label.xml
new file mode 100644
index 000000000..085ad6e2b
--- /dev/null
+++ b/app/src/main/res/layout/item_filter_label.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="?attr/selectableItemBackground"
+ android:orientation="horizontal"
+ android:paddingStart="@dimen/spacer_1x"
+ android:paddingLeft="@dimen/spacer_1x"
+ android:paddingEnd="@dimen/spacer_1x"
+ android:paddingRight="@dimen/spacer_1x">
+
+ <com.google.android.material.chip.Chip
+ android:id="@+id/label"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ tools:text="@tools:sample/lorem" />
+
+ <androidx.appcompat.widget.AppCompatImageView
+ android:layout_width="22dp"
+ android:layout_height="22dp"
+ android:layout_gravity="center"
+ android:layout_marginStart="@dimen/spacer_1x"
+ android:layout_marginLeft="@dimen/spacer_1x"
+ android:background="@drawable/selected" />
+
+</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/item_user.xml b/app/src/main/res/layout/item_filter_user.xml
index c6ccf607f..814476933 100644
--- a/app/src/main/res/layout/item_user.xml
+++ b/app/src/main/res/layout/item_filter_user.xml
@@ -4,32 +4,33 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:background="?attr/selectableItemBackground"
android:orientation="horizontal"
- android:padding="@dimen/spacer_2x">
+ android:padding="@dimen/spacer_1x">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
- <androidx.appcompat.widget.AppCompatImageView
- android:layout_width="22dp"
- android:layout_height="22dp"
- android:layout_gravity="end|bottom"
- android:background="@drawable/selected" />
-
<ImageView
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:layout_marginRight="@dimen/spacer_2x"
+ android:layout_marginEnd="11dp"
+ android:layout_marginRight="11dp"
android:contentDescription="@null"
app:srcCompat="@drawable/ic_person_grey600_24dp"
tools:srcCompat="@tools:sample/avatars" />
+
+ <androidx.appcompat.widget.AppCompatImageView
+ android:layout_width="22dp"
+ android:layout_height="22dp"
+ android:layout_gravity="end|bottom"
+ android:background="@drawable/selected" />
</FrameLayout>
<TextView
- android:id="@+id/displayname"
+ android:id="@+id/displayName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
diff --git a/app/src/main/res/layout/item_label.xml b/app/src/main/res/layout/item_label.xml
deleted file mode 100644
index 5817d0c6a..000000000
--- a/app/src/main/res/layout/item_label.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="?attr/selectableItemBackground"
- android:orientation="horizontal"
- android:padding="@dimen/spacer_1x">
-
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
-
- <androidx.appcompat.widget.AppCompatImageView
- android:layout_width="22dp"
- android:layout_height="22dp"
- android:layout_gravity="end|bottom"
- android:background="@drawable/selected" />
-
- <ImageView
- android:id="@+id/label"
- android:layout_width="@dimen/avatar_size"
- android:layout_height="@dimen/avatar_size"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:layout_marginRight="@dimen/spacer_2x"
- android:contentDescription="@null"
- app:srcCompat="@drawable/ic_label_grey600_24dp" />
- </FrameLayout>
-
- <TextView
- android:id="@+id/displayname"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:textSize="16sp"
- tools:text="@tools:sample/lorem" />
-
-</LinearLayout> \ No newline at end of file