package com.numix.calculator; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.numix.calculator.BaseModule.Mode; import com.numix.calculator.Calculator.SmallPanel; import com.numix.calculator.view.CalculatorViewPager; public class SmallPageAdapter extends CalculatorPageAdapter { private final ViewGroup mHexPage; private final ViewGroup mFunctionPage; private final ViewGroup mAdvancedPage; private final CalculatorViewPager mParent; private final Logic mLogic; private int mCount = 0; public SmallPageAdapter(CalculatorViewPager parent, Logic logic) { final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); mHexPage = (ViewGroup) inflater.inflate(R.layout.hex_pad, parent, false); mFunctionPage = (ViewGroup) inflater.inflate(R.layout.function_pad, parent, false); mAdvancedPage = (ViewGroup) inflater.inflate(R.layout.advanced_pad, parent, false); mParent = parent; mLogic = logic; setOrder(); applyBannedResources(mLogic.mBaseModule.getMode()); switch(mLogic.mBaseModule.getMode()) { case BINARY: mHexPage.findViewById(R.id.bin).setSelected(true); break; case DECIMAL: mHexPage.findViewById(R.id.dec).setSelected(true); break; case HEXADECIMAL: mHexPage.findViewById(R.id.hex).setSelected(true); break; } } @Override public int getCount() { return mCount; } @Override public View getViewAt(int position) { if(position == SmallPanel.FUNCTION.getOrder() && CalculatorSettings.functionPanel(mParent.getContext())) { return mFunctionPage; } else if(position == SmallPanel.ADVANCED.getOrder() && CalculatorSettings.advancedPanel(mParent.getContext())) { return mAdvancedPage; } else if(position == SmallPanel.HEX.getOrder() && CalculatorSettings.hexPanel(mParent.getContext())) { return mHexPage; } return null; } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); setOrder(); } private void setOrder() { mCount = 0; if(CalculatorSettings.hexPanel(mParent.getContext())) { SmallPanel.HEX.setOrder(mCount); mCount++; } if(CalculatorSettings.advancedPanel(mParent.getContext())) { SmallPanel.ADVANCED.setOrder(mCount); mCount++; } if(CalculatorSettings.functionPanel(mParent.getContext())) { SmallPanel.FUNCTION.setOrder(mCount); mCount++; } } private void applyBannedResources(Mode baseMode) { applyBannedResourcesByPage(mLogic, mFunctionPage, baseMode); applyBannedResourcesByPage(mLogic, mAdvancedPage, baseMode); applyBannedResourcesByPage(mLogic, mHexPage, baseMode); } }