package sg.vinova.vss.group5.non.activity; import java.util.ArrayList; import java.util.List; import sg.vinova.vss.group5.non.R; import android.annotation.TargetApi; import android.app.AlertDialog; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.ContactsContract; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class Tab1 extends Fragment implements ListView.OnItemClickListener{ //private ArrayList<Custom> fetch = new ArrayList<Custom>(); //private ContactList contactList = new ContactList(); private ContactsAdapter adapter; private ListView lv; @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState){ View v = inflater.inflate(R.layout.tab_layout, container, false); return v; } @SuppressWarnings("deprecation") public void setSearchQuery(String query){ Cursor cursor = getActivity().managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, new String[] {query}, null); if(cursor == null){ } } @Override public void onStart(){ super.onStart(); } @Override public void onActivityCreated(Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); ContactList contactList = this.getContacts(); lv =(ListView)getActivity().findViewById(R.id.list); adapter = new ContactsAdapter(getActivity(), contactList.getContacts()); lv.setAdapter(adapter); lv.setOnItemClickListener(this); } public class Custom{ private String contactName; private String contactPhone; public Custom(String st1, String st2){ contactName = st1; contactPhone = st2; } public String getName(){ return contactName; } public String getPhone(){ return contactPhone; } public void setName(String st1){ contactName = st1; } public void setPhone(String st2){ contactPhone = st2; } } public void onItemClick(AdapterView<?> ad, View v, int position, long id) { // TODO Auto-generated method stub Contact contact = (Contact) lv.getItemAtPosition(position); //final String phoneNumber = contact.getPhoneNumber(); //Feature.dial(getActivity(), phoneNumber); AlertDialog dialBox = createDialogBox(contact); dialBox.show(); } private AlertDialog createDialogBox(final Contact contact){ AlertDialog myOptionBox = new AlertDialog.Builder(getActivity()) //.setTitle("Option Box") .setMessage("Which action do you want to do") .setIcon(R.drawable.logo) .setPositiveButton("Call", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { final String phoneNumber = contact.getPhoneNumber(); Feature.dial(getActivity(), phoneNumber); } }) .setNeutralButton("Send Message", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { final String phoneNumber = contact.getPhoneNumber(); Feature.sendSMS(getActivity(), phoneNumber); } }) .setNegativeButton("Info", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Goto_info(contact); } }) .create(); return myOptionBox; } public void Goto_info(Contact contact){ Intent intent = new Intent(this.getActivity(), ContactInfo.class); intent.putExtra("displayName", contact.getDisplayName()); intent.putExtra("phoneNumber",contact.getPhoneNumber()); intent.putExtra("email",contact.getMail()); startActivity(intent); } public class ContactsAdapter extends BaseAdapter{ private FragmentActivity activity; private LayoutInflater inflater; //private ArrayList<Custom> data; private List<Contact> data; public ContactsAdapter (FragmentActivity a, List<Contact> d){ activity = a; data = d; inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Contact getItem(int position) { // TODO Auto-generated method stub return data.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View v = convertView; if(convertView == null){ v = inflater.inflate(R.layout.list_row, null); } TextView contact_name = (TextView)v.findViewById(R.id.contact_name); TextView phone_number = (TextView)v.findViewById(R.id.phone_number); ImageView thumb_image = (ImageView)v.findViewById(R.id.contact_image); //final Custom custom = data.get(position); final Contact contact = data.get(position); /*contact_name.setText(custom.getName()); phone_number.setText(custom.getPhone());*/ contact_name.setText(contact.getDisplayName()); //contact_name.setText(contact.getId()); phone_number.setText(contact.getPhoneNumber()); if(contact.getDisplayImage() != null) thumb_image.setImageURI(Uri.parse(contact.getDisplayImage())); return v; } } public class ContactList{ private List<Contact> _contact = new ArrayList<Contact>(); public List<Contact> getContacts() {return _contact;} public void addContact(Contact contact) { this._contact.add(contact); } } public class Contact { private String _id; private String _displayName; private String _phone_number; private String _mail; private String _thumb; private boolean selected = false; public String getId(){ return _id; } public String getDisplayName(){ return _displayName; } public String getPhoneNumber(){ return _phone_number; } public String getMail(){ return _mail; } public void setMail(String mail){ _mail = mail; } public void setId(String id){ _id = id; } public void setDisplayName(String displayName){ _displayName = displayName; } public void setPhoneNumber(String phoneNumber){ _phone_number = phoneNumber; } public void setDisplayImage(String image){ _thumb = image; } public String getDisplayImage(){ return _thumb; } public boolean isSelected(){ return selected; } public void setSelected(boolean selected){ this.selected = selected; } } public ContactList getContacts(){ ContactList contactList = new ContactList(); Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI}; ContentResolver cr = getActivity().getContentResolver(); String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; Cursor cur = cr.query(uri, projection, null, null, sortOrder); if(cur.getCount()>0){ String name = null; String phone; String thumb = null; while(cur.moveToNext()){ if(name != cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))){ Contact c= new Contact(); name = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); phone = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); thumb = cur.getString(cur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI)); c.setDisplayName(name); c.setPhoneNumber(phone); c.setDisplayImage(thumb); contactList.addContact(c); } } cur.close(); } return contactList; } }