package com.barcicki.trio.tutorial; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.barcicki.trio.R; import com.barcicki.trio.core.Card; import com.barcicki.trio.views.CardView; abstract public class TutorialStepFragment extends Fragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); StepType details = getType(); assignCard(R.id.card1, details.card1); assignCard(R.id.card2, details.card2); assignCard(R.id.card3, details.card3); ((TextView) getView().findViewById(R.id.slideSubtitle)).setText(getString(details.titileResrouce)); } private void assignCard(int resourceId, Card card) { CardView cardView = (CardView) getView().findViewById(resourceId); if (cardView != null) { cardView.setCard(card); } else { Log.e("TrioTutorial", "Wrong CardView provided"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.tutorial_step1_fragment, container, false); } abstract StepType getType(); enum StepType { // 4 features COLOR( R.string.tutorial_colour, new Card(Card.SHAPE_SQUARE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_GREEN, Card.FILL_FULL, Card.NUMBER_ONE) ), QUANTITY( R.string.tutorial_number, new Card(Card.SHAPE_CIRCLE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_CIRCLE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_TWO), new Card(Card.SHAPE_CIRCLE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_THREE) ), FILL( R.string.tutorial_fill, new Card(Card.SHAPE_SQUARE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_BLUE, Card.FILL_EMPTY, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_BLUE, Card.FILL_HALF, Card.NUMBER_ONE) ), SHAPE( R.string.tutorial_shape, new Card(Card.SHAPE_SQUARE, Card.COLOR_BLUE, Card.FILL_EMPTY, Card.NUMBER_ONE), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_BLUE, Card.FILL_EMPTY, Card.NUMBER_ONE), new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_EMPTY, Card.NUMBER_ONE) ), // example Trio sets THREE_COMMON_FEATURES ( R.string.tutorial_3common, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_CIRCLE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_CIRCLE, Card.COLOR_GREEN, Card.FILL_FULL, Card.NUMBER_ONE) ), TWO_COMMON_FEATURES ( R.string.tutorial_2common, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_GREEN, Card.FILL_FULL, Card.NUMBER_ONE) ), ONE_COMMON_FEATURE ( R.string.tutorial_1common, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_EMPTY, Card.NUMBER_ONE), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_GREEN, Card.FILL_HALF, Card.NUMBER_ONE) ), NO_COMMON_FEATURES( R.string.tutorial_no_common, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_EMPTY, Card.NUMBER_TWO), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_GREEN, Card.FILL_HALF, Card.NUMBER_THREE) ), // example wrong Trio sets WRONG_COLOR( R.string.tutorial_wrong_color, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE) ), WRONG_FILL( R.string.tutorial_wrong_fill, new Card(Card.SHAPE_CIRCLE, Card.COLOR_BLUE, Card.FILL_FULL, Card.NUMBER_ONE), new Card(Card.SHAPE_SQUARE, Card.COLOR_RED, Card.FILL_HALF, Card.NUMBER_ONE), new Card(Card.SHAPE_TRIANGLE, Card.COLOR_GREEN, Card.FILL_FULL, Card.NUMBER_ONE) ) ; public Card card1; public Card card2; public Card card3; public int titileResrouce; StepType(int titleResource, Card card1, Card card2, Card card3) { this.titileResrouce = titleResource; this.card1 = card1; this.card2 = card2; this.card3 = card3; } } static public class FeatureShape extends TutorialStepFragment { @Override StepType getType() { return StepType.SHAPE; } } static public class FeatureColor extends TutorialStepFragment { @Override StepType getType() { return StepType.COLOR; } } static public class FeatureQuantity extends TutorialStepFragment { @Override StepType getType() { return StepType.QUANTITY; } } static public class FeatureFill extends TutorialStepFragment { @Override StepType getType() { return StepType.FILL; } } }