package com.telerik.app.activities; import android.app.Activity; import android.app.DatePickerDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ToggleButton; import com.telerik.app.R; import com.telerik.everlive.sdk.core.query.definition.UserSecretInfo; import com.telerik.everlive.sdk.core.result.RequestResult; import com.telerik.everlive.sdk.core.result.RequestResultCallbackAction; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import com.telerik.app.model.BaseViewModel; import com.telerik.app.model.MyUser; public class CreateNewUserActivity extends Activity implements View.OnClickListener { private ToggleButton maleButton; private ToggleButton femaleButton; private EditText name; private EditText email; private EditText username; private EditText password; private EditText birthDay; private EditText about; private Button registerButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.create_new_user); getActionBar().hide(); this.maleButton = (ToggleButton) findViewById(R.id.cnu_maleButton); this.femaleButton = (ToggleButton) findViewById(R.id.cnu_femaleButton); this.maleButton.setOnClickListener(this); this.femaleButton.setOnClickListener(this); this.birthDay = (EditText) findViewById(R.id.cnu_birthday); this.birthDay.setOnClickListener(this); this.birthDay.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { displayDatePicker(); } } }); this.name = (EditText) findViewById(R.id.cnu_name); MyTextWatcher textWatcher = new MyTextWatcher(); this.name.addTextChangedListener(textWatcher); this.email = (EditText) findViewById(R.id.cnu_email); this.username = (EditText) findViewById(R.id.cnu_username); this.username.addTextChangedListener(textWatcher); this.password = (EditText) findViewById(R.id.cnu_password); this.password.addTextChangedListener(textWatcher); this.about = (EditText) findViewById(R.id.cnu_about); this.registerButton = (Button) findViewById(R.id.cnu_register); this.registerButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.cnu_femaleButton : { if (this.maleButton.isChecked()) { this.maleButton.setChecked(false); } break; } case R.id.cnu_maleButton : { if (this.femaleButton.isChecked()) { this.femaleButton.setChecked(false); } break; } case R.id.cnu_birthday : { this.onBirthdayClick(); break; } case R.id.cnu_register : { this.onRegisterClick(); break; } } } private void onRegisterClick() { UserSecretInfo userSecretInfo = new UserSecretInfo(); userSecretInfo.setPassword(this.password.getText().toString()); final MyUser user = new MyUser(); user.setDisplayName(this.name.getText().toString()); user.setUsername(this.username.getText().toString()); user.setEmail(this.email.getText().toString()); try { user.setBirthDate(this.getDateFormat().parse(this.birthDay.getText().toString())); } catch (ParseException e) { } Integer gender = 0; if (this.maleButton.isChecked()) { gender = 1; } else if (this.femaleButton.isChecked()) { gender = 2; } user.setGender(gender); user.setAbout(this.about.getText().toString()); BaseViewModel.EverliveAPP.workWith(). users(MyUser.class). create(user, userSecretInfo). executeAsync(new RequestResultCallbackAction() { @Override public void invoke(RequestResult requestResult) { final String message; final boolean hasErrors; if (requestResult.getSuccess()) { message = "User " + user.getDisplayName() + " created successfully."; hasErrors = false; } else { message = requestResult.getError().getMessage(); hasErrors = true; } CreateNewUserActivity.this.runOnUiThread(new Runnable() { @Override public void run() { LoginActivity.showAlertMessage(CreateNewUserActivity.this, message, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (!hasErrors) { Intent i = new Intent(CreateNewUserActivity.this, LoginActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } } }); } }); } }); } private void onBirthdayClick() { displayDatePicker(); } private void displayDatePicker() { final Calendar myCalendar = Calendar.getInstance(); DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { myCalendar.set(Calendar.YEAR, year); myCalendar.set(Calendar.MONTH, monthOfYear); myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel(); } private void updateLabel() { DateFormat dateFormat = getDateFormat(); birthDay.setText(dateFormat.format(myCalendar.getTime())); } }; new DatePickerDialog(CreateNewUserActivity.this, date, myCalendar .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } private DateFormat getDateFormat() { DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext()); if (dateFormat == null) { dateFormat = new SimpleDateFormat("MM/dd/yyyy");; } return dateFormat; } private void updateRegisterButton() { if (this.name.getText().length() > 0 && this.username.getText().length() > 0 && this.password.getText().length() > 0) { this.registerButton.setEnabled(true); } else { this.registerButton.setEnabled(false); } } private class MyTextWatcher implements TextWatcher { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { updateRegisterButton(); } } }