forked tests
This commit is contained in:
parent
bd85440c99
commit
03965333c2
@ -7,6 +7,8 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<resources>
|
<resources>
|
||||||
|
<string name="cpp_wizard_layout_optimized">Optimized</string>
|
||||||
|
<string name="cpp_wizard_layout_big_buttons">Big buttons</string>
|
||||||
<string name="cpp_wizard_mode_simple">Simple</string>
|
<string name="cpp_wizard_mode_simple">Simple</string>
|
||||||
<string name="cpp_wizard_mode_simple_description">In simple mode only basic functionality will be available from the main screen.
|
<string name="cpp_wizard_mode_simple_description">In simple mode only basic functionality will be available from the main screen.
|
||||||
Result is rounded up to 5 digits.</string>
|
Result is rounded up to 5 digits.</string>
|
||||||
|
18
android-app/res/layout/cpp_wizard_step_tablet.xml
Normal file
18
android-app/res/layout/cpp_wizard_step_tablet.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||||
|
a:layout_width="match_parent"
|
||||||
|
a:layout_height="match_parent"
|
||||||
|
a:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
a:text="Do you want to use optimized layout for large screens or just big buttons?"
|
||||||
|
a:layout_height="wrap_content"
|
||||||
|
a:layout_width="match_parent" />
|
||||||
|
|
||||||
|
<Spinner
|
||||||
|
a:id="@+id/wizard_layout_spinner"
|
||||||
|
a:layout_height="wrap_content"
|
||||||
|
a:layout_width="match_parent" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -5,6 +5,8 @@ import javax.annotation.Nullable;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.solovyev.android.calculator.wizard.Wizard.DEFAULT_WIZARD_FLOW;
|
||||||
|
import static org.solovyev.android.calculator.wizard.Wizard.FIRST_TIME_WIZARD;
|
||||||
import static org.solovyev.android.calculator.wizard.WizardStep.welcome;
|
import static org.solovyev.android.calculator.wizard.WizardStep.welcome;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,21 +16,36 @@ import static org.solovyev.android.calculator.wizard.WizardStep.welcome;
|
|||||||
*/
|
*/
|
||||||
final class AppWizardFlow implements WizardFlow {
|
final class AppWizardFlow implements WizardFlow {
|
||||||
|
|
||||||
public static final String NAME = "app-wizard";
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private final ListWizardFlow listWizardFlow;
|
private final ListWizardFlow listWizardFlow;
|
||||||
|
|
||||||
AppWizardFlow() {
|
private AppWizardFlow(@Nonnull String name, @Nonnull List<WizardStep> wizardSteps) {
|
||||||
|
this.listWizardFlow = new ListWizardFlow(name, wizardSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
static AppWizardFlow newDefaultWizardFlow() {
|
||||||
final List<WizardStep> wizardSteps = new ArrayList<WizardStep>();
|
final List<WizardStep> wizardSteps = new ArrayList<WizardStep>();
|
||||||
for (WizardStep wizardStep : WizardStep.values()) {
|
for (WizardStep wizardStep : WizardStep.values()) {
|
||||||
if (wizardStep != welcome) {
|
if (wizardStep != welcome && wizardStep.isVisible()) {
|
||||||
wizardSteps.add(wizardStep);
|
wizardSteps.add(wizardStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.listWizardFlow = new ListWizardFlow(NAME, wizardSteps);
|
return new AppWizardFlow(DEFAULT_WIZARD_FLOW, wizardSteps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
static AppWizardFlow newFirstTimeWizardFlow() {
|
||||||
|
final List<WizardStep> wizardSteps = new ArrayList<WizardStep>();
|
||||||
|
for (WizardStep wizardStep : WizardStep.values()) {
|
||||||
|
if (wizardStep.isVisible()) {
|
||||||
|
wizardSteps.add(wizardStep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new AppWizardFlow(FIRST_TIME_WIZARD, wizardSteps);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
package org.solovyev.android.calculator.wizard;
|
||||||
|
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import org.solovyev.android.calculator.CalculatorPreferences;
|
||||||
|
import org.solovyev.android.calculator.R;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import static org.solovyev.android.calculator.CalculatorPreferences.Gui.Layout.main_calculator;
|
||||||
|
import static org.solovyev.android.calculator.CalculatorPreferences.Gui.Layout.main_calculator_mobile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User: serso
|
||||||
|
* Date: 6/19/13
|
||||||
|
* Time: 12:39 AM
|
||||||
|
*/
|
||||||
|
enum CalculatorLayout {
|
||||||
|
|
||||||
|
big_buttons(R.string.cpp_wizard_layout_big_buttons){
|
||||||
|
@Override
|
||||||
|
protected void apply(@Nonnull SharedPreferences preferences) {
|
||||||
|
CalculatorPreferences.Gui.layout.putPreference(preferences, main_calculator_mobile);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
optimized(R.string.cpp_wizard_layout_optimized){
|
||||||
|
@Override
|
||||||
|
protected void apply(@Nonnull SharedPreferences preferences) {
|
||||||
|
CalculatorPreferences.Gui.layout.putPreference(preferences, main_calculator);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private final int nameResId;
|
||||||
|
|
||||||
|
CalculatorLayout(int nameResId) {
|
||||||
|
this.nameResId = nameResId;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getNameResId() {
|
||||||
|
return nameResId;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected abstract void apply(@Nonnull SharedPreferences preferences);
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
static CalculatorLayout getDefaultMode(){
|
||||||
|
return big_buttons;
|
||||||
|
}
|
||||||
|
}
|
@ -16,11 +16,13 @@ import static org.solovyev.android.calculator.CalculatorPreferences.Gui.Layout.m
|
|||||||
* Time: 9:30 PM
|
* Time: 9:30 PM
|
||||||
*/
|
*/
|
||||||
enum CalculatorMode {
|
enum CalculatorMode {
|
||||||
|
|
||||||
simple(R.string.cpp_wizard_mode_simple) {
|
simple(R.string.cpp_wizard_mode_simple) {
|
||||||
@Override
|
@Override
|
||||||
protected void apply(@Nonnull SharedPreferences preferences) {
|
protected void apply(@Nonnull SharedPreferences preferences) {
|
||||||
CalculatorPreferences.Gui.layout.putPreference(preferences, CalculatorPreferences.Gui.Layout.simple);
|
CalculatorPreferences.Gui.layout.putPreference(preferences, CalculatorPreferences.Gui.Layout.simple);
|
||||||
CalculatorPreferences.Calculations.preferredAngleUnits.putPreference(preferences, AngleUnit.deg);
|
CalculatorPreferences.Calculations.preferredAngleUnits.putPreference(preferences, AngleUnit.deg);
|
||||||
|
AndroidCalculatorEngine.Preferences.angleUnit.putPreference(preferences, AngleUnit.deg);
|
||||||
AndroidCalculatorEngine.Preferences.scienceNotation.putPreference(preferences, false);
|
AndroidCalculatorEngine.Preferences.scienceNotation.putPreference(preferences, false);
|
||||||
AndroidCalculatorEngine.Preferences.roundResult.putPreference(preferences, true);
|
AndroidCalculatorEngine.Preferences.roundResult.putPreference(preferences, true);
|
||||||
}
|
}
|
||||||
@ -31,6 +33,7 @@ enum CalculatorMode {
|
|||||||
protected void apply(@Nonnull SharedPreferences preferences) {
|
protected void apply(@Nonnull SharedPreferences preferences) {
|
||||||
CalculatorPreferences.Gui.layout.putPreference(preferences, main_calculator);
|
CalculatorPreferences.Gui.layout.putPreference(preferences, main_calculator);
|
||||||
CalculatorPreferences.Calculations.preferredAngleUnits.putPreference(preferences, AngleUnit.rad);
|
CalculatorPreferences.Calculations.preferredAngleUnits.putPreference(preferences, AngleUnit.rad);
|
||||||
|
AndroidCalculatorEngine.Preferences.angleUnit.putPreference(preferences, AngleUnit.rad);
|
||||||
AndroidCalculatorEngine.Preferences.scienceNotation.putPreference(preferences, true);
|
AndroidCalculatorEngine.Preferences.scienceNotation.putPreference(preferences, true);
|
||||||
AndroidCalculatorEngine.Preferences.roundResult.putPreference(preferences, false);
|
AndroidCalculatorEngine.Preferences.roundResult.putPreference(preferences, false);
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ public final class CalculatorWizardActivity extends SherlockFragmentActivity {
|
|||||||
step = (WizardStep) savedInstanceState.getSerializable(STEP);
|
step = (WizardStep) savedInstanceState.getSerializable(STEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
flow = Wizard.getWizardFlow(wizardName != null ? wizardName : FirstTimeWizardFlow.NAME);
|
flow = Wizard.getWizardFlow(wizardName != null ? wizardName : Wizard.FIRST_TIME_WIZARD);
|
||||||
|
|
||||||
if (step == null) {
|
if (step == null) {
|
||||||
step = flow.getFirstStep();
|
step = flow.getFirstStep();
|
||||||
|
@ -46,7 +46,7 @@ public final class ChooseModeWizardStep extends SherlockFragment {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private Spinner layoutSpinner;
|
private Spinner modeSpinner;
|
||||||
|
|
||||||
private CalculatorMode mode;
|
private CalculatorMode mode;
|
||||||
|
|
||||||
@ -72,17 +72,17 @@ public final class ChooseModeWizardStep extends SherlockFragment {
|
|||||||
public void onViewCreated(View root, Bundle savedInstanceState) {
|
public void onViewCreated(View root, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(root, savedInstanceState);
|
super.onViewCreated(root, savedInstanceState);
|
||||||
|
|
||||||
layoutSpinner = (Spinner) root.findViewById(R.id.wizard_mode_spinner);
|
modeSpinner = (Spinner) root.findViewById(R.id.wizard_mode_spinner);
|
||||||
|
|
||||||
final List<ModeListItem> listItems = new ArrayList<ModeListItem>();
|
final List<ModeListItem> listItems = new ArrayList<ModeListItem>();
|
||||||
for (CalculatorMode mode : CalculatorMode.values()) {
|
for (CalculatorMode mode : CalculatorMode.values()) {
|
||||||
listItems.add(new ModeListItem(mode));
|
listItems.add(new ModeListItem(mode));
|
||||||
}
|
}
|
||||||
layoutSpinner.setAdapter(ListItemAdapter.newInstance(getActivity(), listItems));
|
modeSpinner.setAdapter(ListItemAdapter.newInstance(getActivity(), listItems));
|
||||||
|
|
||||||
final int position = Arrays.binarySearch(CalculatorMode.values(), mode);
|
final int position = Arrays.binarySearch(CalculatorMode.values(), mode);
|
||||||
if (position >= 0) {
|
if (position >= 0) {
|
||||||
layoutSpinner.setSelection(position);
|
modeSpinner.setSelection(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,8 +90,8 @@ public final class ChooseModeWizardStep extends SherlockFragment {
|
|||||||
CalculatorMode getSelectedMode() {
|
CalculatorMode getSelectedMode() {
|
||||||
CalculatorMode mode = getDefaultMode();
|
CalculatorMode mode = getDefaultMode();
|
||||||
|
|
||||||
if (layoutSpinner != null) {
|
if (modeSpinner != null) {
|
||||||
final int position = layoutSpinner.getSelectedItemPosition();
|
final int position = modeSpinner.getSelectedItemPosition();
|
||||||
|
|
||||||
if (position >= 0 && position < CalculatorMode.values().length) {
|
if (position >= 0 && position < CalculatorMode.values().length) {
|
||||||
mode = CalculatorMode.values()[position];
|
mode = CalculatorMode.values()[position];
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
package org.solovyev.android.calculator.wizard;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.solovyev.android.calculator.wizard.WizardStep.choose_mode;
|
|
||||||
import static org.solovyev.android.calculator.wizard.WizardStep.welcome;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User: serso
|
|
||||||
* Date: 6/16/13
|
|
||||||
* Time: 9:25 PM
|
|
||||||
*/
|
|
||||||
final class FirstTimeWizardFlow implements WizardFlow {
|
|
||||||
|
|
||||||
public static final String NAME = "first-wizard";
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
private final ListWizardFlow listWizardFlow;
|
|
||||||
|
|
||||||
FirstTimeWizardFlow() {
|
|
||||||
final List<WizardStep> wizardSteps = new ArrayList<WizardStep>();
|
|
||||||
for (WizardStep wizardStep : WizardStep.values()) {
|
|
||||||
wizardSteps.add(wizardStep);
|
|
||||||
}
|
|
||||||
this.listWizardFlow = new ListWizardFlow(NAME, wizardSteps);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return listWizardFlow.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public WizardStep getNextStep(@Nonnull WizardStep step) {
|
|
||||||
return listWizardFlow.getNextStep(step);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public WizardStep getPrevStep(@Nonnull WizardStep step) {
|
|
||||||
return listWizardFlow.getPrevStep(step);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public WizardStep getFirstStep() {
|
|
||||||
return listWizardFlow.getFirstStep();
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,156 @@
|
|||||||
|
package org.solovyev.android.calculator.wizard;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Spinner;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import com.actionbarsherlock.app.SherlockFragment;
|
||||||
|
import org.solovyev.android.calculator.R;
|
||||||
|
import org.solovyev.android.list.ListItem;
|
||||||
|
import org.solovyev.android.list.ListItemAdapter;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.solovyev.android.calculator.wizard.CalculatorLayout.getDefaultMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User: serso
|
||||||
|
* Date: 6/19/13
|
||||||
|
* Time: 12:33 AM
|
||||||
|
*/
|
||||||
|
final class TabletWizardStep extends SherlockFragment {
|
||||||
|
|
||||||
|
/*
|
||||||
|
**********************************************************************
|
||||||
|
*
|
||||||
|
* CONSTANTS
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
static final String LAYOUT = "layout";
|
||||||
|
|
||||||
|
/*
|
||||||
|
**********************************************************************
|
||||||
|
*
|
||||||
|
* FIELDS
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private Spinner layoutSpinner;
|
||||||
|
|
||||||
|
private CalculatorLayout layout;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
if(savedInstanceState != null) {
|
||||||
|
layout = (CalculatorLayout) savedInstanceState.getSerializable(LAYOUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (layout == null) {
|
||||||
|
layout = (CalculatorLayout) getArguments().getSerializable(LAYOUT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
return inflater.inflate(R.layout.cpp_wizard_step_tablet, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewCreated(View root, Bundle savedInstanceState) {
|
||||||
|
super.onViewCreated(root, savedInstanceState);
|
||||||
|
|
||||||
|
layoutSpinner = (Spinner) root.findViewById(R.id.wizard_layout_spinner);
|
||||||
|
|
||||||
|
final List<LayoutListItem> listItems = new ArrayList<LayoutListItem>();
|
||||||
|
for (CalculatorLayout layout : CalculatorLayout.values()) {
|
||||||
|
listItems.add(new LayoutListItem(layout));
|
||||||
|
}
|
||||||
|
layoutSpinner.setAdapter(ListItemAdapter.newInstance(getActivity(), listItems));
|
||||||
|
|
||||||
|
final int position = Arrays.binarySearch(CalculatorMode.values(), layout);
|
||||||
|
if (position >= 0) {
|
||||||
|
layoutSpinner.setSelection(position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
CalculatorLayout getSelectedLayout() {
|
||||||
|
CalculatorLayout layout = getDefaultMode();
|
||||||
|
|
||||||
|
if (layoutSpinner != null) {
|
||||||
|
final int position = layoutSpinner.getSelectedItemPosition();
|
||||||
|
|
||||||
|
if (position >= 0 && position < CalculatorLayout.values().length) {
|
||||||
|
layout = CalculatorLayout.values()[position];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return layout;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
|
||||||
|
outState.putSerializable(LAYOUT, layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
**********************************************************************
|
||||||
|
*
|
||||||
|
* STATIC/INNER
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static final class LayoutListItem implements ListItem {
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
private final CalculatorLayout layout;
|
||||||
|
|
||||||
|
private LayoutListItem(@Nonnull CalculatorLayout layout) {
|
||||||
|
this.layout = layout;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public OnClickAction getOnClickAction() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public OnClickAction getOnLongClickAction() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public View updateView(@Nonnull Context context, @Nonnull View view) {
|
||||||
|
return build(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public View build(@Nonnull Context context) {
|
||||||
|
final TextView textView = new TextView(context);
|
||||||
|
textView.setText(layout.getNameResId());
|
||||||
|
return textView;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -4,7 +4,8 @@ import org.solovyev.android.prefs.Preference;
|
|||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import static org.solovyev.android.calculator.wizard.CalculatorMode.getDefaultMode;
|
import static org.solovyev.android.calculator.wizard.AppWizardFlow.newDefaultWizardFlow;
|
||||||
|
import static org.solovyev.android.calculator.wizard.AppWizardFlow.newFirstTimeWizardFlow;
|
||||||
import static org.solovyev.android.prefs.StringPreference.ofEnum;
|
import static org.solovyev.android.prefs.StringPreference.ofEnum;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,16 +15,19 @@ import static org.solovyev.android.prefs.StringPreference.ofEnum;
|
|||||||
*/
|
*/
|
||||||
public final class Wizard {
|
public final class Wizard {
|
||||||
|
|
||||||
|
public static final String FIRST_TIME_WIZARD = "first-wizard";
|
||||||
|
public static final String DEFAULT_WIZARD_FLOW = "app-wizard";
|
||||||
|
|
||||||
private Wizard() {
|
private Wizard() {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public static WizardFlow getWizardFlow(@Nonnull String name) {
|
public static WizardFlow getWizardFlow(@Nonnull String name) {
|
||||||
if(FirstTimeWizardFlow.NAME.equals(name)) {
|
if(FIRST_TIME_WIZARD.equals(name)) {
|
||||||
return newFirstTimeWizardFlow();
|
return newFirstTimeWizardFlow();
|
||||||
} else if(AppWizardFlow.NAME.equals(name)) {
|
} else if(DEFAULT_WIZARD_FLOW.equals(name)) {
|
||||||
return new AppWizardFlow();
|
return newDefaultWizardFlow();
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("Wizard flow " + name + " is not supported");
|
throw new IllegalArgumentException("Wizard flow " + name + " is not supported");
|
||||||
}
|
}
|
||||||
@ -38,6 +42,7 @@ public final class Wizard {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static final class Preferences {
|
static final class Preferences {
|
||||||
static final Preference<CalculatorMode> mode = ofEnum("mode", getDefaultMode(), CalculatorMode.class);
|
static final Preference<CalculatorMode> mode = ofEnum("mode", CalculatorMode.getDefaultMode(), CalculatorMode.class);
|
||||||
|
static final Preference<CalculatorLayout> layout = ofEnum("layout", CalculatorLayout.getDefaultMode(), CalculatorLayout.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import javax.annotation.Nonnull;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.solovyev.android.calculator.wizard.ChooseModeWizardStep.MODE;
|
import static org.solovyev.android.calculator.wizard.ChooseModeWizardStep.MODE;
|
||||||
|
import static org.solovyev.android.calculator.wizard.TabletWizardStep.LAYOUT;
|
||||||
import static org.solovyev.android.calculator.wizard.Wizard.Preferences;
|
import static org.solovyev.android.calculator.wizard.Wizard.Preferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,6 +66,36 @@ enum WizardStep {
|
|||||||
bundle.putSerializable(MODE, Preferences.mode.getPreference(preferences));
|
bundle.putSerializable(MODE, Preferences.mode.getPreference(preferences));
|
||||||
return bundle;
|
return bundle;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
tablet(TabletWizardStep.class) {
|
||||||
|
@Override
|
||||||
|
boolean onNext(@Nonnull Fragment f) {
|
||||||
|
final TabletWizardStep fragment = (TabletWizardStep) f;
|
||||||
|
|
||||||
|
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(f.getActivity());
|
||||||
|
|
||||||
|
final CalculatorLayout layout = fragment.getSelectedLayout();
|
||||||
|
layout.apply(preferences);
|
||||||
|
Preferences.layout.putPreference(preferences, layout);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean onPrev(@Nonnull Fragment fragment) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
Bundle getFragmentArgs() {
|
||||||
|
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CalculatorApplication.getInstance());
|
||||||
|
|
||||||
|
final Bundle bundle = new Bundle();
|
||||||
|
bundle.putSerializable(LAYOUT, Preferences.layout.getPreference(preferences));
|
||||||
|
return bundle;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@ -84,8 +115,13 @@ enum WizardStep {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract boolean onNext(@Nonnull Fragment fragment);
|
abstract boolean onNext(@Nonnull Fragment fragment);
|
||||||
|
|
||||||
abstract boolean onPrev(@Nonnull Fragment fragment);
|
abstract boolean onPrev(@Nonnull Fragment fragment);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
abstract Bundle getFragmentArgs();
|
abstract Bundle getFragmentArgs();
|
||||||
|
|
||||||
|
public boolean isVisible() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ public class CalculatorWizardActivityTest {
|
|||||||
controller.create();
|
controller.create();
|
||||||
|
|
||||||
assertNotNull(activity.getFlow());
|
assertNotNull(activity.getFlow());
|
||||||
assertEquals(FirstTimeWizardFlow.NAME, activity.getFlow().getName());
|
assertEquals(Wizard.FIRST_TIME_WIZARD, activity.getFlow().getName());
|
||||||
assertNotNull(activity.getStep());
|
assertNotNull(activity.getStep());
|
||||||
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
||||||
|
|
||||||
@ -54,17 +54,17 @@ public class CalculatorWizardActivityTest {
|
|||||||
|
|
||||||
activity = controller.get();
|
activity = controller.get();
|
||||||
assertNotNull(activity.getFlow());
|
assertNotNull(activity.getFlow());
|
||||||
assertEquals(FirstTimeWizardFlow.NAME, activity.getFlow().getName());
|
assertEquals(Wizard.FIRST_TIME_WIZARD, activity.getFlow().getName());
|
||||||
assertNotNull(activity.getStep());
|
assertNotNull(activity.getStep());
|
||||||
assertEquals(WizardStep.choose_mode, activity.getStep());
|
assertEquals(WizardStep.choose_mode, activity.getStep());
|
||||||
|
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
intent.setClass(activity, CalculatorWizardActivity.class);
|
intent.setClass(activity, CalculatorWizardActivity.class);
|
||||||
intent.putExtra(CalculatorWizardActivity.FLOW, AppWizardFlow.NAME);
|
intent.putExtra(CalculatorWizardActivity.FLOW, Wizard.DEFAULT_WIZARD_FLOW);
|
||||||
controller = Robolectric.buildActivity(CalculatorWizardActivity.class).withIntent(intent);
|
controller = Robolectric.buildActivity(CalculatorWizardActivity.class).withIntent(intent);
|
||||||
activity = controller.get();
|
activity = controller.get();
|
||||||
controller.create(null);
|
controller.create(null);
|
||||||
assertEquals(AppWizardFlow.NAME, activity.getFlow().getName());
|
assertEquals(Wizard.DEFAULT_WIZARD_FLOW, activity.getFlow().getName());
|
||||||
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
||||||
|
|
||||||
final Bundle outState1 = new Bundle();
|
final Bundle outState1 = new Bundle();
|
||||||
@ -73,7 +73,7 @@ public class CalculatorWizardActivityTest {
|
|||||||
controller = Robolectric.buildActivity(CalculatorWizardActivity.class);
|
controller = Robolectric.buildActivity(CalculatorWizardActivity.class);
|
||||||
activity = controller.get();
|
activity = controller.get();
|
||||||
controller.create(outState1);
|
controller.create(outState1);
|
||||||
assertEquals(AppWizardFlow.NAME, activity.getFlow().getName());
|
assertEquals(Wizard.DEFAULT_WIZARD_FLOW, activity.getFlow().getName());
|
||||||
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
assertEquals(activity.getFlow().getFirstStep(), activity.getStep());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ public class CalculatorWizardActivityTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testStartWizard() throws Exception {
|
public void testStartWizard() throws Exception {
|
||||||
final ShadowActivity shadowActivity = Robolectric.shadowOf(controller.get());
|
final ShadowActivity shadowActivity = Robolectric.shadowOf(controller.get());
|
||||||
CalculatorWizardActivity.startWizard(AppWizardFlow.NAME, shadowActivity.getApplicationContext());
|
CalculatorWizardActivity.startWizard(Wizard.DEFAULT_WIZARD_FLOW, shadowActivity.getApplicationContext());
|
||||||
Assert.assertNotNull(shadowActivity.getNextStartedActivity());
|
Assert.assertNotNull(shadowActivity.getNextStartedActivity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user