/**
   * Upon Save Button click, validates EditText fields If validated, edits user in singletondis and
   * displays profile view mode as Owner State
   *
   * @param view View
   */
  public void onSaveButtonClick(View view) {
    // valid input
    if (urc.validateEditedFields(etCity, etPhone, etEmail)) {
      urc.editUser(username, etCity, etPhone, etEmail);
      Toast.makeText(this, "Changes saved", Toast.LENGTH_LONG).show();
      upc.setViewMode(OWNER_STATE, etCity, etPhone, etEmail, editButton, saveButton);
    }

    // invalid input
    else Toast.makeText(this, "Form contains error", Toast.LENGTH_LONG).show();
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_profile);

    // Get UI references
    TextView tvUsername = (TextView) findViewById(R.id.usernameTextView);
    etCity = (EditText) findViewById(R.id.cityTextView);
    etPhone = (EditText) findViewById(R.id.phoneTextView);
    etEmail = (EditText) findViewById(R.id.emailTextView);
    editButton = (Button) findViewById(R.id.editButton);
    saveButton = (Button) findViewById(R.id.saveProfileButton);

    // Retrieve data from other activities
    Intent intent = getIntent();
    username = intent.getStringExtra(EXTRA_USERNAME);
    friendUsername = intent.getStringExtra("FRIENDUSERNAME");
    profileState = (int) getIntent().getIntExtra(EXTRA_STATE, OWNER_STATE);

    // First check if showing friend's profile
    // If not, show current logged-in user's profile
    if (friendUsername != null) {
      Cache cache = new Cache(this, username);
      User cacheFriend = cache.getUser(friendUsername);

      // Set text fields
      tvUsername.setText(cacheFriend.getUsername());
      etCity.setText(cacheFriend.getCity());
      etPhone.setText(cacheFriend.getPhone());
      etEmail.setText(cacheFriend.getEmail());
    } else if (username != null) {
      User user = urc.getUser(username);

      // Set text fields
      tvUsername.setText(username);
      etCity.setText(user.getCity());
      etPhone.setText(user.getPhone());
      etEmail.setText(user.getEmail());
    }
    upc.setViewMode(profileState, etCity, etPhone, etEmail, editButton, saveButton);
  }
 /**
  * Upon Edit Button click, displays profile view mode as Edit State
  *
  * @param view View
  */
 public void onEditButtonClick(View view) {
   upc.setViewMode(EDIT_STATE, etCity, etPhone, etEmail, editButton, saveButton);
 }