102 lines
3.6 KiB
Java
102 lines
3.6 KiB
Java
/*
|
|
* 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.speeddial;
|
|
|
|
import android.content.Context;
|
|
import android.support.v7.widget.RecyclerView;
|
|
import android.text.TextUtils;
|
|
import android.view.View;
|
|
import android.view.View.OnClickListener;
|
|
import android.widget.TextView;
|
|
import com.android.dialer.common.Assert;
|
|
import com.android.dialer.historyitemactions.HistoryItemBottomSheetHeaderInfo;
|
|
import com.android.dialer.location.GeoUtil;
|
|
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
|
|
import com.android.dialer.speeddial.database.SpeedDialEntry.Channel;
|
|
import com.android.dialer.speeddial.loader.SpeedDialUiItem;
|
|
import com.android.dialer.widget.ContactPhotoView;
|
|
|
|
/** ViewHolder for displaying suggested contacts in {@link SpeedDialFragment}. */
|
|
public class SuggestionViewHolder extends RecyclerView.ViewHolder implements OnClickListener {
|
|
|
|
private final SuggestedContactsListener listener;
|
|
|
|
private final ContactPhotoView photoView;
|
|
private final TextView nameOrNumberView;
|
|
private final TextView numberView;
|
|
|
|
private SpeedDialUiItem speedDialUiItem;
|
|
|
|
SuggestionViewHolder(View view, SuggestedContactsListener listener) {
|
|
super(view);
|
|
photoView = view.findViewById(R.id.avatar);
|
|
nameOrNumberView = view.findViewById(R.id.name);
|
|
numberView = view.findViewById(R.id.number);
|
|
itemView.setOnClickListener(this);
|
|
view.findViewById(R.id.overflow).setOnClickListener(this);
|
|
this.listener = listener;
|
|
}
|
|
|
|
public void bind(Context context, SpeedDialUiItem speedDialUiItem) {
|
|
Assert.isNotNull(speedDialUiItem.defaultChannel());
|
|
this.speedDialUiItem = speedDialUiItem;
|
|
String number =
|
|
PhoneNumberHelper.formatNumber(
|
|
context,
|
|
speedDialUiItem.defaultChannel().number(),
|
|
GeoUtil.getCurrentCountryIso(context));
|
|
|
|
String label = speedDialUiItem.defaultChannel().label();
|
|
String secondaryInfo =
|
|
TextUtils.isEmpty(label)
|
|
? number
|
|
: context.getString(R.string.call_subject_type_and_number, label, number);
|
|
|
|
nameOrNumberView.setText(speedDialUiItem.name());
|
|
numberView.setText(secondaryInfo);
|
|
|
|
photoView.setPhoto(speedDialUiItem.getPhotoInfo());
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
if (v.getId() == R.id.overflow) {
|
|
listener.onOverFlowMenuClicked(speedDialUiItem, getHeaderInfo());
|
|
} else {
|
|
listener.onRowClicked(speedDialUiItem.defaultChannel());
|
|
}
|
|
}
|
|
|
|
private HistoryItemBottomSheetHeaderInfo getHeaderInfo() {
|
|
return HistoryItemBottomSheetHeaderInfo.newBuilder()
|
|
.setPhotoInfo(speedDialUiItem.getPhotoInfo())
|
|
.setPrimaryText(nameOrNumberView.getText().toString())
|
|
.setSecondaryText(numberView.getText().toString())
|
|
.build();
|
|
}
|
|
|
|
/** Listener/Callback for {@link SuggestionViewHolder} parents. */
|
|
public interface SuggestedContactsListener {
|
|
|
|
void onOverFlowMenuClicked(
|
|
SpeedDialUiItem speedDialUiItem, HistoryItemBottomSheetHeaderInfo headerInfo);
|
|
|
|
/** Called when a suggested contact is clicked. */
|
|
void onRowClicked(Channel channel);
|
|
}
|
|
}
|