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-11-04 19:59:20 +0300
committerStefan Niedermann <info@niedermann.it>2020-11-04 19:59:20 +0300
commit27a07f62966fbd22aa828acb3c386e9a8cbfcfbd (patch)
tree6610631324f70032be6a4c313e4941570c465c48 /app/src/main/java/it
parenta78b0f8935d90870527b3e75ed27c4f35349972f (diff)
Provide fallback initials for contacts wtihout avatars
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java30
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/util/VCardUtil.java14
2 files changed, 38 insertions, 6 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java
index 272fcdca3..3a3eee3f9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java
@@ -1,7 +1,9 @@
package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
import android.graphics.Bitmap;
+import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
+import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -15,6 +17,10 @@ import java.util.function.Consumer;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.ItemPickerUserBinding;
+import static android.view.View.GONE;
+import static android.view.View.VISIBLE;
+import static it.niedermann.nextcloud.deck.util.VCardUtil.getColorBasedOnDisplayName;
+
public class ContactItemViewHolder extends RecyclerView.ViewHolder {
private final ItemPickerUserBinding binding;
@@ -27,11 +33,25 @@ public class ContactItemViewHolder extends RecyclerView.ViewHolder {
public void bind(@NonNull Uri uri, @Nullable Bitmap image, @NonNull String displayName, @NonNull Consumer<Uri> onSelect) {
itemView.setOnClickListener((v) -> onSelect.accept(uri));
binding.displayName.setText(displayName);
- Glide.with(itemView.getContext())
- .load(image)
- .placeholder(R.drawable.ic_person_grey600_24dp)
- .apply(RequestOptions.circleCropTransform())
- .into(binding.avatar);
+ if (image == null) {
+ binding.initials.setVisibility(VISIBLE);
+ binding.initials.setText(TextUtils.isEmpty(displayName)
+ ? null
+ : String.valueOf(displayName.charAt(0))
+ );
+ Glide.with(itemView.getContext())
+ .load(new ColorDrawable(getColorBasedOnDisplayName(itemView.getContext(), displayName)))
+ .apply(RequestOptions.circleCropTransform())
+ .into(binding.avatar);
+ } else {
+ binding.initials.setVisibility(GONE);
+ binding.initials.setText(null);
+ Glide.with(itemView.getContext())
+ .load(image)
+ .placeholder(R.drawable.ic_person_grey600_24dp)
+ .apply(RequestOptions.circleCropTransform())
+ .into(binding.avatar);
+ }
}
public void bindError() {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/VCardUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/VCardUtil.java
index b0e971082..274af332d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/util/VCardUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/VCardUtil.java
@@ -3,12 +3,17 @@ package it.niedermann.nextcloud.deck.util;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
+import android.graphics.Color;
import android.net.Uri;
import android.provider.ContactsContract;
+import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import java.util.NoSuchElementException;
+import java.util.Objects;
+
+import it.niedermann.nextcloud.deck.R;
public class VCardUtil {
@@ -19,7 +24,7 @@ public class VCardUtil {
public static Uri getVCardContentUri(@NonNull Context context, @NonNull Uri contactUri) throws NoSuchElementException {
final ContentResolver cr = context.getContentResolver();
try (final Cursor cursor = cr.query(contactUri, null, null, null, null)) {
- if (cursor.moveToFirst()) {
+ if (cursor != null && cursor.moveToFirst()) {
final String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
return Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
} else {
@@ -27,4 +32,11 @@ public class VCardUtil {
}
}
}
+
+ @ColorInt
+ public static int getColorBasedOnDisplayName(@NonNull Context context, @NonNull String displayName) {
+ final String[] colors = context.getResources().getStringArray(R.array.board_default_colors);
+ final int hashCode = Objects.hashCode(displayName);
+ return Color.parseColor(colors[(hashCode < 0 ? hashCode * -1 : hashCode) % colors.length]);
+ }
}