blob: f23ccdc19b031730714650c93954e3d3691884dc [file] [log] [blame]
package com.fairphone.mycontacts;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.fairphone.mycontacts.data.ContactDetails;
import com.fairphone.mycontacts.utils.LetterTileDrawable;
import com.fairphone.mycontacts.widget.PeopleWidget;
public class ContactDetailView extends Activity {
private static final String TAG = ContactDetailView.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
final ContactDetails details = new ContactDetails(
intent.getStringExtra(PeopleWidget.EXTRA_CONTACT_NAME),
intent.getStringExtra(PeopleWidget.EXTRA_CONTACT_PHOTOURI),
intent.getStringExtra(PeopleWidget.EXTRA_CONTACT_LOOKUP),
intent.getStringExtra(PeopleWidget.EXTRA_CONTACT_ID),
intent.getStringExtra(PeopleWidget.EXTRA_CONTACT_PHONENUMBER),
intent.getIntExtra(PeopleWidget.EXTRA_CONTACT_PHONENUMBERTYPE, 0)
);
setContentView(R.layout.contact_detail);
TextView numberTypeView = (TextView) findViewById(R.id.contact_number_type);
TextView numberView = (TextView) findViewById(R.id.contact_name);
View createViewBtn = findViewById(R.id.contact_launcher);
TextView createViewText = (TextView) findViewById(R.id.btn_create_view_contact);
if(TextUtils.isEmpty(details.name)){
numberView.setText(details.phoneNumber);
numberTypeView.setVisibility(View.GONE);
createViewText.setText(R.string.create_contact);
createViewBtn.setOnClickListener(new View.OnClickListener() {
private ContactDetails info;
public View.OnClickListener setup(ContactDetails details){
info = details;
return this;
}
@Override
public void onClick(View v) {
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION, ContactsContract.Contacts.CONTENT_URI);
intent.putExtra(ContactsContract.Intents.Insert.PHONE, details.phoneNumber);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}.setup(details));
} else {
numberView.setText(details.name);
String numberType = details.getNumberTypeAsString(getApplicationContext());
if (!TextUtils.isEmpty(numberType)){
numberTypeView.setText(numberType);
} else {
numberTypeView.setVisibility(View.GONE);
}
createViewText.setText(R.string.view_contact);
createViewBtn.setOnClickListener(new View.OnClickListener() {
private ContactDetails info;
public View.OnClickListener setup(ContactDetails details){
info = details;
return this;
}
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, info.lookup);
intent.setData(uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}.setup(details));
}
((TextView) findViewById(R.id.contact_phone_number)).setText(details.phoneNumber);
ImageView photoView = (ImageView) findViewById(R.id.contact_photo);
if (!TextUtils.isEmpty(details.photoUri)) {
Bitmap bm = PeopleWidget.loadContactPhoto(details.photoUri, getApplicationContext());
photoView.setImageBitmap(bm);
} else {
photoView.setBackgroundColor(LetterTileDrawable.getIntance(getApplicationContext()).pickColor(TextUtils.isEmpty(details.lookup) ? details.phoneNumber : details.lookup));
}
addSmsContactBehaviour(details);
addCallContactBehaviour(details);
}
private void addSmsContactBehaviour(ContactDetails contactDetail)
{
View smsActionButton = findViewById(R.id.sms_action);
smsActionButton.setOnClickListener(new View.OnClickListener() {
private ContactDetails info;
public View.OnClickListener setup(ContactDetails details) {
info = details;
return this;
}
@Override
public void onClick(View v) {
String uriSms = "smsto:" + info.phoneNumber;
String encodedHash = Uri.encode("#");
String encodedUriSms = uriSms.replaceAll("#", encodedHash);
Intent intentSms = new Intent(Intent.ACTION_SENDTO);
intentSms.setData(Uri.parse(encodedUriSms));
intentSms.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentSms);
}
}.setup(contactDetail));
}
private void addCallContactBehaviour(ContactDetails contactDetail)
{
View callActionButton = findViewById(R.id.call_action);
callActionButton.setOnClickListener(new View.OnClickListener() {
private ContactDetails info;
public View.OnClickListener setup(ContactDetails details){
info = details;
return this;
}
@Override
public void onClick(View v) {
String uriCall ="tel:" + info.phoneNumber;
String encodedHash = Uri.encode("#");
String encodedUriCall = uriCall.replaceAll("#", encodedHash);
Intent intentCall = new Intent(Intent.ACTION_CALL);
intentCall.setData(Uri.parse(encodedUriCall));
intentCall.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intentCall);
}
}.setup(contactDetail));
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}