package com.numix.calculator; import org.achartengine.GraphicalView; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import com.numix.calculator.BaseModule.Mode; import com.numix.calculator.Calculator.Panel; import com.numix.calculator.view.CalculatorViewPager; public class PageAdapter extends CalculatorPageAdapter { private final ViewGroup mGraphPage; private final ViewGroup mFunctionPage; private final ViewGroup mSimplePage; private final ViewGroup mAdvancedPage; private final ViewGroup mHexPage; ViewGroup mMatrixPage; private final CalculatorViewPager mParent; private GraphicalView mGraphDisplay; private final Graph mGraph; private final Logic mLogic; private int mCount = 0; public PageAdapter(CalculatorViewPager parent, EventListener listener, Graph graph, Logic logic) { final LayoutInflater inflater = LayoutInflater.from(parent.getContext()); mGraphPage = (ViewGroup) inflater.inflate(R.layout.graph_pad, parent, false); mFunctionPage = (ViewGroup) inflater.inflate(R.layout.function_pad, parent, false); mSimplePage = (ViewGroup) inflater.inflate(R.layout.simple_pad, parent, false); mAdvancedPage = (ViewGroup) inflater.inflate(R.layout.advanced_pad, parent, false); mHexPage = (ViewGroup) inflater.inflate(R.layout.hex_pad, parent, false); mMatrixPage = (ViewGroup) inflater.inflate(R.layout.matrix_pad, parent, false); mParent = parent; mGraph = graph; 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; } View easterEgg = mMatrixPage.findViewById(R.id.easter); if(easterEgg != null) { easterEgg.setOnClickListener(listener); easterEgg.setOnLongClickListener(listener); } } @Override public int getCount() { return mCount; } @Override public View getViewAt(int position) { View v = null; if(position == Panel.GRAPH.getOrder() && CalculatorSettings.graphPanel(mParent.getContext())) { if(mGraphDisplay == null) { mGraphDisplay = mGraph.getGraph(mParent.getContext()); mLogic.setGraphDisplay(mGraphDisplay); LinearLayout l = (LinearLayout) mGraphPage.findViewById(R.id.graph); l.addView(mGraphDisplay, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); View zoomIn = mGraphPage.findViewById(R.id.zoomIn); zoomIn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mGraphDisplay.zoomIn(); } }); View zoomOut = mGraphPage.findViewById(R.id.zoomOut); zoomOut.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mGraphDisplay.zoomOut(); } }); View zoomReset = mGraphPage.findViewById(R.id.zoomReset); zoomReset.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mGraphDisplay.zoomReset(); } }); } else { mGraphDisplay.repaint(); } v = mGraphPage; } else if(position == Panel.FUNCTION.getOrder() && CalculatorSettings.functionPanel(mParent.getContext())) { v = mFunctionPage; } else if(position == Panel.BASIC.getOrder() && CalculatorSettings.basicPanel(mParent.getContext())) { v = mSimplePage; } else if(position == Panel.ADVANCED.getOrder() && CalculatorSettings.advancedPanel(mParent.getContext())) { v = mAdvancedPage; } else if(position == Panel.HEX.getOrder() && CalculatorSettings.hexPanel(mParent.getContext())) { v = mHexPage; } else if(position == Panel.MATRIX.getOrder() && CalculatorSettings.matrixPanel(mParent.getContext())) { return mMatrixPage; } return v; } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); setOrder(); } private void setOrder() { mCount = 0; if(CalculatorSettings.graphPanel(mParent.getContext())) { Panel.GRAPH.setOrder(mCount); mCount++; } if(CalculatorSettings.functionPanel(mParent.getContext())) { Panel.FUNCTION.setOrder(mCount); mCount++; } if(CalculatorSettings.hexPanel(mParent.getContext())) { Panel.HEX.setOrder(mCount); mCount++; } if(CalculatorSettings.basicPanel(mParent.getContext())) { Panel.BASIC.setOrder(mCount); mCount++; } if(CalculatorSettings.advancedPanel(mParent.getContext())) { Panel.ADVANCED.setOrder(mCount); mCount++; } if(CalculatorSettings.matrixPanel(mParent.getContext())) { Panel.MATRIX.setOrder(mCount); mCount++; } } private void applyBannedResources(Mode baseMode) { applyBannedResourcesByPage(mLogic, mGraphPage, baseMode); applyBannedResourcesByPage(mLogic, mFunctionPage, baseMode); applyBannedResourcesByPage(mLogic, mSimplePage, baseMode); applyBannedResourcesByPage(mLogic, mAdvancedPage, baseMode); applyBannedResourcesByPage(mLogic, mHexPage, baseMode); applyBannedResourcesByPage(mLogic, mMatrixPage, baseMode); } }