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}