@Override
  public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info =
        (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    Contact contact = ((ContactAdapter) getListAdapter()).getItem(info.position);
    switch (item.getItemId()) {
      case R.id.profile:
        Intent profileIntent = new Intent(getBaseContext(), ContactViewActivity.class);
        profileIntent.putExtra("ContactID", contact.getId());
        startActivity(profileIntent);
        return true;
      case R.id.edit:
        Intent editIntent = new Intent(getBaseContext(), ContactEditActivity.class);
        editIntent.putExtra("ContactID", contact.getId());
        startActivity(editIntent);
        return true;
      case R.id.delete:
        // TODO Maybe a confirmation???
        ContactRepositoryInterface datasource =
            ContactRepositoryFactory.getInstance().getContactRepository(this, this);
        this.contact_adapter.remove(contact);
        datasource.open();
        datasource.delete(contact);
        datasource.close();

        refreshList();
        return true;
      default:
        return super.onContextItemSelected(item);
    }
  }
  @SuppressWarnings("unused")
  private void createNewContacts() {
    ContactRepositoryInterface datasource =
        ContactRepositoryFactory.getInstance().getContactRepository(this, this);
    datasource.open();

    Contact ray =
        new Contact("Ray Tiley")
            .setTitle("Tightrope Media Systems")
            .addEmail("*****@*****.**")
            .setDefaultEmail("*****@*****.**")
            .addPhoneNumber("207-518-8612")
            .addPhoneNumber("866-866-4118")
            .setDefaultTextPhone("207-518-8612")
            .setDefaultContactPhone("866-866-4118");

    Contact tyler =
        new Contact("Tyler Smith")
            .setTitle("General Dynamics")
            .addEmail("*****@*****.**")
            .setDefaultEmail("*****@*****.**")
            .addPhoneNumber("555-555-1000")
            .setDefaultContactPhone("555-555-1000")
            .setDefaultTextPhone("555-555-1000");

    Contact steveA =
        new Contact("Steve Atterbury")
            .setTitle("Lockheed")
            .addEmail("*****@*****.**")
            .setDefaultEmail("*****@*****.**")
            .addPhoneNumber("555-555-2000")
            .setDefaultTextPhone("555-555-2000")
            .setDefaultContactPhone("555-555-2000");

    Contact steveM =
        new Contact("Steve McAdams")
            .setTitle("Lockheed")
            .addEmail("*****@*****.**")
            .addPhoneNumber("555-555-3000");

    ray = datasource.add(ray);
    steveA = datasource.add(steveA);
    tyler = datasource.add(tyler);
    steveM = datasource.add(steveM);

    ray.downloadGravatar(this);
    steveA.downloadGravatar(this);
    tyler.downloadGravatar(this);
    steveM.downloadGravatar(this);

    datasource.close();

    refreshList();
  }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      LayoutInflater inflater = getLayoutInflater();
      View item = inflater.inflate(R.layout.contact_list_item, parent, false);

      Contact contact = getItem(position);
      ((TextView) item.findViewById(R.id.item_name)).setText(contact.getName());
      ((TextView) item.findViewById(R.id.item_title)).setText(contact.getTitle());

      // Check if we have gravatar on disk
      String filename = contact.getId() + "-gravatar.jpg";
      try {
        File imgFile = getFileStreamPath(filename);
        if (imgFile.exists()) {
          ImageView iv = (ImageView) item.findViewById(R.id.item_profile_image);
          Bitmap gravatar = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
          iv.setImageBitmap(gravatar);
        }
      } catch (Exception e) {
        Log.e("gravatar", e.getMessage());
      }

      return item;
    }