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 20:32:20 +0300
committerStefan Niedermann <info@niedermann.it>2020-11-04 20:32:20 +0300
commitd847d5ccd477f14d57feff4d96ecc1c6ad08358c (patch)
treea376e707a1d5608a9356e3e1317063d264004b82 /app/src/main/java/it
parent431e341ea754a5234678e42b1c86226f94de4dc2 (diff)
Display phone number for contacts
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/AbstractPickerAdapter.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java18
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactItemViewHolder.java3
3 files changed, 18 insertions, 5 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
index 1518b5913..c3810b8c6 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java
@@ -48,7 +48,7 @@ public abstract class AbstractPickerAdapter<T extends RecyclerView.ViewHolder> e
* Should be used to bind heavy operations like when dealing with {@link Bitmap}
*/
@NonNull
- protected final ExecutorService bindExecutor = Executors.newCachedThreadPool();
+ protected final ExecutorService bindExecutor = Executors.newFixedThreadPool(1);
public AbstractPickerAdapter(@NonNull Context context, @NonNull Consumer<Uri> onSelect, @NonNull Runnable openNativePicker, Uri subject, String idColumn, String sortOrder) {
this(context, onSelect, openNativePicker, subject, idColumn, new String[]{idColumn}, sortOrder);
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
index e1cefcd59..80f98d30a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java
@@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.card.attachments.picker;
import android.content.ContentUris;
import android.content.Context;
+import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
@@ -21,10 +22,11 @@ import java.util.function.Consumer;
import it.niedermann.nextcloud.deck.databinding.ItemPickerNativeBinding;
import it.niedermann.nextcloud.deck.databinding.ItemPickerUserBinding;
+import static android.provider.ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY;
+import static android.provider.ContactsContract.CommonDataKinds.Phone.NUMBER;
import static android.provider.ContactsContract.Contacts.CONTENT_LOOKUP_URI;
import static android.provider.ContactsContract.Contacts.CONTENT_URI;
import static android.provider.ContactsContract.Contacts.DISPLAY_NAME;
-import static android.provider.ContactsContract.Contacts.LOOKUP_KEY;
import static android.provider.ContactsContract.Contacts.SORT_KEY_PRIMARY;
public class ContactAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolder> {
@@ -62,10 +64,20 @@ public class ContactAdapter extends AbstractPickerAdapter<RecyclerView.ViewHolde
bindExecutor.execute(() -> {
final ContactItemViewHolder viewHolder = (ContactItemViewHolder) holder;
final long id = getItemId(position);
- final String name = cursor.getString(displayNameColumnIndex);
+ final String displayName = cursor.getString(displayNameColumnIndex);
try (InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, Uri.withAppendedPath(CONTENT_LOOKUP_URI, cursor.getString(columnIndex)))) {
final Bitmap thumbnail = BitmapFactory.decodeStream(inputStream);
- new Handler(Looper.getMainLooper()).post(() -> viewHolder.bind(ContentUris.withAppendedId(CONTENT_LOOKUP_URI, id), thumbnail, name, onSelect));
+ String contactInformation = "";
+ final String lookupKey = cursor.getString(columnIndex);
+ final Cursor phoneNumberCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{NUMBER}, LOOKUP_KEY + " = ?", new String[]{lookupKey}, null);
+ if (phoneNumberCursor != null) {
+ if (phoneNumberCursor.moveToFirst()) {
+ contactInformation = phoneNumberCursor.getString(phoneNumberCursor.getColumnIndex(NUMBER));
+ }
+ phoneNumberCursor.close();
+ }
+ final String finalContactInformation = contactInformation;
+ new Handler(Looper.getMainLooper()).post(() -> viewHolder.bind(ContentUris.withAppendedId(CONTENT_LOOKUP_URI, id), thumbnail, displayName, finalContactInformation, onSelect));
} catch (IOException ignored) {
new Handler(Looper.getMainLooper()).post(viewHolder::bindError);
}
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 3a3eee3f9..b8d52a1d3 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
@@ -30,9 +30,10 @@ public class ContactItemViewHolder extends RecyclerView.ViewHolder {
this.binding = binding;
}
- public void bind(@NonNull Uri uri, @Nullable Bitmap image, @NonNull String displayName, @NonNull Consumer<Uri> onSelect) {
+ public void bind(@NonNull Uri uri, @Nullable Bitmap image, @NonNull String displayName, @Nullable String contactInformation, @NonNull Consumer<Uri> onSelect) {
itemView.setOnClickListener((v) -> onSelect.accept(uri));
binding.displayName.setText(displayName);
+ binding.contactInformation.setText(contactInformation);
if (image == null) {
binding.initials.setVisibility(VISIBLE);
binding.initials.setText(TextUtils.isEmpty(displayName)