package com.stanleycen.facebookanalytics;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
import com.stanleycen.facebookanalytics.graph.Line;
import com.stanleycen.facebookanalytics.graph.LineGraph;
import java.util.ArrayList;
/**
* Created by scen on 8/31/13.
*/
public class CardLineChartSpinner implements CardItem {
public final String title;
private int viewType;
private ArrayList<Line> lines;
private LineGraph.LabelFormatter xFormatter;
private LineGraph.LabelFormatter yFormatter;
private float minY = Float.MAX_VALUE;
private float maxY = Float.MAX_VALUE;
private int numHorizontalGrids = 5;
private int numVerticalGrids = 6;
private boolean shouldCacheToBitmap;
boolean initClicked = false;
public CardLineChartHolder holder;
public int getViewType() {
return viewType;
}
public CardLineChartSpinner(int viewType, String title) {
this.viewType = viewType;
this.title = title;
}
@Override
public boolean isEnabled() {
return false;
}
@Override
public View getView(LayoutInflater inflater, View convertView, int position, final Context context) {
View v = convertView;
holder = new CardLineChartHolder();
if (v == null) {
v = (View) inflater.inflate(R.layout.card_line_chart_spinner, null);
holder.title = (TextView) v.findViewById(R.id.title);
holder.lineChart = (LineGraph) v.findViewById(R.id.linechart);
holder.spinner = (Spinner) v.findViewById(R.id.spinner);
v.setTag(holder);
} else {
holder = (CardLineChartHolder) v.getTag();
}
refreshLineChart();
holder.title.setText(this.title);
holder.spinner.setSelection(1); // week
holder.spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setTextColor(0xAA000000);
((TextView) adapterView.getChildAt(0)).setTypeface(Typefaces.get("sans-serif-light", Typeface.NORMAL));
if (initClicked) {
Intent intent = new Intent("com.stanleycen.facebookanalytics.spinner.group");
intent.putExtra("title", title);
intent.putExtra("value", i);
context.sendBroadcast(intent);
}
initClicked = true;
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
return v;
}
public void refreshLineChart() {
if (holder == null || holder.lineChart == null) return;
holder.lineChart.setLines(lines);
holder.lineChart.setNumVerticalGrids(getNumVerticalGrids());
holder.lineChart.setNumHorizontalGrids(getNumHorizontalGrids());
holder.lineChart.setXlabelFormatter(getxFormatter());
holder.lineChart.setYlabelFormatter(getyFormatter());
holder.lineChart.setShouldCacheToBitmap(isShouldCacheToBitmap());
if (minY != Float.MAX_VALUE) {
holder.lineChart.setRangeY(minY, maxY);
}
}
public void invalidateChart() {
if (holder != null && holder.lineChart != null) {
holder.lineChart.invalidate();
}
}
public ArrayList<Line> getLines() {
return lines;
}
public void setLines(ArrayList<Line> lines) {
this.lines = lines;
}
public LineGraph.LabelFormatter getxFormatter() {
return xFormatter;
}
public void setxFormatter(LineGraph.LabelFormatter xFormatter) {
this.xFormatter = xFormatter;
}
public LineGraph.LabelFormatter getyFormatter() {
return yFormatter;
}
public void setyFormatter(LineGraph.LabelFormatter yFormatter) {
this.yFormatter = yFormatter;
}
public void setRangeY(float min, float max) {
this.minY = min;
this.maxY = max;
}
public int getNumHorizontalGrids() {
return numHorizontalGrids;
}
public void setNumHorizontalGrids(int numHorizontalGrids) {
this.numHorizontalGrids = numHorizontalGrids;
}
public int getNumVerticalGrids() {
return numVerticalGrids;
}
public void setNumVerticalGrids(int numVerticalGrids) {
this.numVerticalGrids = numVerticalGrids;
}
public boolean isShouldCacheToBitmap() {
return shouldCacheToBitmap;
}
public void setShouldCacheToBitmap(boolean shouldCacheToBitmap) {
this.shouldCacheToBitmap = shouldCacheToBitmap;
}
public class CardLineChartHolder {
TextView title;
LineGraph lineChart;
Spinner spinner;
}
}