package com.example.mysql_tester; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.json.JSONObject; import com.actionbarsherlock.app.ActionBar; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import android.widget.EditText; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; import android.widget.Toast; import com.actionbarsherlock.app.SherlockActivity; import com.example.mysql_tester.library.*; public class RegisterActivity extends SherlockActivity { ActionBar actionBar; EditText edt_account,edt_password,edt_phone,edt_nickName,edt_password_again; TextView txt_error; RadioGroup radGroup_sex; RadioButton radBtn_female,radBtn_male,radBtn_xgen; private ProgressDialog pDialog; int userHasRegistered = 0; int gender = 3; //JSON Node �W�� private static String KEY_SUCCESS = "success"; private static String KEY_NICKNAME = "nick_name"; private static String KEY_EMAIL = "email"; private static String KEY_UID = "uID"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); //�NLayout �]�w��Register���� //�q�������o���� edt_account = (EditText)findViewById(R.id.register_account); edt_password = (EditText)findViewById(R.id.register_password); edt_password_again = (EditText)findViewById(R.id.register_password_again); edt_nickName = (EditText)findViewById(R.id.register_nickname); edt_phone = (EditText)findViewById(R.id.register_phone); txt_error = (TextView)findViewById(R.id.register_error); radGroup_sex = (RadioGroup)findViewById(R.id.register_radiogroup); radBtn_female = (RadioButton)findViewById(R.id.register_female); radBtn_male = (RadioButton)findViewById(R.id.register_male); radBtn_xgen = (RadioButton)findViewById(R.id.register_xgender); //�]�wGroup ���󪺺�ť radGroup_sex.setOnCheckedChangeListener(radio_listener); //actionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); } /*RadioGroup��ť*/ private RadioGroup.OnCheckedChangeListener radio_listener = new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.register_female: gender = 0; break; case R.id.register_male: gender = 1; break; case R.id.register_xgender: gender = 2; break; } } }; class doTheRegisterWork extends AsyncTask<String, String, String> { //�b�}�lŪ�����e�A���Progress Dialog(��ܤ��) @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(RegisterActivity.this); pDialog.setMessage(getResources().getString(R.string.register_registing)); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } @Override protected String doInBackground(String... params) { String nickName = edt_nickName.getText().toString(); String email = edt_account.getText().toString(); //E-mail�Y���b�� String password = edt_password.getText().toString(); String phone = edt_phone.getText().toString(); gender = 0; UserFunctions userFunctions = new UserFunctions(); JSONObject json = userFunctions.registerUser(nickName, email, password, phone, gender); //Log.e("Register Json = ", json.toString()); //�ˬd���U�ɪ�Response try { if (json.getString(KEY_SUCCESS) != null) { String res = json.getString(KEY_SUCCESS); userHasRegistered = Integer.parseInt(res); if (Integer.parseInt(res) == 1) { //�ϥΪ̦��\���U�F //��SQLite�x�s�Ҧ����ϥΪ̸�� DatabaseHandler db = new DatabaseHandler(getApplicationContext()); JSONObject json_user = json.getJSONObject("user"); //�M���Ҧ���Ʈw�̭����¸��(�i��n�J�ʧ@�H) userFunctions.logoutUser(getApplicationContext()); db.addUser(json_user.getString(KEY_NICKNAME), json_user.getString(KEY_EMAIL), json_user.getString(KEY_UID)); //�}�ҵn�J����� Intent go_Item_list = new Intent(RegisterActivity.this,ItemList.class); //�}�Ҥ��e�M����L�Ҧ�View go_Item_list.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(go_Item_list); finish(); } else { //���U�ɥX�F���D } } } catch (Exception e) { e.printStackTrace(); } return null; } //�����I���@�~��A�����ܮظ��X�� protected void onPostExecute(String file_url) { //��������ܮ� pDialog.dismiss(); runOnUiThread(new Runnable() { @Override public void run() { if (userHasRegistered == 1) { txt_error.setText(""); } else { txt_error.setText(getResources().getString(R.string.register_errorOccured)); } } }); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getSupportMenuInflater().inflate(R.menu.register, menu); return true; } /*ActionBar*/ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; case R.id.register_menuButton: { new AlertDialog.Builder(RegisterActivity.this) .setTitle(getResources().getString(R.string.alertComfirmTitle)) .setIcon(R.drawable.ic_launcher) .setMessage(getResources().getString(R.string.register_alertComfirmMes)) .setPositiveButton(getResources().getString(R.string.alertDialogOkay), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String email = edt_account.getText().toString(); Boolean emailBoolean = isEmailValid(email); String password1 = edt_password.getText().toString(); String password2 = edt_password_again.getText().toString(); if (edt_account.getText().toString().equals("")|| edt_password.getText().toString().equals("")|| edt_password_again.getText().toString().equals("")|| edt_nickName.getText().toString().equals("")|| edt_phone.getText().toString().equals("")|| emailBoolean == false|| gender == 3) { Toast.makeText(RegisterActivity.this, getResources().getString(R.string.register_toastEmailFormatOrEmpty), Toast.LENGTH_SHORT).show(); } else { //�ˬd�K�X�M���ƿ�J���K�X�O�_�ۦP if (password1.equals(password2)) { new doTheRegisterWork().execute(); } else { Toast.makeText(RegisterActivity.this, getResources().getString(R.string.register_passwordNotSame), Toast.LENGTH_SHORT).show(); } } } }) .setNegativeButton(getResources().getString(R.string.alertDialogCancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); break; } case R.id.register_cancelButton:{ new AlertDialog.Builder(RegisterActivity.this) .setTitle(getResources().getString(R.string.alertComfirmTitle)) .setIcon(R.drawable.ic_launcher) .setMessage(getResources().getString(R.string.register_exitRegisterPageMes)) .setPositiveButton(getResources().getString(R.string.alertDialogOkay), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) .setNegativeButton(getResources().getString(R.string.alertDialogCancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .show(); break; } default: return super.onOptionsItemSelected(item); } return true; } //�ˬdE-mail�榡�O�_���T(From Stack Overflow / By.Andy) public static boolean isEmailValid(String email) { boolean isValid = false; String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { isValid = true; } return isValid; } /*To fix the IllegalArgumentException*/ @Override protected void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); try{ pDialog.dismiss(); } catch(Exception e){ e.printStackTrace(); } } }