package com.code44.finance.ui.overview; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.Gravity; import android.widget.LinearLayout; import android.widget.TextView; import com.code44.finance.App; import com.code44.finance.R; import com.code44.finance.data.model.Currency; import com.code44.finance.graphs.pie.PieChartData; import com.code44.finance.graphs.pie.PieChartView; import com.code44.finance.qualifiers.Main; import com.code44.finance.ui.common.ViewBackgroundTheme; import com.code44.finance.utils.LayoutType; import com.code44.finance.utils.MoneyFormatter; import javax.inject.Inject; public class OverviewGraphView extends LinearLayout { private final PieChartView pieChartView; private final TextView totalExpenseTextView; @Inject @Main Currency mainCurrency; @Inject LayoutType layoutType; public OverviewGraphView(Context context) { this(context, null); } public OverviewGraphView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public OverviewGraphView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setBackgroundResource(R.drawable.btn_borderless); setGravity(Gravity.CENTER_VERTICAL); setOrientation(VERTICAL); final int padding = getResources().getDimensionPixelSize(R.dimen.keyline); setPadding(padding, padding, padding, padding); inflate(context, R.layout.view_overview_graph, this); if (!isInEditMode()) { App.with(context).inject(this); } // Get views final TextView titleView = (TextView) findViewById(R.id.titleTextView); pieChartView = (PieChartView) findViewById(R.id.pieChartView); totalExpenseTextView = (TextView) findViewById(R.id.totalExpenseTextView); // Setup applyStyle(context, attrs); pieChartView.setEmptyColor(totalExpenseTextView.getCurrentTextColor()); setPieChartData(null); if (isInEditMode()) { totalExpenseTextView.setText("0.00 $"); } else { setTotalExpense(0); if (!layoutType.isLandscape()) { titleView.setVisibility(GONE); } } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); final LayoutParams params = (LayoutParams) pieChartView.getLayoutParams(); params.height = pieChartView.getMeasuredWidth(); } public void setPieChartData(PieChartData pieChartData) { pieChartView.setPieChartData(pieChartData); } public void setTotalExpense(long totalExpense) { totalExpenseTextView.setText(MoneyFormatter.format(mainCurrency, totalExpense)); } private void applyStyle(Context context, AttributeSet attrs) { final TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.PieChartView, 0, 0); try { final ViewBackgroundTheme viewBackgroundTheme = ViewBackgroundTheme.from(a.getInteger(R.styleable.OverviewGraphView_viewBackgroundTheme, 0)); pieChartView.setViewBackgroundTheme(viewBackgroundTheme); final int textColor = getResources().getColor(viewBackgroundTheme == ViewBackgroundTheme.Light ? R.color.text_primary : R.color.text_primary_inverse); totalExpenseTextView.setTextColor(textColor); } finally { a.recycle(); } } }