package fr.neamar.kiss.result; import android.content.Context; import android.content.Intent; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.provider.ContactsContract; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.PopupMenu; import android.widget.TextView; import fr.neamar.kiss.R; import fr.neamar.kiss.adapter.RecordAdapter; import fr.neamar.kiss.pojo.PhonePojo; public class PhoneResult extends Result { private final PhonePojo phonePojo; public PhoneResult(PhonePojo phonePojo) { super(); this.pojo = this.phonePojo = phonePojo; } @Override public View display(Context context, int position, View v) { if (v == null) v = inflateFromId(context, R.layout.item_phone); TextView appName = (TextView) v.findViewById(R.id.item_phone_text); String text = context.getString(R.string.ui_item_phone); appName.setText(enrichText(String.format(text, "{" + phonePojo.phone + "}"), context)); ((ImageView) v.findViewById(R.id.item_phone_icon)).setColorFilter(getThemeFillColor(context), PorterDuff.Mode.SRC_IN); return v; } @Override protected PopupMenu buildPopupMenu(Context context, final RecordAdapter parent, View parentView) { return inflatePopupMenu(R.menu.menu_item_phone, context, parentView); } @Override protected Boolean popupMenuClickHandler(Context context, RecordAdapter parent, MenuItem item) { switch (item.getItemId()) { case R.id.item_phone_createcontact: // Create a new contact with this phone number Intent createIntent = new Intent(Intent.ACTION_INSERT); createIntent.setType(ContactsContract.Contacts.CONTENT_TYPE); createIntent.putExtra(ContactsContract.Intents.Insert.PHONE, phonePojo.phone); createIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(createIntent); return true; case R.id.item_phone_sendmessage: String url = "sms:" + phonePojo.phone; Intent messageIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); messageIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(messageIntent); return true; } return super.popupMenuClickHandler(context, parent, item); } @Override public void doLaunch(Context context, View v) { Intent phone = new Intent(Intent.ACTION_CALL); phone.setData(Uri.parse("tel:" + Uri.encode(phonePojo.phone))); if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { phone.setSourceBounds(v.getClipBounds()); } phone.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(phone); } @Override public Drawable getDrawable(Context context) { //noinspection deprecation: getDrawable(int, Theme) requires SDK 21+ return context.getResources().getDrawable(android.R.drawable.ic_menu_call); } }