finish wizard dialog

This commit is contained in:
Sergey Solovyev
2013-06-25 15:53:11 +04:00
parent e267e314ab
commit c906e572f7
7 changed files with 60 additions and 7 deletions

View File

@@ -52,6 +52,7 @@ public final class CalculatorWizardActivity extends SherlockFragmentActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.cpp_wizard);
prevButton = findViewById(R.id.wizard_prev_button);
nextButton = findViewById(R.id.wizard_next_button);
finishButton = findViewById(R.id.wizard_finish_button);
@@ -143,8 +144,12 @@ public final class CalculatorWizardActivity extends SherlockFragmentActivity {
}
void finishFlow() {
finishFlow(false);
}
void finishFlow(boolean forceFinish) {
if (flow != null && step != null) {
Wizard.saveWizardFinished(flow, step);
Wizard.saveWizardFinished(flow, step, forceFinish);
}
finish();
}
@@ -229,6 +234,11 @@ public final class CalculatorWizardActivity extends SherlockFragmentActivity {
}
}
@Override
public void onBackPressed() {
FinishWizardConfirmationDialog.show(this);
}
WizardStep getStep() {
return step;
}

View File

@@ -0,0 +1,37 @@
package org.solovyev.android.calculator.wizard;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import javax.annotation.Nonnull;
import org.solovyev.android.sherlock.AndroidSherlockUtils;
public class FinishWizardConfirmationDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setMessage("Do you really want to finish wizard?");
b.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
((CalculatorWizardActivity) getActivity()).finishFlow(true);
}
});
b.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dismiss();
}
});
return b.create();
}
public static void show(@Nonnull CalculatorWizardActivity activity){
AndroidSherlockUtils.showDialog(new FinishWizardConfirmationDialog(), FinishWizardConfirmationDialog.class.getSimpleName(), activity.getSupportFragmentManager());
}
}

View File

@@ -60,11 +60,11 @@ public final class Wizard {
return preferences.getString(makeFlowStepPreferenceKey(name), null);
}
static void saveWizardFinished(@Nonnull WizardFlow flow, @Nonnull WizardStep step) {
static void saveWizardFinished(@Nonnull WizardFlow flow, @Nonnull WizardStep step, boolean forceFinish) {
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CalculatorApplication.getInstance());
final SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(makeFlowFinishedPreferenceKey(flow), flow.getNextStep(step) == null);
editor.putBoolean(makeFlowFinishedPreferenceKey(flow), forceFinish || flow.getNextStep(step) == null);
editor.commit();
}