package com.kuxhausen.huemore.editmood;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import com.kuxhausen.huemore.R;
import com.kuxhausen.huemore.state.BulbState;
public class EditStatePager extends FragmentPagerAdapter {
public final static int SAMPLE_PAGE = 0, RECENT_PAGE = 1, WHEEL_PAGE = 2, TEMP_PAGE = 3, RGB_PAGE = 4;
private EditStateDialogFragment.StateSelector[] newColorFragments;
private EditStateDialogFragment frag;
private boolean mHasRecentStates;
private BulbState mInitialState;
public EditStatePager(EditStateDialogFragment fragment, boolean hasRecentStates,
BulbState initialState) {
super(fragment.getChildFragmentManager());
frag = fragment;
mHasRecentStates = hasRecentStates;
mInitialState = initialState;
newColorFragments = new EditStateDialogFragment.StateSelector[getCount()];
}
public EditStateDialogFragment.StateSelector[] getColorListeners() {
return newColorFragments;
}
public int convertToPageNumber(int position) {
// Add +1 to pages offset due to missing Recent Page
return position + ((!mHasRecentStates && position >= EditStatePager.RECENT_PAGE) ? 1 : 0);
}
/**
* reverse of {@link #convertToPageNumber(int) }
*/
public int convertToPagePosition(int pageNumber) {
return pageNumber - ((!mHasRecentStates && pageNumber > EditStatePager.RECENT_PAGE) ? 1 : 0);
}
public EditStateDialogFragment.StateSelector getStateItemFromPageNumber(int pageNo) {
return (EditStateDialogFragment.StateSelector) getItem(convertToPagePosition(pageNo));
}
public EditStateDialogFragment.StateSelector getStateItem(int position) {
return (EditStateDialogFragment.StateSelector) getItem(position);
}
@Override
public Fragment getItem(int position) {
if (newColorFragments[position] != null) {
return (Fragment) newColorFragments[position];
}
int page = convertToPageNumber(position);
switch (page) {
case SAMPLE_PAGE:
newColorFragments[position] = new SampleStatesFragment();
newColorFragments[position].initialize(frag, mInitialState);
return (Fragment) newColorFragments[position];
case WHEEL_PAGE:
newColorFragments[position] = new EditColorWheelFragment();
newColorFragments[position].initialize(frag, mInitialState);
return (Fragment) newColorFragments[position];
case TEMP_PAGE:
newColorFragments[position] = new EditColorTempFragment();
newColorFragments[position].initialize(frag, mInitialState);
return (Fragment) newColorFragments[position];
case RECENT_PAGE:
newColorFragments[position] = new RecentStatesFragment();
newColorFragments[position].initialize(frag, mInitialState);
return (Fragment) newColorFragments[position];
case RGB_PAGE:
newColorFragments[position] = new EditRgbFragment();
newColorFragments[position].initialize(frag, mInitialState);
return (Fragment) newColorFragments[position];
default:
return null;
}
}
@Override
public int getCount() {
return 5 + (mHasRecentStates ? 0 : -1);
}
@Override
public CharSequence getPageTitle(int position) {
int page = convertToPageNumber(position);
switch (page) {
case SAMPLE_PAGE:
return frag.getActivity().getString(R.string.cap_sample_state);
case WHEEL_PAGE:
return frag.getActivity().getString(R.string.cap_hue_sat_mode);
case TEMP_PAGE:
return frag.getActivity().getString(R.string.cap_color_temp_mode);
case RECENT_PAGE:
return frag.getActivity().getString(R.string.cap_recent_state);
case RGB_PAGE:
return frag.getActivity().getString(R.string.cap_rgb_state);
}
return "";
}
}