From c0bac6ef4749ca456982da3c39fcf873f657b0ad Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 20 Sep 2012 17:30:45 +0200 Subject: [PATCH] Only display contacts' SIP addresses when new conversation --- src/org/linphone/ChatListFragment.java | 2 +- src/org/linphone/ContactFragment.java | 18 +++++++++++++++--- src/org/linphone/ContactsFragment.java | 6 ++++-- src/org/linphone/LinphoneActivity.java | 14 +++++++++++--- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java index b63aec6a1..e7c70702c 100644 --- a/src/org/linphone/ChatListFragment.java +++ b/src/org/linphone/ChatListFragment.java @@ -127,7 +127,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte else if (id == R.id.newDiscussion) { String sipUri = fastNewChat.getText().toString(); if (sipUri.equals("")) { - LinphoneActivity.instance().displayContacts(); + LinphoneActivity.instance().displayContacts(true); } else { if (!LinphoneUtils.isSipAddress(sipUri)) { sipUri = sipUri + "@" + LinphoneManager.getLc().getDefaultProxyConfig().getDomain(); diff --git a/src/org/linphone/ContactFragment.java b/src/org/linphone/ContactFragment.java index 354f653b8..1f4d1fc91 100644 --- a/src/org/linphone/ContactFragment.java +++ b/src/org/linphone/ContactFragment.java @@ -41,6 +41,7 @@ public class ContactFragment extends Fragment implements OnClickListener { private TextView editContact, newContact; private LayoutInflater inflater; private View view; + private boolean displayChatAddressOnly = false; private OnClickListener dialListener = new OnClickListener() { @Override @@ -63,6 +64,10 @@ public class ContactFragment extends Fragment implements OnClickListener { this.inflater = inflater; view = inflater.inflate(R.layout.contact, container, false); + if (getArguments() != null) { + displayChatAddressOnly = getArguments().getBoolean("ChatAddressOnly"); + } + editContact = (TextView) view.findViewById(R.id.editContact); editContact.setOnClickListener(this); newContact = (TextView) view.findViewById(R.id.newContact); @@ -100,14 +105,21 @@ public class ContactFragment extends Fragment implements OnClickListener { } ((TextView) v.findViewById(R.id.numeroOrAddress)).setText(displayednumberOrAddress); - v.findViewById(R.id.dial).setOnClickListener(dialListener); - v.findViewById(R.id.dial).setTag(numberOrAddress); + if (!displayChatAddressOnly) { + v.findViewById(R.id.dial).setOnClickListener(dialListener); + v.findViewById(R.id.dial).setTag(numberOrAddress); + } else { + v.findViewById(R.id.dial).setVisibility(View.GONE); + } if (LinphoneUtils.isSipAddress(numberOrAddress)) { v.findViewById(R.id.chat).setOnClickListener(chatListener); v.findViewById(R.id.chat).setTag(numberOrAddress); } else { v.findViewById(R.id.chat).setVisibility(View.INVISIBLE); + if (displayChatAddressOnly) { + v.setVisibility(View.GONE); + } } controls.addView(v); @@ -123,7 +135,7 @@ public class ContactFragment extends Fragment implements OnClickListener { contact.refresh(getActivity().getContentResolver()); if (contact.getName() == null || contact.getName().equals("")) { //Contact has been deleted, return - LinphoneActivity.instance().displayContacts(); + LinphoneActivity.instance().displayContacts(false); } displayContact(inflater, view); } diff --git a/src/org/linphone/ContactsFragment.java b/src/org/linphone/ContactsFragment.java index 345bee6f3..19f2b3405 100644 --- a/src/org/linphone/ContactsFragment.java +++ b/src/org/linphone/ContactsFragment.java @@ -51,7 +51,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte private boolean onlyDisplayLinphoneContacts; private int lastKnownPosition; private AlphabetIndexer indexer; - private boolean editOnClick = false, editConsumed = false; + private boolean editOnClick = false, editConsumed = false, onlyDisplayChatAddress = false; private String sipAddressToAdd; @Override @@ -63,6 +63,8 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte if (getArguments() != null) { editOnClick = getArguments().getBoolean("EditOnClick"); sipAddressToAdd = getArguments().getString("SipAddress"); + + onlyDisplayChatAddress = getArguments().getBoolean("ChatAddressOnly"); } contactsList = (ListView) view.findViewById(R.id.contactsList); @@ -139,7 +141,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte startActivity(intent); } else { lastKnownPosition = contactsList.getFirstVisiblePosition(); - LinphoneActivity.instance().displayContact(contact); + LinphoneActivity.instance().displayContact(contact, onlyDisplayChatAddress); } } diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index c6146b9a9..8ad98b671 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -414,7 +414,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene return dateFormat.format(cal.getTime()); } - public void displayContact(Contact contact) { + public void displayContact(Contact contact, boolean chatOnly) { Fragment fragment2 = getSupportFragmentManager().findFragmentById(R.id.fragmentContainer2); if (fragment2 != null && fragment2.isVisible() && currentFragment == FragmentsAvailable.CONTACT) { ContactFragment contactFragment = (ContactFragment) fragment2; @@ -422,12 +422,20 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene } else { Bundle extras = new Bundle(); extras.putSerializable("Contact", contact); + extras.putBoolean("ChatAddressOnly", chatOnly); changeCurrentFragment(FragmentsAvailable.CONTACT, extras); } } - public void displayContacts() { - changeCurrentFragment(FragmentsAvailable.CONTACTS, null); + public void displayContacts(boolean chatOnly) { + if (chatOnly) { + preferLinphoneContacts = true; + } + + Bundle extras = new Bundle(); + extras.putBoolean("ChatAddressOnly", chatOnly); + changeCurrentFragment(FragmentsAvailable.CONTACTS, extras); + preferLinphoneContacts = false; } public void displayContactsForEdition(String sipAddress) {