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()!=null) {
42 if (contact.getSubscription().equals("both")) {
43 subscriptionReceive = true;
44 subscriptionSend = true;
45 } else if (contact.getSubscription().equals("from")) {
46 subscriptionSend = true;
47 } else if (contact.getSubscription().equals("to")) {
48 subscriptionReceive = true;
49 }
50 }
51
52 switch (contact.getMostAvailableStatus()) {
53 case Presences.CHAT:
54 status.setText("free to chat");
55 status.setTextColor(0xFF83b600);
56 break;
57 case Presences.ONLINE:
58 status.setText("online");
59 status.setTextColor(0xFF83b600);
60 break;
61 case Presences.AWAY:
62 status.setText("away");
63 status.setTextColor(0xFFffa713);
64 break;
65 case Presences.XA:
66 status.setText("extended away");
67 status.setTextColor(0xFFffa713);
68 break;
69 case Presences.DND:
70 status.setText("do not disturb");
71 status.setTextColor(0xFFe92727);
72 break;
73 case Presences.OFFLINE:
74 status.setText("offline");
75 status.setTextColor(0xFFe92727);
76 break;
77 default:
78 status.setText("offline");
79 status.setTextColor(0xFFe92727);
80 break;
81 }
82
83 send.setChecked(subscriptionSend);
84 receive.setChecked(subscriptionReceive);
85 contactJid.setText(contact.getJid());
86 accountJid.setText(contact.getAccount().getJid());
87
88 if (contact.getProfilePhoto()!=null) {
89 contactPhoto.setImageURI(Uri.parse(contact.getProfilePhoto()));
90 } else {
91 contactPhoto.setImageBitmap(UIHelper.getUnknownContactPicture(contact.getDisplayName(), 300));
92 }
93
94 builder.setView(view);
95 builder.setTitle(contact.getDisplayName());
96
97 builder.setNeutralButton("Done", null);
98 builder.setPositiveButton("Remove from roster", null);
99 return builder.create();
100 }
101}