package se.dat255.grupp12; import android.app.ActionBar; import android.app.FragmentManager; import android.app.ListActivity; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; /** * Created by Oscar on 2013-10-16. */ public class ContactTabsActivity extends FragmentActivity { // When requested, this adapter returns a DemoObjectFragment, // representing an object in the collection. ContactPagerAdapter pagerAdapter; ViewPager mViewPager; private ArrayList<Contact> contacts; private EditText name; private EditText email; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contact_tabs_view); final ActionBar actionBar = getActionBar(); getActionBar().setDisplayShowTitleEnabled(false); getActionBar().setDisplayHomeAsUpEnabled(true); contacts = getNameEmailDetails(); // ViewPager and its adapters use support library // fragments, so use getSupportFragmentManager. pagerAdapter = new ContactPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(pagerAdapter); // Specify that tabs should be displayed in the action bar. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); // Create a tab listener that is called when the user changes tabs. ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override public void onTabSelected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) { mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, android.app.FragmentTransaction fragmentTransaction) { } }; mViewPager.setOnPageChangeListener( new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { // When swiping between pages, select the // corresponding tab. getActionBar().setSelectedNavigationItem(position); } }); actionBar.addTab(actionBar.newTab() .setText("New Contact") .setTabListener(tabListener)); actionBar.addTab(actionBar.newTab() .setText("Choose Contact") .setTabListener(tabListener)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu items for use in the action bar MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.add_people_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.add_people_button: pressedAddContactsToList(); finish(); return true; default: return super.onOptionsItemSelected(item); } } /** * Adds the checked contacts to the list by modification to tell server, and locally */ public void pressedAddContactsToList() { System.out.println("Adding contacts...."); for(Contact c : contacts){ if(c.getChecked()){ User userToAdd = new User(c.getName(), c.getEmail()); System.out.println("Added " + userToAdd.getEmail()); System.out.println("Added " + userToAdd.getName()); TodoList.addCollaboratorToCurrentTodo(userToAdd); Modification.logPersonAddedToList(c, TodoList.getCurrentList().getId()); } } Toast.makeText(getApplicationContext(), "Collaborators added!", Toast.LENGTH_SHORT).show(); finish(); } private ArrayList<Contact> getNameEmailDetails(){ //Get contactdetails with sql lookup ArrayList<Contact> emlRecs = new ArrayList<Contact>(); Context context = this; ContentResolver cr = context.getContentResolver(); String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_ID, ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Photo.CONTACT_ID }; String order = "CASE WHEN " + ContactsContract.Contacts.DISPLAY_NAME + " NOT LIKE '%@%' THEN 1 ELSE 2 END, " + ContactsContract.Contacts.DISPLAY_NAME + ", " + ContactsContract.CommonDataKinds.Email.DATA + " COLLATE NOCASE"; String filter = ContactsContract.CommonDataKinds.Email.DATA + " NOT LIKE ''"; Cursor cur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, PROJECTION, filter, null, order); if (cur.moveToFirst()) { do { // Names and string as a contact // 1 is for name, 3 is for mail Contact contact = new Contact(cur.getString(1), cur.getString(3)); emlRecs.add(contact); } while (cur.moveToNext()); } cur.close(); return emlRecs; } public ArrayList<Contact> getContacts() { return contacts; } /** * Identifies checkbox with tag and sets the checked state of the contact * @param view */ public void checkboxClicked(View view){ Integer position = (Integer) view.getTag(); CheckBox box = (CheckBox) view; contacts.get(position).setChecked(box.isChecked()); } public void addNewContact(String name, String email){ Contact c = new Contact(name, email); Modification.logPersonAddedToList(c, TodoList.getCurrentList().getId()); TodoList.addCollaboratorToCurrentTodo(new User(c.getName(), c.getEmail())); Toast.makeText(getApplicationContext(), "Collaborator added!", Toast.LENGTH_SHORT).show(); // } }