package au.id.teda.broadband.usage.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import au.id.teda.broadband.usage.R;
import au.id.teda.broadband.usage.chart.CustomDonughtChart;
import au.id.teda.broadband.usage.chart.DailyAverageChart;
import au.id.teda.broadband.usage.chart.PieChart;
import org.achartengine.GraphicalView;
public class AnytimeUsageFragment extends BaseFragment {
// BaseFragment used to load the standard methods
// View inflated by fragment
private View mFragmentView;
/**
* Called 3rd in the fragment life cycle
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Set fragment layout to be inflated
mFragmentView = inflater.inflate(R.layout.fragment_anytime_usage, container, false);
return mFragmentView;
}
@Override
protected void loadFragmentView(){
loadDonughtChart();
loadDonughtChartText();
loadDailyAverageChart();
loadPieChart();
}
private void loadPieChart() {
// Set layout container for chart
final LinearLayout mContainerLayout = (LinearLayout) mFragmentView.findViewById(R.id.fragment_anytime_upload_download_chart);
// Initialize chart class
PieChart mPieChart = new PieChart(mContext);
// Set chart values
int uploads = (mAccountStatus.getUploadsDataUsedGb() / 2);
int downloads = mAccountStatus.getAnytimeDataUsedGb();
int quota = mAccountInfo.getAnyTimeQuotaGb();
mPieChart.setData(uploads, downloads, quota);
// Set layout parameters for chart view
LayoutParams mChartViewParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
// Add chart view to layout view
GraphicalView mGraphicalView = (GraphicalView) mPieChart.getPieChartView();
mContainerLayout.removeAllViews();
mContainerLayout.addView(mGraphicalView, mChartViewParams);
// Set text view references
TextView mUploadData = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_upload_download_upload_number);
TextView mDownloadData = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_upload_download_download_number);
mUploadData.setText(mAccountStatus.getUploadsDataUsedGbString());
mDownloadData.setText(mAccountStatus.getAnytimeDataUsedLessUploadsGbString());
}
private void loadDonughtChart() {
// Set layout container for chart
final LinearLayout mContainerLayout = (LinearLayout) mFragmentView.findViewById(R.id.fragment_anytime_usage_donught);
// Listen for view being inflated
ViewTreeObserver mViewTreeObserver = mContainerLayout.getViewTreeObserver();
mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Get layout parameters
LayoutParams parms = mContainerLayout.getLayoutParams();
// Set height equal to parent layout width
parms.height = getView().getWidth();
}
});
// Initialize chart class
CustomDonughtChart mChart = new CustomDonughtChart(mContext);
mChart.setDays(mAccountStatus.getDaysSoFar(), mAccountStatus.getDaysToGo());
mChart.setUsage(mAccountStatus.getAnytimeDataUsed(), mAccountInfo.getAnyTimeQuota());
// Set layout parameters for chart view
LayoutParams mChartViewParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
// Add chart view to layout view
mContainerLayout.removeAllViews();
mContainerLayout.addView(mChart, mChartViewParams);
}
private void loadDonughtChartText() {
// Set layout container for chart text
final LinearLayout mTextContainer = (LinearLayout) mFragmentView.findViewById(R.id.fragment_anytime_usage_donught_text_container);
// Listen for view being inflated
ViewTreeObserver mViewTreeObserver = mTextContainer.getViewTreeObserver();
mViewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Get layout parameters
LayoutParams parms = mTextContainer.getLayoutParams();
// Set height equal to layout width
parms.height = getView().getWidth();
}
});
// Set text view references
TextView mAnytimePercent = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_usage_donught_text_percent);
TextView mAnytimeUsed = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_usage_donught_text_period);
// Set text in text views
mAnytimePercent.setText(mAccountStatus.getAnytimeDataUsedPercentString());
mAnytimeUsed.setText(mContext.getString(R.string.fragment_anytime_usage_used));
}
private void loadDailyAverageChart() {
// Set layout container for chart
final LinearLayout mContainerLayout = (LinearLayout) mFragmentView.findViewById(R.id.fragment_anytime_usage_daily_chart);
// Initialize chart class
DailyAverageChart mChart = new DailyAverageChart(mContext);
int average = mAccountStatus.getAnytimeDailyAverageUsedMb();
int quota = (int) mAccountInfo.getAnyTimeQuotaDailyMb();
// Check to make sure info status is set so we don't get divid by zero erros
if (!mAccountInfo.isInfoSet() || !mAccountStatus.isStatusSet()){
average = 2;
quota = 1;
}
// Set chart data
mChart.setData(average, quota);
// Set layout parameters for chart view
LayoutParams mChartViewParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
// Add chart view to layout view
mContainerLayout.addView(mChart, mChartViewParams);
// Set text view references
TextView mDailyAnytime = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_usage_daily_number);
TextView mDailyAnytimeVariation = (TextView) mFragmentView.findViewById(R.id.fragment_anytime_usage_daily_description_right);
mDailyAnytime.setText(IntUsageToString(mAccountStatus.getAnytimeDailyAverageUsedMb()));
mDailyAnytimeVariation.setText(IntUsageToString(mAccountStatus.getAnytimeAverageVariationMb()));
}
}