package ryan.org.wordpress.android; import ryan.org.xmlrpc.android.XMLRPCClient; import ryan.org.xmlrpc.android.XMLRPCException; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Configuration; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import java.util.HashMap; import ryan.org.wordpress.android.R; public class Signup extends Activity { public Activity activity = this; public HashMap resultData; public TextView blogAddressError; public TextView usernameError; public TextView passwordError; public TextView emailError; public Button signUp; String curBlogAddress; String curUsername; String curPassword; String xmlrpcError = "Error"; ProgressBar pb; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.signup); setTitle("WordPress - New Account"); blogAddressError = (TextView) findViewById(R.id.blogAddressError); usernameError = (TextView) findViewById(R.id.usernameError); passwordError = (TextView) findViewById(R.id.passwordError); emailError = (TextView) findViewById(R.id.emailError); pb = (ProgressBar) findViewById(R.id.loadingSpinner); signUp = (Button) findViewById(R.id.signupBtn); signUp.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { signUpUser(); } }); } protected void signUpUser() { EditText etBlogAddress = (EditText) findViewById(R.id.blogAddress); EditText etUsername = (EditText) findViewById(R.id.username); EditText etPassword = (EditText) findViewById(R.id.password); EditText etEmail = (EditText) findViewById(R.id.email); String blogAddress = etBlogAddress.getText().toString(); String username = etUsername.getText().toString(); String password = etPassword.getText().toString(); String email = etEmail.getText().toString(); boolean validForm = true; if (blogAddress.equals("")){ blogAddressError.setVisibility(View.VISIBLE); blogAddressError.setText(getResources().getText(R.string.blog_address) + " is required."); validForm = false; } if (username.equals("")){ usernameError.setVisibility(View.VISIBLE); usernameError.setText(getResources().getText(R.string.stats_username) + " is required."); validForm = false; } if (password.equals("")){ passwordError.setVisibility(View.VISIBLE); passwordError.setText(getResources().getText(R.string.stats_password) + " is required."); validForm = false; } if (email.equals("")){ emailError.setVisibility(View.VISIBLE); emailError.setText(getResources().getText(R.string.email) + " is required."); validForm = false; } if (validForm){ blogAddressError.setVisibility(View.INVISIBLE); usernameError.setVisibility(View.INVISIBLE); passwordError.setVisibility(View.INVISIBLE); emailError.setVisibility(View.INVISIBLE); signUp.setEnabled(false); pb.setVisibility(View.VISIBLE); curBlogAddress = blogAddress; curUsername = username; curPassword = password; new registerAccountTask().execute(blogAddress, username, password, email); } } @Override public void onConfigurationChanged(Configuration newConfig) { //ignore orientation change super.onConfigurationChanged(newConfig); } private class registerAccountTask extends AsyncTask<String, Void, Boolean> { protected void onPostExecute(Boolean result) { pb.setVisibility(View.INVISIBLE); signUp.setEnabled(true); if (result){ if (resultData.get("user_name") != null){ usernameError.setVisibility(View.VISIBLE); usernameError.setText(resultData.get("user_name").toString()); } if (resultData.get("user_email") != null){ emailError.setVisibility(View.VISIBLE); emailError.setText(resultData.get("user_email").toString()); } if (resultData.get("pass1") != null){ passwordError.setVisibility(View.VISIBLE); passwordError.setText(resultData.get("pass1").toString()); } if (resultData.get("blogname") != null){ blogAddressError.setVisibility(View.VISIBLE); blogAddressError.setText(resultData.get("blogname").toString()); } boolean success = Boolean.parseBoolean(resultData.get("success").toString()); //check for successful registration if (success){ WordPressDB wpdb = new WordPressDB(Signup.this); Toast.makeText(Signup.this, "Please click the activation link in the email we have sent to you, then return here to start blogging!", Toast.LENGTH_LONG).show(); //wpdb.addAccount(Signup.this, "http://" + curBlogAddress + ".wordpress.com/xmlrpc.php", curBlogAddress + "'s Blog", curUsername, curPassword, "", "", "Above Text", true, false, "500", 5, false, 0, true, "3.0.3", false); Bundle bundle = new Bundle(); bundle.putString("returnStatus", "SAVE"); Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); finish(); } } else{ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Signup.this); dialogBuilder.setTitle(getResources().getText(R.string.connection_error)); dialogBuilder.setMessage(xmlrpcError); dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Just close the window. } }); dialogBuilder.setCancelable(true); dialogBuilder.create().show(); } } @Override protected Boolean doInBackground(String... args) { resultData = new HashMap(); XMLRPCClient client = new XMLRPCClient("https://wordpress.com/xmlrpc.php", "", ""); String blogAddress = args[0]; String username = args[1]; String password = args[2]; String email = args[3]; Object[] vParams = { blogAddress, username, password, email }; try { resultData = (HashMap) client.call("wpcom.registerAccount", vParams); } catch (XMLRPCException e) { xmlrpcError = e.getMessage(); return false; } if (resultData.size() > 0){ return true; } return false; } } }