package com.alimuzaffar.ramadanalarm; import android.app.Fragment; import android.app.FragmentManager; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import com.alimuzaffar.ramadanalarm.fragments.OnOnboardingOptionSelectedListener; import com.alimuzaffar.ramadanalarm.fragments.OnboardingAdjustmentHighLatitudesFragment; import com.alimuzaffar.ramadanalarm.fragments.OnboardingAsrCalculationMethodFragment; import com.alimuzaffar.ramadanalarm.fragments.OnboardingCalculationMethodFragment; import com.alimuzaffar.ramadanalarm.fragments.OnboardingTimeFormatFragment; import com.alimuzaffar.ramadanalarm.util.AppSettings; import com.alimuzaffar.ramadanalarm.util.ScreenUtils; import com.alimuzaffar.ramadanalarm.widget.FragmentStatePagerAdapter; public class OnboardingActivity extends AppCompatActivity implements OnOnboardingOptionSelectedListener { public static final String EXTRA_CARD_INDEX = "card_index"; private ViewPager mPager; private PagerAdapter mPagerAdapter; private int mCardIndex = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ScreenUtils.lockOrientation(this); setContentView(R.layout.activity_onboarding); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); // Instantiate a ViewPager and a PagerAdapter. Intent intent = getIntent(); mCardIndex = intent.getIntExtra(EXTRA_CARD_INDEX, 0); mPager = (ViewPager) findViewById(R.id.pager); mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager(), mCardIndex); mPager.setAdapter(mPagerAdapter); } @Override public void onBackPressed() { if (mPager.getCurrentItem() == 0) { // If the user is currently looking at the first step, allow the system to handle the // Back button. This calls finish() on this activity and pops the back stack. super.onBackPressed(); } else { // Otherwise, select the previous step. mPager.setCurrentItem(mPager.getCurrentItem() - 1); } } @Override public void onOptionSelected() { if (mPager.getCurrentItem() + 1 == mPagerAdapter.getCount()) { AppSettings.getInstance(this).set(AppSettings.Key.HAS_DEFAULT_SET, true); Intent data = new Intent(); if (getParent() == null) { setResult(RESULT_OK, data); } else { getParent().setResult(RESULT_OK, data); } finish(); } else { mPager.setCurrentItem(mPager.getCurrentItem() + 1); } } private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { int mCardIndex = 0; public ScreenSlidePagerAdapter(FragmentManager fm, int cardIndex) { super(fm); mCardIndex = cardIndex; } @Override public Fragment getItem(int position) { switch (position) { case 0: return OnboardingCalculationMethodFragment.newInstance(mCardIndex); case 1: return OnboardingAsrCalculationMethodFragment.newInstance(mCardIndex); case 2: return OnboardingAdjustmentHighLatitudesFragment.newInstance(mCardIndex); case 3: return OnboardingTimeFormatFragment.newInstance(mCardIndex); } return null; } @Override public int getCount() { return 4; } } }