Only display contacts' SIP addresses when new conversation

This commit is contained in:
Sylvain Berfini 2012-09-20 17:30:45 +02:00
parent 901e77aadc
commit c0bac6ef47
4 changed files with 31 additions and 9 deletions

View file

@ -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();

View file

@ -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);
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);
}

View file

@ -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);
}
}

View file

@ -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) {