package nliveroid.nlr.main;
import android.content.Context;
import android.media.AudioManager;
import android.preference.Preference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
public class SpeechParamSeekBar extends Preference implements OnSeekBarChangeListener {
private static SeekBar seekbar;
private Context context;
private String key;
private int width;
private static SpeechParamSeekBar me_speed;
private static SpeechParamSeekBar me_pich;
private static SpeechParamSeekBar me_vol;
public SpeechParamSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
setWidgetLayoutResource(R.layout.speech_param_seek);
NLiveRoid app = (NLiveRoid)context.getApplicationContext();
//nullはありえない+参照が同じなのでゲッターのある違うクラス(NLiveRoid)から取得してもOKと想定
width = (int) (app.getViewWidth());
//keyをセット
key = attrs.getAttributeValue(1);
}
/*
* Preference のために、ビューとデータをバインドする
* レイアウトからカスタムビューを参照しプロパティを設定するのに適する
* スーパークラスの実装の呼び出しを確実に行うこと
*/
@Override
protected void onBindView(View view){
seekbar = (SeekBar) view.findViewById(R.id.volume_seekbar);
if (seekbar != null && Details.getPref() != null ) {
seekbar.setLayoutParams(new LinearLayout.LayoutParams((width),-2));
seekbar.setMax(10);
seekbar.setOnSeekBarChangeListener(this);
seekbar.setPadding(0, 5, 30, 0);
// seekbar.setOnTouchListener(new OnTouchListener() {
// public boolean onTouch(View v, MotionEvent event) {
// Boolean b;
// if ((int) ((event.getX() / seekbar.getWidth()) * 100) <= seekbar
// .getProgress() + 12
// && (int) ((event.getX() / seekbar.getWidth()) * 100) >= seekbar
// .getProgress() - 12) {
// b = false;
// } else {
// b = true;
// }
// return b;
// }
// });
//初期値を入れる
int defaultValue = 5;
NLiveRoid app = (NLiveRoid)context.getApplicationContext();
if(key != null&&!key.equals("")){
//テキスト
TextView text = (TextView) view.findViewById(R.id.speech_param_label);
if(key.equals("speech_aques_vol")){//Aques時のボリューム
text.setText("ボリューム\n(AquesTalk)");
this.me_vol = this;
}else if(key.equals("speech_speed")){
text.setText("スピード");
this.me_speed = this;
}else{
text.setText("ピッチ\n(標準エンジン)");
this.me_pich = this;
}
//最初にDetailsが表示される時、まだこのクラスはnullなので、Detailsから取得する
String speech_enable = Details.getPref().getDetailMapValue("speech_enable");
if(speech_enable != null){
if(speech_enable.equals("0")||speech_enable.equals("2")){
setEnabled(false);//全体の無効化
}else if(speech_enable.equals("1")){
setEnable_(true, false,true);
}else if(speech_enable.equals("3")){
setEnable_(true, true,false);
}
}
try{
defaultValue = Integer.parseInt(Details.getPref().getDetailMapValue(key));
//初期値あった場合
seekbar.setProgress(defaultValue);
}catch(Exception e){
//初期値なかった場合5
seekbar.setProgress(5);
}//設定値がnullにならないように入れておく
app.setDetailsMapValue(key, String.valueOf(seekbar.getProgress()));
}
}
super.onBindView(view);
}
@Override
public void onStartTrackingTouch(SeekBar seekbar) {}//onTouchactionDown見たいなもん
@Override
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
NLiveRoid app = (NLiveRoid)context.getApplicationContext();
Log.d("NLiveRoid","Set -------------- "+key+" " + progress);
app.setDetailsMapValue(key, String.valueOf(progress));
}
@Override
public void onStopTrackingTouch(SeekBar seekbar) {}//onTouchActionUp見たいなもん
public static void setEnable_(boolean isspeed,boolean aqvolume,boolean ispich){
if(me_speed != null)me_speed.setEnabled(isspeed);
if(me_vol != null)me_vol.setEnabled(aqvolume);
if(me_pich != null)me_pich.setEnabled(ispich);
}
}