package au.id.teda.broadband.usage.util;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import au.id.teda.broadband.usage.R;
/**
* Class for ViewFlipper pagination
* @author Ian
*
*/
public class PaginationView {
// Static strings for debug tags
//private static final String DEBUG_TAG = BaseActivity.DEBUG_TAG;
// View objects for pagination
private final View mListViewDot;
private final View mBarChartDot;
private final View mLineChartDot;
// Drawable objects for drawable backgrounds
private final Drawable active;
private final Drawable inactive;
// Change size of pagination square
private final float scale;
private final int DOT_ACTIVE_SIZE = 8;
private final int DOT_INACTIVE_SIZE = 6;
/**
* Class constructor
* @param view
* @param ctx
*
* @param context
*/
public PaginationView(View view, Context context) {
// Initialise pagination views
mListViewDot = (View) view.findViewById(R.id.fragment_daily_usage_listview_dot);
mBarChartDot = (View) view.findViewById(R.id.fragment_daily_usage_bar_chart_dot);
mLineChartDot = (View) view.findViewById(R.id.fragment_daily_usage_line_chart_dot);
// Initialise drawable backgrounds
active = context.getResources().getDrawable(R.drawable.pagination_active);
inactive = context.getResources().getDrawable(R.drawable.pagination_inactive);
// Get device screen scale
scale = context.getResources().getDisplayMetrics().density;
}
/**
* Method for setting position of pagination
* @param position
*/
public void setActive(int position){
if (position == 1){
setBarChartActive();
}
else if (position == 2){
setLineChartActive();
} else {
setListViewActive();
}
}
/**
* Set pagination to line chart
*/
private void setListViewActive(){
mListViewDot.setBackgroundDrawable(active);
mBarChartDot.setBackgroundDrawable(inactive);
mLineChartDot.setBackgroundDrawable(inactive);
setActiveSize(mListViewDot);
setInactiveSize(mBarChartDot);
setInactiveSize(mLineChartDot);
}
/**
* Set pagination to bar chart
*/
private void setBarChartActive(){
mListViewDot.setBackgroundDrawable(inactive);
mBarChartDot.setBackgroundDrawable(active);
mLineChartDot.setBackgroundDrawable(inactive);
setInactiveSize(mListViewDot);
setActiveSize(mBarChartDot);
setInactiveSize(mLineChartDot);
}
/**
* Set pagination to pie chart
*/
private void setLineChartActive(){
mListViewDot.setBackgroundDrawable(inactive);
mBarChartDot.setBackgroundDrawable(inactive);
mLineChartDot.setBackgroundDrawable(active);
setInactiveSize(mListViewDot);
setInactiveSize(mBarChartDot);
setActiveSize(mLineChartDot);
}
/**
* Resize view to active size
* @param view to be resized
*/
private void setActiveSize(View view){
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = getPixelDip(DOT_ACTIVE_SIZE);
params.width = getPixelDip(DOT_ACTIVE_SIZE);
view.setLayoutParams(params);
}
/**
* Resize view to inactive size
* @param view to be resized
*/
private void setInactiveSize(View view){
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = getPixelDip(DOT_INACTIVE_SIZE);
params.width = getPixelDip(DOT_INACTIVE_SIZE);
view.setLayoutParams(params);
}
/**
* Calculate pixel value for dip
* @param dip value to be converted
* @return pixel value of dip for current screen density
*/
private int getPixelDip(int dip){
int pixels = (int) (dip * scale + 0.5f);
return pixels;
}
}