DialogContactDetails.java

  1package de.gultsch.chat.ui;
  2
  3import de.gultsch.chat.R;
  4import de.gultsch.chat.entities.Contact;
  5import de.gultsch.chat.entities.Presences;
  6import de.gultsch.chat.utils.UIHelper;
  7import android.app.AlertDialog;
  8import android.app.Dialog;
  9import android.app.DialogFragment;
 10import android.content.DialogInterface;
 11import android.content.Intent;
 12import android.net.Uri;
 13import android.os.Bundle;
 14import android.provider.ContactsContract.CommonDataKinds;
 15import android.provider.ContactsContract.Contacts;
 16import android.provider.ContactsContract.Intents;
 17import android.view.LayoutInflater;
 18import android.view.View;
 19import android.view.View.OnClickListener;
 20import android.widget.CheckBox;
 21import android.widget.ImageView;
 22import android.widget.QuickContactBadge;
 23import android.widget.TextView;
 24
 25public class DialogContactDetails extends DialogFragment {
 26	
 27	private Contact contact = null;
 28	boolean displayingInRoster = false;
 29	
 30	public void setContact(Contact contact) {
 31		this.contact = contact;
 32	}
 33	
 34	@Override
 35	public Dialog onCreateDialog(Bundle savedInstanceState) {
 36		final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
 37		LayoutInflater inflater = getActivity().getLayoutInflater();
 38		View view = inflater.inflate(R.layout.dialog_contact_details, null);
 39		TextView contactJid = (TextView) view.findViewById(R.id.details_contactjid);
 40		TextView accountJid = (TextView) view.findViewById(R.id.details_account);
 41		TextView status = (TextView) view.findViewById(R.id.details_contactstatus);
 42		CheckBox send = (CheckBox) view.findViewById(R.id.details_send_presence);
 43		CheckBox receive = (CheckBox) view.findViewById(R.id.details_receive_presence);
 44		//ImageView contactPhoto = (ImageView) view.findViewById(R.id.details_contact_picture);
 45		QuickContactBadge badge = (QuickContactBadge) view.findViewById(R.id.details_contact_badge);
 46		
 47		boolean subscriptionSend = false;
 48		boolean subscriptionReceive = false;
 49		if (contact.getSubscription()!=null) {
 50			if (contact.getSubscription().equals("both")) {
 51				subscriptionReceive = true;
 52				subscriptionSend = true;
 53			} else if (contact.getSubscription().equals("from")) {
 54				subscriptionSend = true;
 55			} else if (contact.getSubscription().equals("to")) {
 56				subscriptionReceive = true;
 57			}
 58		}
 59		
 60		switch (contact.getMostAvailableStatus()) {
 61		case Presences.CHAT:
 62			status.setText("free to chat");
 63			status.setTextColor(0xFF83b600);
 64			break;
 65		case Presences.ONLINE:
 66			status.setText("online");
 67			status.setTextColor(0xFF83b600);
 68			break;
 69		case Presences.AWAY:
 70			status.setText("away");
 71			status.setTextColor(0xFFffa713);
 72			break;
 73		case Presences.XA:
 74			status.setText("extended away");
 75			status.setTextColor(0xFFffa713);
 76			break;
 77		case Presences.DND:
 78			status.setText("do not disturb");
 79			status.setTextColor(0xFFe92727);
 80			break;
 81		case Presences.OFFLINE:
 82			status.setText("offline");
 83			status.setTextColor(0xFFe92727);
 84			break;
 85		default:
 86			status.setText("offline");
 87			status.setTextColor(0xFFe92727);
 88			break;
 89		}
 90		
 91		send.setChecked(subscriptionSend);
 92		receive.setChecked(subscriptionReceive);
 93		contactJid.setText(contact.getJid());
 94		accountJid.setText(contact.getAccount().getJid());
 95
 96		UIHelper.prepareContactBadge(getActivity(), badge, contact);
 97		
 98		if (contact.getSystemAccount()==null) {
 99			final DialogContactDetails details = this;
100			badge.setOnClickListener(new OnClickListener() {
101				
102				@Override
103				public void onClick(View v) {
104					AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
105					builder.setTitle("Add to contacts");
106					builder.setMessage("Do you want to add "+contact.getJid()+" to your contact list?");
107					builder.setNegativeButton("Cancel", null);
108					builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
109						
110						@Override
111						public void onClick(DialogInterface dialog, int which) {
112							Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
113							intent.setType(Contacts.CONTENT_ITEM_TYPE);
114							intent.putExtra(Intents.Insert.IM_HANDLE,contact.getJid());
115							intent.putExtra(Intents.Insert.IM_PROTOCOL,CommonDataKinds.Im.PROTOCOL_JABBER);
116							intent.putExtra("finishActivityOnSaveCompleted", true);
117							getActivity().startActivityForResult(intent,ConversationActivity.INSERT_CONTACT);
118							details.dismiss();
119						}
120					});
121					builder.create().show();
122				}
123			});
124		}
125		
126		builder.setView(view);
127		builder.setTitle(contact.getDisplayName());
128		
129		builder.setNeutralButton("Done", null);
130		builder.setPositiveButton("Remove from roster", null);
131		return builder.create();
132	}
133}