package com.whatscloud.activities.tutorial; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.actionbarsherlock.app.SherlockActivity; import com.bugsense.trace.BugSenseHandler; import com.whatscloud.R; import com.whatscloud.activities.Main; import com.whatscloud.config.app.WhatsCloud; import com.whatscloud.config.debug.Logging; import com.whatscloud.config.reporting.BugSense; import com.whatscloud.logic.auth.User; import com.whatscloud.logic.security.AES; import com.whatscloud.ui.dialogs.DialogManager; import com.whatscloud.utils.networking.HTTP; import com.whatscloud.utils.strings.StringUtils; import org.json.JSONObject; import me.pushy.sdk.Pushy; public class DeleteAccount extends SherlockActivity { Button mDelete; boolean mIsDeleting; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //--------------------------------- // Initialize bug tracking //--------------------------------- BugSenseHandler.initAndStartSession(this, BugSense.API_KEY); //----------------------------- // Load UI elements //----------------------------- initializeUI(); } void initializeUI() { //----------------------------- // Set default layout //----------------------------- setContentView(R.layout.delete_account); //----------------------------- // Cache view //----------------------------- mDelete = (Button)findViewById(R.id.delete); //----------------------------- // Set up on click listeners //----------------------------- initializeListeners(); } void initializeListeners() { //----------------------------- // Delete button onclick //----------------------------- mDelete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //----------------------------- // Do it //----------------------------- new DeleteAccountAsync().execute(); } }); } void deleteAccount() throws Exception { //--------------------------------- // Delete account //--------------------------------- String delete = HTTP.get(WhatsCloud.API_URL + "/users?do=delete&key=" + User.getAPIKey(this)); //--------------------------------- // Empty string - no internet //--------------------------------- if ( StringUtils.stringIsNullOrEmpty(delete) ) { //--------------------------------- // Log error //--------------------------------- throw new Exception(getString(R.string.noInternetDesc)); } //----------------------------- // Create a JSON object //----------------------------- JSONObject signInJSON = new JSONObject(delete); //----------------------------- // Did we get back an error? //----------------------------- if ( delete.contains( "error" ) ) { //---------------------------------- // Extract server error //---------------------------------- String serverMessage = signInJSON.get("error").toString(); //---------------------------------- // Send it to DialogManager //---------------------------------- throw new Exception( serverMessage ); } //---------------------------------- // Success! Save all credentials //---------------------------------- User.saveCredentials(DeleteAccount.this, "", "", "", ""); } public class DeleteAccountAsync extends AsyncTask<String, String, Integer> { ProgressDialog mLoading; public DeleteAccountAsync() { //--------------------------------- // Prevent double click //--------------------------------- mIsDeleting = true; //-------------------------------- // Progress bar //-------------------------------- mLoading = new ProgressDialog( DeleteAccount.this ); //-------------------------------- // Prevent cancel //-------------------------------- mLoading.setCancelable(false); //-------------------------------- // Set default message //-------------------------------- mLoading.setMessage(getString(R.string.loading)); //-------------------------------- // Show the progress dialog //-------------------------------- mLoading.show(); } @Override protected Integer doInBackground(String... parameters) { //--------------------------------- // Try to log in! //--------------------------------- try { deleteAccount(); } catch( Exception exc ) { //--------------------------------- // Set server message //--------------------------------- DialogManager.setErrorMessage(exc.getMessage()); //--------------------------------- // Return hash for unique dialog //--------------------------------- return exc.getMessage().hashCode(); } //--------------------------------- // Success! //--------------------------------- return 0; } @Override protected void onPostExecute(Integer errorCode) { //--------------------------------- // No longer logging in //--------------------------------- mIsDeleting = false; //-------------------------------- // Activity dead? //-------------------------------- if ( isFinishing() ) { return; } //-------------------------------- // Hide loading //-------------------------------- if (mLoading.isShowing()) { mLoading.dismiss(); } //----------------------------------- // Error? //----------------------------------- if ( errorCode == 0 ) { //--------------------------------- // Show main window //--------------------------------- mainWindow(); } else { //--------------------------------- // Show dialog //--------------------------------- showDialog(errorCode); } } } void mainWindow() { //--------------------------------- // Show main activity //--------------------------------- startActivity(new Intent().setClass(DeleteAccount.this, Main.class)); //--------------------------------- // Exit this activity //--------------------------------- finish(); } @Override protected Dialog onCreateDialog( int resource ) { //--------------------------------- // Create a dialog with error icon //--------------------------------- AlertDialog dialog = new AlertDialog.Builder(this) .setIcon(R.drawable.ic_error) .setPositiveButton(getString(R.string.ok), null) .create(); //----------------------------- // Build dialog message //----------------------------- DialogManager.BuildDialog(dialog, resource, this); //----------------------------- // Return dialog object //---------------------------- return dialog; } }