package semtex.archery; import java.util.regex.Pattern; import semtex.archery.data.DatabaseHelper; import semtex.archery.data.entities.User; import semtex.archery.dialogs.ColorPickerDialog; import semtex.archery.dialogs.ColorPickerDialog.OnColorChangedListener; import android.app.Dialog; import android.graphics.Color; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.util.Patterns; import android.view.View; import android.widget.EditText; import android.widget.ImageButton; import android.widget.TextView; import com.j256.ormlite.android.apptools.OrmLiteBaseActivity; public class AddEditUser extends OrmLiteBaseActivity<DatabaseHelper> { public static final String TAG = AddEditUser.class.getName(); final int[] persColor = new int[1]; private User currentUser = null; EditText username; EditText mailText; TextView txtInfoBox; ImageButton btnSaveUser; Pattern mailPattern = Patterns.EMAIL_ADDRESS; private final TextWatcher textWatcher = new TextWatcher() { public void onTextChanged(final CharSequence s, final int start, final int before, final int count) { } // onTextChanged public void beforeTextChanged(final CharSequence s, final int start, final int count, final int after) { } // beforeTextChanged public void afterTextChanged(final Editable s) { doValidationRun(); } // afterTextChanged }; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.user_add_edit); username = (EditText)findViewById(R.id.txtUsername); username.addTextChangedListener(textWatcher); mailText = (EditText)findViewById(R.id.txtMail); mailText.addTextChangedListener(textWatcher); final View view = findViewById(R.id.dummyview_col); final ImageButton button = (ImageButton)findViewById(R.id.btnPicker); button.setOnClickListener(new View.OnClickListener() { public void onClick(final View v) { final OnColorChangedListener listener = new OnColorChangedListener() { public void colorChanged(final int color) { persColor[0] = color; view.setBackgroundColor(color); } // colorChanged }; // onColorChangeListener final Dialog d = new ColorPickerDialog(v.getContext(), listener, Color.BLACK); d.show(); } // onClick }); // setOnClickListener btnSaveUser = (ImageButton)findViewById(R.id.btnSaveUser); btnSaveUser.setOnClickListener(new View.OnClickListener() { public void onClick(final View v) { Log.i(TAG, "Creating user with: " + username.getText() + ", mail: " + mailText.getText() + " and color: " + persColor[0]); if (currentUser != null) { currentUser.setUserName(username.getText().toString()); currentUser.setRgbColor(persColor[0]); currentUser.setMail(mailText.getText().toString()); getHelper().getUserDao().update(currentUser); currentUser = null; } else { // if getHelper().getUserDao().create( new User(username.getText().toString(), mailText.getText().toString(), persColor[0])); } // else setResult(RESULT_OK); finish(); } // onClick }); // setOnClickListener final ImageButton btnCancelSave = (ImageButton)findViewById(R.id.btnCancelUser); btnCancelSave.setOnClickListener(new View.OnClickListener() { public void onClick(final View v) { setResult(RESULT_CANCELED); finish(); } }); // setOnCLickListener prefillBoxes(); doValidationRun(); } // onCreate protected void doValidationRun() { if (username.getText() == null || "".equals(username.getText().toString())) { invalidUsername(); return; } // if // check if there is either no mail address at all OR if the inserted is a valid mail address if (!mailText.getText().toString().equals("") && !mailPattern.matcher(mailText.getText()).matches()) { invalidMail(); return; } // if btnSaveUser.setEnabled(true); } // doValidationRun protected void invalidMail() { mailText.setError(getString(R.string.empty_or_valid)); btnSaveUser.setEnabled(false); } // invalidMail protected void invalidUsername() { username.setError(getString(R.string.required)); btnSaveUser.setEnabled(false); } // invalidUsername private void prefillBoxes() { final Bundle extras = getIntent().getExtras(); if (extras != null) { final long val = extras.getLong("userid", -1); if (val != -1) { currentUser = getHelper().getUserDao().queryForId(val); username = (EditText)findViewById(R.id.txtUsername); username.setText(currentUser.getUserName()); mailText = (EditText)findViewById(R.id.txtMail); mailText.setText(currentUser.getMail()); final View view = findViewById(R.id.dummyview_col); view.setBackgroundColor(currentUser.getRgbColor()); persColor[0] = currentUser.getRgbColor(); } // if } // if } // prefillBoxes }