From b41ed08e8da2b3d2032dbbaee30d2abeb668cf8b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 6 Nov 2012 16:33:51 +0100 Subject: [PATCH] Linphone contact editor can edit existing contact name --- src/org/linphone/EditContactFragment.java | 31 +++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/EditContactFragment.java b/src/org/linphone/EditContactFragment.java index 2e93bd5f4..81e18b1ba 100644 --- a/src/org/linphone/EditContactFragment.java +++ b/src/org/linphone/EditContactFragment.java @@ -18,15 +18,18 @@ import android.widget.TextView; public class EditContactFragment extends Fragment { private View view; - private boolean isNewContact = true; private TextView ok; private EditText displayName; + private boolean isNewContact = true; + private int contactID; + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Contact contact = null; if (getArguments() != null && getArguments().getSerializable("Contact") != null) { contact = (Contact) getArguments().getSerializable("Contact"); isNewContact = false; + contactID = Integer.parseInt(contact.getID()); } view = inflater.inflate(R.layout.edit_contact, container, false); @@ -45,7 +48,10 @@ public class EditContactFragment extends Fragment { public void onClick(View v) { if (isNewContact) { createNewContact(); + } else { + updateExistingContact(); } + getFragmentManager().popBackStackImmediate(); } }); @@ -77,7 +83,7 @@ public class EditContactFragment extends Fragment { private void createNewContact() { ArrayList ops = new ArrayList(); - int contactID = ops.size(); + contactID = ops.size(); ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(RawContacts.ACCOUNT_TYPE, null) @@ -97,4 +103,25 @@ public class EditContactFragment extends Fragment { } } + + private void updateExistingContact() { + ArrayList ops = new ArrayList(); + + if (displayName.getText().length() > 0) { + String selectPhone = ContactsContract.Data.CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'" ; + String[] phoneArgs = new String[] { String.valueOf(contactID) }; + + ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI) + .withSelection(selectPhone, phoneArgs) + .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) + .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName.getText().toString()).build() + ); + } + + try { + getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); + } catch (Exception e) { + + } + } }