package com.qtfreet.musicuu.ui.view;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import com.qtfreet.musicuu.R;
import com.qtfreet.musicuu.utils.PreferenceUtil;
/**
* Created by MarioStudio on 2016/8/1.
*/
public class CustomSettingView extends LinearLayout {
private TextView mDismissBtn;
private SeekBar mTextSizeSeek;
private SeekBar mLineSpaceSeek;
private LinearLayout mColorLayout;
private OnColorItemChangeListener colorItemChangeListener;
private int colors[] = {Color.parseColor("#4FC5C7"), Color.parseColor("#F55064"), Color.parseColor("#262A3B"), Color.parseColor("#F2572D"), Color.parseColor("#97EC71"), Color.parseColor("#0EA8E3"), Color.parseColor("#F29C9C"), Color.parseColor("#5B4947"), Color.parseColor("#EFC028"), Color.parseColor("#DE9DD6")};
public CustomSettingView(Context context) {
super(context);
initCustomSettingView();
}
public CustomSettingView(Context context, AttributeSet attrs) {
super(context, attrs);
initCustomSettingView();
}
public CustomSettingView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initCustomSettingView();
}
private void initCustomSettingView() {
setOrientation(LinearLayout.VERTICAL);
LayoutInflater.from(getContext()).inflate(R.layout.view_setting, this, true);
initAllViews();
}
private void initAllViews() {
setOnTouchListener(new CustomSettingViewTouchListener());
mDismissBtn = (TextView) findViewById(R.id.btn_dismiss);
mTextSizeSeek = (SeekBar) findViewById(R.id.seek_text_size);
mLineSpaceSeek = (SeekBar) findViewById(R.id.seek_line_space);
mColorLayout = (LinearLayout) findViewById(R.id.layout_color);
mTextSizeSeek.setProgress((int) ((PreferenceUtil.getInstance(getContext()).getFloat(PreferenceUtil.KEY_TEXT_SIZE, 15.0f) - 15.0f) * 100 / 3.0f));
mLineSpaceSeek.setProgress((int) ((PreferenceUtil.getInstance(getContext()).getFloat(PreferenceUtil.KEY_TEXT_SIZE, 12.0f) - 12.0f) * 100 / 3.0f));
initColorLayout();
}
private void initColorLayout() {
float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 48, getContext().getResources().getDisplayMetrics());
mColorLayout.removeAllViews();
for(int i = 0, size = colors.length; i < size; i ++) {
ShapeDrawable shapeDrawable = new ShapeDrawable(new OvalShape());
shapeDrawable.setBounds(0, 0, (int) width, (int) width);
shapeDrawable.getPaint().setColor(colors[i]);
View view = new View(getContext());
view.setBackgroundDrawable(shapeDrawable);
view.setTag(colors[i]);
view.setOnClickListener(new ColorItemClickListener());
MarginLayoutParams layoutParams = new LayoutParams((int) width, (int) width);
layoutParams.setMargins((int) (width / 8), 0, (int) (width / 8), 0);
mColorLayout.addView(view, layoutParams);
}
}
private class CustomSettingViewTouchListener implements OnTouchListener {
@Override
public boolean onTouch(View view, MotionEvent event) {
return true;
}
}
private class ColorItemClickListener implements OnClickListener {
@Override
public void onClick(View view) {
if(colorItemChangeListener != null) {
colorItemChangeListener.onColorChanged((Integer) view.getTag());
}
}
}
public void setOnTextSizeChangeListener(SeekBar.OnSeekBarChangeListener seekBarChangeListener) {
mTextSizeSeek.setOnSeekBarChangeListener(seekBarChangeListener);
}
public void setOnLineSpaceChangeListener(SeekBar.OnSeekBarChangeListener seekBarChangeListener) {
mLineSpaceSeek.setOnSeekBarChangeListener(seekBarChangeListener);
}
public void setOnDismissBtnClickListener(OnClickListener clickListener) {
mDismissBtn.setOnClickListener(clickListener);
}
public void setOnColorItemChangeListener(OnColorItemChangeListener colorItemChangeListener) {
this.colorItemChangeListener = colorItemChangeListener;
}
public interface OnColorItemChangeListener {
public void onColorChanged(int color);
}
}