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.LargePanel;
import com.numix.calculator.view.CalculatorViewPager;
public class LargePageAdapter extends CalculatorPageAdapter {
private final ViewGroup mGraphPage;
private final ViewGroup mSimplePage;
final ViewGroup mMatrixPage;
private final CalculatorViewPager mParent;
private GraphicalView mGraphDisplay;
private final Graph mGraph;
private final Logic mLogic;
private int mCount = 0;
public LargePageAdapter(CalculatorViewPager parent, Graph graph, Logic logic) {
final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
mGraphPage = (ViewGroup) inflater.inflate(R.layout.graph_pad, parent, false);
mSimplePage = (ViewGroup) inflater.inflate(R.layout.simple_pad, parent, false);
mMatrixPage = (ViewGroup) inflater.inflate(R.layout.matrix_pad, parent, false);
mParent = parent;
mGraph = graph;
mLogic = logic;
setOrder();
applyBannedResources(mLogic.mBaseModule.getMode());
}
@Override
public int getCount() {
return mCount;
}
@Override
public View getViewAt(int position) {
if(position == LargePanel.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();
}
return mGraphPage;
}
else if(position == LargePanel.BASIC.getOrder() && CalculatorSettings.basicPanel(mParent.getContext())) {
return mSimplePage;
}
else if(position == LargePanel.MATRIX.getOrder() && CalculatorSettings.matrixPanel(mParent.getContext())) {
return mMatrixPage;
}
return null;
}
@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();
setOrder();
}
private void setOrder() {
mCount = 0;
if(CalculatorSettings.graphPanel(mParent.getContext())) {
LargePanel.GRAPH.setOrder(mCount);
mCount++;
}
if(CalculatorSettings.basicPanel(mParent.getContext())) {
LargePanel.BASIC.setOrder(mCount);
mCount++;
}
if(CalculatorSettings.matrixPanel(mParent.getContext())) {
LargePanel.MATRIX.setOrder(mCount);
mCount++;
}
}
private void applyBannedResources(Mode baseMode) {
applyBannedResourcesByPage(mLogic, mGraphPage, baseMode);
applyBannedResourcesByPage(mLogic, mSimplePage, baseMode);
applyBannedResourcesByPage(mLogic, mMatrixPage, baseMode);
}
}