| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License |
| */ |
| |
| package com.android.dialer.searchfragment.nearbyplaces; |
| |
| import android.content.Context; |
| import android.database.Cursor; |
| import android.net.Uri; |
| import android.provider.ContactsContract; |
| import android.support.v7.widget.RecyclerView; |
| import android.view.View; |
| import android.widget.QuickContactBadge; |
| import android.widget.TextView; |
| import com.android.contacts.common.ContactPhotoManager; |
| import com.android.contacts.common.lettertiles.LetterTileDrawable; |
| import com.android.dialer.callintent.CallInitiationType; |
| import com.android.dialer.callintent.CallIntentBuilder; |
| import com.android.dialer.searchfragment.common.Projections; |
| import com.android.dialer.searchfragment.common.QueryBoldingUtil; |
| import com.android.dialer.searchfragment.common.R; |
| import com.android.dialer.telecom.TelecomUtil; |
| |
| /** ViewHolder for a nearby place row. */ |
| public final class NearbyPlaceViewHolder extends RecyclerView.ViewHolder |
| implements View.OnClickListener { |
| |
| private final Context context; |
| private final TextView placeName; |
| private final TextView placeAddress; |
| private final QuickContactBadge photo; |
| |
| private String number; |
| |
| public NearbyPlaceViewHolder(View view) { |
| super(view); |
| view.setOnClickListener(this); |
| photo = view.findViewById(R.id.photo); |
| placeName = view.findViewById(R.id.primary); |
| placeAddress = view.findViewById(R.id.secondary); |
| context = view.getContext(); |
| } |
| |
| /** |
| * Binds the ViewHolder with a cursor from {@link NearbyPlacesCursorLoader} with the data found at |
| * the cursors set position. |
| */ |
| public void bind(Cursor cursor, String query) { |
| number = cursor.getString(Projections.PHONE_NUMBER); |
| String name = cursor.getString(Projections.PHONE_DISPLAY_NAME); |
| String address = cursor.getString(Projections.PHONE_LABEL); |
| |
| placeName.setText(QueryBoldingUtil.getNameWithQueryBolded(query, name)); |
| placeAddress.setText(QueryBoldingUtil.getNameWithQueryBolded(query, address)); |
| |
| String photoUri = cursor.getString(Projections.PHONE_PHOTO_URI); |
| ContactPhotoManager.getInstance(context) |
| .loadDialerThumbnailOrPhoto( |
| photo, |
| getContactUri(cursor), |
| cursor.getLong(Projections.PHONE_PHOTO_ID), |
| photoUri == null ? null : Uri.parse(photoUri), |
| name, |
| LetterTileDrawable.TYPE_DEFAULT); |
| } |
| |
| private static Uri getContactUri(Cursor cursor) { |
| long contactId = cursor.getLong(Projections.PHONE_ID); |
| String lookupKey = cursor.getString(Projections.PHONE_LOOKUP_KEY); |
| return ContactsContract.Contacts.getLookupUri(contactId, lookupKey); |
| } |
| |
| @Override |
| public void onClick(View v) { |
| TelecomUtil.placeCall( |
| context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build()); |
| } |
| } |