//Created by plusminus on 19:01:29 - 20.05.2008
package org.androad.ui.settings;
import java.util.HashMap;
import org.androad.R;
import org.androad.adt.UnitSystem;
import org.androad.adt.voice.DistanceVoiceElement;
import org.androad.preferences.PreferenceConstants;
import org.androad.preferences.Preferences;
import org.androad.ui.AndNavBaseActivity;
import org.androad.ui.common.OnClickOnFocusChangedListenerAdapter;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class SettingsDirectionVoice extends AndNavBaseActivity {
// ===========================================================
// Final Fields
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
protected UnitSystem mUnitSystem;
private Spinner mSPin50;
private Spinner mSPin100;
private Spinner mSPin200;
private Spinner mSPin500;
private Spinner mSPin1000;
private Spinner mSPin2000;
private Spinner mSPin5000;
private Spinner mSPin10000;
private Spinner mSPin25000;
// ===========================================================
// Constructors
// ===========================================================
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
Preferences.applySharedSettings(this);
this.setContentView(R.layout.settings_directionvoice);
this.mUnitSystem = Preferences.getUnitSystem(this);
this.mSPin50 = (Spinner)findViewById(R.id.spin_settings_directionvoice_50_dist);
this.mSPin100 = (Spinner)findViewById(R.id.spin_settings_directionvoice_100_dist);
this.mSPin200 = (Spinner)findViewById(R.id.spin_settings_directionvoice_200_dist);
this.mSPin500 = (Spinner)findViewById(R.id.spin_settings_directionvoice_500_dist);
this.mSPin1000 = (Spinner)findViewById(R.id.spin_settings_directionvoice_1k_dist);
this.mSPin2000 = (Spinner)findViewById(R.id.spin_settings_directionvoice_2k_dist);
this.mSPin5000 = (Spinner)findViewById(R.id.spin_settings_directionvoice_5k_dist);
this.mSPin10000 = (Spinner)findViewById(R.id.spin_settings_directionvoice_10k_dist);
this.mSPin25000 = (Spinner)findViewById(R.id.spin_settings_directionvoice_25k_dist);
this.refreshUnitTexts();
this.refreshSpinnerTextAndStates();
this.applyTopButtonListeners();
}
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
@Override
protected void onPause() {
Preferences.saveTurnVoiceSayList(SettingsDirectionVoice.this, getTurnVoiceSayList());
super.onPause();
}
// ===========================================================
// Methods
// ===========================================================
private void applyTopButtonListeners() {
new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_directionvoice_testtts)){
private TextToSpeech mTTS;
private boolean mTTSAvailable = false;
@Override
public void onClicked(final View me) {
final String test_message = getString(R.string.settings_voice_tts_sample);
if(this.mTTS == null){
this.mTTS = new TextToSpeech(SettingsDirectionVoice.this, new TextToSpeech.OnInitListener(){
@Override
public void onInit(final int version) {
mTTSAvailable = true;
// mTTS.setLanguage(Preferences.getDrivingDirectionsLanguage(SettingsDirectionVoice.this).getIETFLAnguageTag());
mTTS.speak(test_message, 0, null);
}
});
}else{
if(this.mTTSAvailable) {
this.mTTS.speak(test_message, 0, null);
}
}
}
};
new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_directionvoice_close)){
@Override
public void onClicked(final View me) {
if(SettingsDirectionVoice.super.mMenuVoiceEnabled) {
MediaPlayer.create(SettingsDirectionVoice.this, R.raw.close).start();
}
SettingsDirectionVoice.this.finish();
}
};
}
private void refreshSpinnerTextAndStates() {
final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spin_settings_directionvoice_saywhat_items, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.mSPin50.setAdapter(adapter);
this.mSPin100.setAdapter(adapter);
this.mSPin200.setAdapter(adapter);
this.mSPin500.setAdapter(adapter);
this.mSPin1000.setAdapter(adapter);
this.mSPin2000.setAdapter(adapter);
this.mSPin5000.setAdapter(adapter);
this.mSPin10000.setAdapter(adapter);
this.mSPin25000.setAdapter(adapter);
final HashMap<Integer, Integer> turnVoiceList = Preferences.getTurnVoiceSayList(this);
this.mSPin50.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[0]));
this.mSPin100.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[1]));
this.mSPin200.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[2]));
this.mSPin500.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[3]));
this.mSPin1000.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[4]));
this.mSPin2000.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[5]));
this.mSPin5000.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[6]));
this.mSPin10000.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[7]));
this.mSPin25000.setSelection(turnVoiceList.get(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[8]));
}
private void refreshUnitTexts() {
((TextView)findViewById(R.id.tv_settings_directionvoice_50)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.M_50).LENGTH_UNITWISE + this.mUnitSystem.mAbbrMeterScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_100)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.M_100).LENGTH_UNITWISE + this.mUnitSystem.mAbbrMeterScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_200)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.M_200).LENGTH_UNITWISE + this.mUnitSystem.mAbbrMeterScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_500)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.M_500).LENGTH_UNITWISE + this.mUnitSystem.mAbbrMeterScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_1k)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.KM_ONE).LENGTH_UNITWISE + this.mUnitSystem.mAbbrKilometersScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_2k)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.KM_TWO).LENGTH_UNITWISE + this.mUnitSystem.mAbbrKilometersScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_5k)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.KM_FIVE).LENGTH_UNITWISE + this.mUnitSystem.mAbbrKilometersScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_10k)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.KM_TEN).LENGTH_UNITWISE + this.mUnitSystem.mAbbrKilometersScale);
((TextView)findViewById(R.id.tv_settings_directionvoice_25k)).setText(this.mUnitSystem.convertFromMetricDistanceVoice(DistanceVoiceElement.KM_TWENTY_FIVE).LENGTH_UNITWISE + this.mUnitSystem.mAbbrKilometersScale);
}
private HashMap<Integer, Integer> getTurnVoiceSayList(){
final HashMap<Integer, Integer> out = new HashMap<Integer, Integer>();
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[0], this.mSPin50.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[1], this.mSPin100.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[2], this.mSPin200.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[3], this.mSPin500.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[4], this.mSPin1000.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[5], this.mSPin2000.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[6], this.mSPin5000.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[7], this.mSPin10000.getSelectedItemPosition());
out.put(PreferenceConstants.PREF_TURNVOICE_ELEMENTS[8], this.mSPin25000.getSelectedItemPosition());
return out;
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}