package com.github.andlyticsproject; import java.util.List; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.TextView; import com.github.andlyticsproject.chart.Chart; import com.github.andlyticsproject.chart.Chart.ValueCallbackHander; import com.github.andlyticsproject.model.AppStats; import com.github.andlyticsproject.model.Revenue; import com.github.andlyticsproject.util.Utils; public class RevenueChartListAdapter extends ChartListAdapter<AppStats> { private static final int COL_REVENUE = 1; private static final int COL_DEVELOPER_CUT = 2; public RevenueChartListAdapter(Activity activity) { super(activity); } @Override public int getNumPages() { return 1; } @Override public int getNumCharts(int page) throws IndexOutOfBoundsException { switch (page) { case 0: return 3; } throw new IndexOutOfBoundsException("page=" + page); } @Override public String getChartTitle(int page, int column) throws IndexOutOfBoundsException { if (column == COL_DATE) { return ""; } switch (page) { case 0: switch (column) { case COL_REVENUE: return activity.getString(R.string.total_revenue); case COL_DEVELOPER_CUT: return "Developer cut"; } } throw new IndexOutOfBoundsException("page=" + page + " column=" + column); } @Override public void updateChartValue(int position, int page, int column, TextView tv) throws IndexOutOfBoundsException { AppStats appStats = getItem(position); Revenue totalRevenue = appStats.getTotalRevenue(); if (column == COL_DATE) { tv.setText(dateFormat.format(appStats.getDate())); return; } int textColor = BLACK_TEXT; switch (page) { case 0: { switch (column) { case COL_REVENUE: tv.setText(Utils.safeToString(totalRevenue)); tv.setTextColor(textColor); return; case COL_DEVELOPER_CUT: if (totalRevenue == null) { tv.setText(""); } else { tv.setText(totalRevenue.developerCutAsString()); } tv.setTextColor(textColor); return; } } } throw new IndexOutOfBoundsException("page=" + page + " column=" + column); } public View buildChart(Context context, Chart baseChart, List<?> statsForApp, int page, int column) throws IndexOutOfBoundsException { ValueCallbackHander handler = null; switch (page) { case 0: switch (column) { case COL_REVENUE: handler = new DevConValueCallbackHander() { @Override public double getValue(Object appInfo) { AppStats stats = (AppStats) appInfo; return stats.getTotalRevenue() == null ? 0 : stats.getTotalRevenue() .getAmount(); } }; return baseChart.buildLineChart(context, statsForApp.toArray(), handler); case COL_DEVELOPER_CUT: handler = new DevConValueCallbackHander() { @Override public double getValue(Object appInfo) { AppStats stats = (AppStats) appInfo; return stats.getTotalRevenue() == null ? 0 : stats.getTotalRevenue() .getDeveloperCut(); } }; return baseChart.buildLineChart(context, statsForApp.toArray(), handler); } } throw new IndexOutOfBoundsException("page=" + page + " column=" + column); } @Override public String getSubHeadLine(int page, int column) throws IndexOutOfBoundsException { if (column == COL_DATE) { return ""; } switch (page) { case 0: Preferences.saveShowChartHint(activity, false); if (overallStats == null) { return ""; } switch (column) { case COL_REVENUE: return overallStats.getTotalRevenue() == null ? "unknown" : overallStats .getTotalRevenue().asString(); case COL_DEVELOPER_CUT: return overallStats.getTotalRevenue() == null ? "unknown" : overallStats .getTotalRevenue().developerCutAsString(); } } throw new IndexOutOfBoundsException("page=" + page + " column=" + column); } @Override public AppStats getItem(int position) { return getStats().get(position); } @Override protected boolean isSmothValue(int page, int position) { return page == 0 ? getItem(position).isSmoothingApplied() : false; } }