// Created by plusminus on 19:38:55 - 07.08.2008
package org.androad.ui.settings;
import org.androad.R;
import org.androad.adt.UnitSystem;
import org.androad.adt.UnitSystem.DistanceStringReturnValue;
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.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class SettingsRouteViewing extends AndNavBaseActivity{
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
private CheckBox mChkAutozoomEnable;
private CheckBox mChkSnapToRouteEnable;
private Spinner mSpinMaxZoomlevel;
private Spinner mSpinSnapToRouteRadius;
// ===========================================================
// Constructors
// ===========================================================
@Override
public void onCreate(final Bundle icicle) {
super.onCreate(icicle);
Preferences.applySharedSettings(this);
this.setContentView(R.layout.settings_routeviewing);
this.mSpinMaxZoomlevel = (Spinner)this.findViewById(R.id.spin_settings_routeviewing_maxlevel);
initAutoZoomMaxLevelSpinner();
this.mSpinSnapToRouteRadius = (Spinner)this.findViewById(R.id.spin_settings_routeviewing_snaptoroute_radius);
initSnapToRouteSpinner();
this.mChkAutozoomEnable = (CheckBox)this.findViewById(R.id.chk_settings_routeviewing_enable);
this.mChkSnapToRouteEnable = (CheckBox)this.findViewById(R.id.chk_settings_routeviewing_snaptoroute_enable);
this.applyTopButtonListeners();
this.applyViewListeners();
this.loadSavedFlagsToViews();
}
private void initSnapToRouteSpinner() {
final int[] valDist;
final UnitSystem us = Preferences.getUnitSystem(this);
switch(us){
case IMPERIAL:
valDist = getResources().getIntArray(R.array.settings_snaptoroute_radius_imperial);
break;
case METRIC:
default:
valDist = getResources().getIntArray(R.array.settings_snaptoroute_radius_metric);
}
final String[] valStr = new String[valDist.length];
for (int i = 0; i < valDist.length; i++){
final int cur = valDist[i];
final DistanceStringReturnValue distStringParts = us.getDistanceString(cur);
valStr[i] = distStringParts.LENGTH_STRING + " " + getString(distStringParts.UNIT_RESID);
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, valStr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.mSpinSnapToRouteRadius.setAdapter(adapter);
this.mSpinSnapToRouteRadius.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(final AdapterView<?> parent, final View view, final int position, final long id){
Preferences.saveSnapToRouteRadius(SettingsRouteViewing.this, position);
}
@Override
public void onNothingSelected(final AdapterView<?> arg0) {
}
});
}
private void initAutoZoomMaxLevelSpinner() {
final String[] zoomLevelsRaw = getResources().getStringArray(R.array.preloader_rectangle_zoomlevels);
final String[] zoomLevelStrings = new String[zoomLevelsRaw.length];
for(int i = 0; i < zoomLevelStrings.length; i++) {
zoomLevelStrings[i] = (zoomLevelsRaw[i] != null) ? zoomLevelsRaw[i] : "" + i;
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, zoomLevelStrings);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.mSpinMaxZoomlevel.setAdapter(adapter);
this.mSpinMaxZoomlevel.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(final AdapterView<?> parent, final View view, final int position, final long id){
Preferences.saveAutoZoomMaxLevel(SettingsRouteViewing.this, position);
}
@Override
public void onNothingSelected(final AdapterView<?> arg0) {
}
});
}
private void applyTopButtonListeners() {
new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_routeviewing_close)){
@Override
public void onBoth(final View arg0, final boolean focused) {
if(SettingsRouteViewing.super.mMenuVoiceEnabled && focused) {
MediaPlayer.create(SettingsRouteViewing.this, R.raw.close).start();
}
}
@Override
public void onClicked(final View me) {
SettingsRouteViewing.this.finish();
}
};
}
private void applyViewListeners() {
{
this.mChkAutozoomEnable.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(final CompoundButton b, final boolean isChecked) {
Preferences.saveAutoZoomEnabled(SettingsRouteViewing.this, isChecked);
}
});
}
{
this.mChkSnapToRouteEnable.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(final CompoundButton b, final boolean isChecked) {
Preferences.saveSnapToRoute(SettingsRouteViewing.this, isChecked);
}
});
}
}
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
// ===========================================================
// Methods
// ===========================================================
private void loadSavedFlagsToViews() {
this.mChkAutozoomEnable.setChecked(Preferences.getAutoZoomEnabled(this));
this.mChkSnapToRouteEnable.setChecked(Preferences.getSnapToRoute(this));
final int maxLevel = Math.min(Preferences.getAutoZoomMaxLevel(this), this.mSpinMaxZoomlevel.getCount() - 1);
this.mSpinMaxZoomlevel.setSelection(maxLevel);
final int snapDistIndex = Math.min(Preferences.getSnapToRouteRadiusIndex(this), this.mSpinSnapToRouteRadius.getCount() - 1);
this.mSpinSnapToRouteRadius.setSelection(snapDistIndex);
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}