diff options
author | Chris Warrington <cmw@google.com> | 2016-10-18 12:29:21 +0100 |
---|---|---|
committer | Chris Warrington <cmw@google.com> | 2016-10-18 12:34:18 +0100 |
commit | e3780081075c01aa1dff6d1f373cb43192b33e68 (patch) | |
tree | fb734615933a39f3d009210dc0d1457160479b35 /WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java | |
parent | 7e05eb7e57827eddc885570bc00aed8a50320dbf (diff) | |
parent | 025b8b226c8d8edba2b309ca878572f40512eca7 (diff) | |
download | gradle-perf-android-medium-e3780081075c01aa1dff6d1f373cb43192b33e68.tar.gz |
Merge remote-tracking branch 'origin/upstream-master' into masterHEADstudio-3.4.0studio-3.2.1studio-3.1.2studio-3.0studio-2.3gradle_3.4.0gradle_3.1.2gradle_3.0.0gradle_2.3.0studio-master-devmirror-goog-studio-master-devmastermain
Change-Id: I63f5e16d09297c48432192761b840310935eb903
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java new file mode 100644 index 000000000..bcc3119da --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/DeleteSiteDialogFragment.java @@ -0,0 +1,128 @@ +package org.wordpress.android.ui.prefs; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.Fragment; +import android.content.DialogInterface; +import android.graphics.Typeface; +import android.os.Bundle; +import android.text.Editable; +import android.text.Spannable; +import android.text.SpannableString; +import android.text.TextWatcher; +import android.text.style.StyleSpan; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; + +import org.wordpress.android.R; +import org.wordpress.android.analytics.AnalyticsTracker; +import org.wordpress.android.util.AnalyticsUtils; + +public class DeleteSiteDialogFragment extends DialogFragment implements TextWatcher, DialogInterface.OnShowListener { + public static final String SITE_DOMAIN_KEY = "site-domain"; + + private AlertDialog mDeleteSiteDialog; + private EditText mUrlConfirmation; + private Button mDeleteButton; + private String mSiteDomain = ""; + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + AnalyticsUtils.trackWithCurrentBlogDetails( + AnalyticsTracker.Stat.SITE_SETTINGS_DELETE_SITE_ACCESSED); + retrieveSiteDomain(); + configureAlertViewBuilder(builder); + + mDeleteSiteDialog = builder.create(); + mDeleteSiteDialog.setOnShowListener(this); + + return mDeleteSiteDialog; + } + + @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) { + if (isUrlConfirmationTextValid()) { + mDeleteButton.setEnabled(true); + } else { + mDeleteButton.setEnabled(false); + } + } + + @Override + public void onShow(DialogInterface dialog) { + mDeleteButton = mDeleteSiteDialog.getButton(DialogInterface.BUTTON_POSITIVE); + mDeleteButton.setEnabled(false); + } + + private void configureAlertViewBuilder(AlertDialog.Builder builder) { + builder.setTitle(R.string.confirm_delete_site); + builder.setMessage(confirmationPromptString()); + + configureUrlConfirmation(builder); + configureButtons(builder); + } + + private void configureButtons(AlertDialog.Builder builder) { + builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dismiss(); + } + }); + builder.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Fragment target = getTargetFragment(); + if (target != null) { + target.onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, null); + } + + dismiss(); + } + }); + } + + private Spannable confirmationPromptString() { + String deletePrompt = String.format(getString(R.string.confirm_delete_site_prompt), mSiteDomain); + Spannable promptSpannable = new SpannableString(deletePrompt); + int beginning = deletePrompt.indexOf(mSiteDomain); + int end = beginning + mSiteDomain.length(); + promptSpannable.setSpan(new StyleSpan(Typeface.BOLD), beginning, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + + return promptSpannable; + } + + private void configureUrlConfirmation(AlertDialog.Builder builder) { + View view = getActivity().getLayoutInflater().inflate(R.layout.delete_site_dialog, null); + mUrlConfirmation = (EditText) view.findViewById(R.id.url_confirmation); + mUrlConfirmation.addTextChangedListener(this); + builder.setView(view); + } + + private void retrieveSiteDomain() { + Bundle args = getArguments(); + mSiteDomain = getString(R.string.wordpress_dot_com).toLowerCase(); + if (args != null) { + mSiteDomain = args.getString(SITE_DOMAIN_KEY); + } + } + + private boolean isUrlConfirmationTextValid() { + String confirmationText = mUrlConfirmation.getText().toString().trim().toLowerCase(); + String hintText = mSiteDomain.toLowerCase(); + + return confirmationText.equals(hintText); + } +} |