package org.starfishrespect.myconsumption.android.ui.widget;
import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import org.starfishrespect.myconsumption.android.R;
/**
* Simple dialog used to select a color, with 3 sliders
* S23Y (2015). Licensed under the Apache License, Version 2.0.
*/
public class ColorDialog extends Dialog {
private SeekBar seekBarRed, seekBarGreen, seekBarBlue;
private LinearLayout linearLayoutResultColor;
private int red = 0, green = 0, blue = 0, color = 0xff0000;
private OnColorSelected colorSelected;
public ColorDialog(Context context) {
super(context);
setContentView(R.layout.dialog_color);
setCancelable(true);
setTitle("Color : ");
linearLayoutResultColor = (LinearLayout) findViewById(R.id.linearLayoutResultColor);
seekBarRed = (SeekBar) findViewById(R.id.seekBarRed);
seekBarGreen = (SeekBar) findViewById(R.id.seekBarGreen);
seekBarBlue = (SeekBar) findViewById(R.id.seekBarBlue);
SeekBar.OnSeekBarChangeListener seekListener = new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (seekBar.equals(seekBarRed)) {
red = progress;
}
if (seekBar.equals(seekBarBlue)) {
blue = progress;
}
if (seekBar.equals(seekBarGreen)) {
green = progress;
}
color = 0xff000000 | (red << 16) | (green << 8) | blue;
linearLayoutResultColor.setBackgroundColor(color);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
};
seekBarRed.setOnSeekBarChangeListener(seekListener);
seekBarGreen.setOnSeekBarChangeListener(seekListener);
seekBarBlue.setOnSeekBarChangeListener(seekListener);
Button okButton = (Button) findViewById(R.id.buttonColorSelected);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (colorSelected != null) {
colorSelected.colorSelected(ColorDialog.this, color);
}
}
});
}
public void setColor(int color) {
this.color = color;
linearLayoutResultColor.setBackgroundColor(color);
red = (color & 0x00ff0000) >> 16;
green = (color & 0x0000ff00) >> 8;
blue = color & 0x000000ff;
seekBarRed.setProgress(red);
seekBarGreen.setProgress(green);
seekBarBlue.setProgress(blue);
}
public void setOnColorSelected(OnColorSelected colorSelected) {
this.colorSelected = colorSelected;
}
/**
* Callback to get the selected color
*/
public interface OnColorSelected {
public void colorSelected(Dialog dlg, int color);
}
}