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.net.Uri;
11import android.os.Bundle;
12import android.view.LayoutInflater;
13import android.view.View;
14import android.widget.CheckBox;
15import android.widget.ImageView;
16import android.widget.TextView;
17
18public class DialogContactDetails extends DialogFragment {
19	
20	private Contact contact = null;
21	boolean displayingInRoster = false;
22	
23	public void setContact(Contact contact) {
24		this.contact = contact;
25	}
26	
27	@Override
28	public Dialog onCreateDialog(Bundle savedInstanceState) {
29		final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
30		LayoutInflater inflater = getActivity().getLayoutInflater();
31		View view = inflater.inflate(R.layout.dialog_contact_details, null);
32		TextView contactJid = (TextView) view.findViewById(R.id.details_contactjid);
33		TextView accountJid = (TextView) view.findViewById(R.id.details_account);
34		TextView status = (TextView) view.findViewById(R.id.details_contactstatus);
35		CheckBox send = (CheckBox) view.findViewById(R.id.details_send_presence);
36		CheckBox receive = (CheckBox) view.findViewById(R.id.details_receive_presence);
37		ImageView contactPhoto = (ImageView) view.findViewById(R.id.details_contact_picture);
38		
39		boolean subscriptionSend = false;
40		boolean subscriptionReceive = false;
41		if (contact.getSubscription().equals("both")) {
42			subscriptionReceive = true;
43			subscriptionSend = true;
44		} else if (contact.getSubscription().equals("from")) {
45			subscriptionSend = true;
46		} else if (contact.getSubscription().equals("to")) {
47			subscriptionReceive = true;
48		}
49		
50		switch (contact.getMostAvailableStatus()) {
51		case Presences.CHAT:
52			status.setText("free to chat");
53			status.setTextColor(0xFF83b600);
54			break;
55		case Presences.ONLINE:
56			status.setText("online");
57			status.setTextColor(0xFF83b600);
58			break;
59		case Presences.AWAY:
60			status.setText("away");
61			status.setTextColor(0xFFffa713);
62			break;
63		case Presences.XA:
64			status.setText("extended away");
65			status.setTextColor(0xFFffa713);
66			break;
67		case Presences.DND:
68			status.setText("do not disturb");
69			status.setTextColor(0xFFe92727);
70			break;
71		case Presences.OFFLINE:
72			status.setText("offline");
73			status.setTextColor(0xFFe92727);
74			break;
75		default:
76			status.setText("offline");
77			status.setTextColor(0xFFe92727);
78			break;
79		}
80		
81		send.setChecked(subscriptionSend);
82		receive.setChecked(subscriptionReceive);
83		contactJid.setText(contact.getJid());
84		accountJid.setText(contact.getAccount().getJid());
85		
86		if (contact.getProfilePhoto()!=null) {
87			contactPhoto.setImageURI(Uri.parse(contact.getProfilePhoto()));
88		} else {
89			contactPhoto.setImageBitmap(UIHelper.getUnknownContactPicture(contact.getDisplayName(), 300));
90		}
91		
92		builder.setView(view);
93		builder.setTitle(contact.getDisplayName());
94		
95		builder.setNeutralButton("Done", null);
96		builder.setPositiveButton("Remove from roster", null);
97		return builder.create();
98	}
99}