// Created by plusminus on 18:11:58 - 07.03.2008 package org.androad.ui.settings; import org.androad.R; import org.androad.preferences.Preferences; import org.androad.ui.AndNavBaseActivity; import org.androad.ui.common.OnClickOnFocusChangedListenerAdapter; import android.app.AlertDialog; import android.content.DialogInterface; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; public class SettingsRotateMode extends AndNavBaseActivity { // =========================================================== // Final Fields // =========================================================== // =========================================================== // Fields // =========================================================== protected ImageView rotateModePreview; protected TextView rotateModeQuickinfo; // =========================================================== // Constructors // =========================================================== @Override public void onCreate(final Bundle icicle) { super.onCreate(icicle); Preferences.applySharedSettings(this); this.setContentView(R.layout.settings_rotatemode); /* Get the centermodePreview ImageView from xml. */ this.rotateModePreview = (ImageView)this.findViewById(R.id.iv_settings_rotatemode_sample); this.rotateModeQuickinfo = (TextView)this.findViewById(R.id.tv_settings_rotatemode_quickinfo); final int activeRotateMode = Preferences.getRotateMode(this); this.refreshRotatemodeImageAndTextByMode(activeRotateMode, false); if(activeRotateMode == PREF_ROTATEMODE_DRIVINGDIRECTION_UP) { this.findViewById(R.id.ibtn_settings_rotatemode_drivingdirectionup).requestFocus(); } else if(activeRotateMode == PREF_ROTATEMODE_NORTH_UP) { this.findViewById(R.id.ibtn_settings_rotatemode_northup).requestFocus(); } this.applyButtonListeners(); } private void refreshRotatemodeImageAndTextByMode(final int rotateMode, final boolean saved){ final int activeRotateMode = Preferences.getRotateMode(this); switch (rotateMode){ case PREF_ROTATEMODE_NORTH_UP: this.rotateModePreview.setImageResource(R.drawable.rotatemode_northup_full); if(saved) { this.rotateModeQuickinfo.setText(R.string.tv_settings_rotatemode_quickinfo_northup_saved); } else{ if(activeRotateMode == rotateMode) { this.rotateModeQuickinfo.setText(getString(R.string.tv_settings_rotatemode_quickinfo_northup) + " "+ getString(R.string.tv_settings_center_and_rotate_mode_quickinfo_current)); } else { this.rotateModeQuickinfo.setText(R.string.tv_settings_rotatemode_quickinfo_northup); } } break; case PREF_ROTATEMODE_DRIVINGDIRECTION_UP: this.rotateModePreview.setImageResource(R.drawable.rotatemode_drivingdirectionup_full); if(saved) { this.rotateModeQuickinfo.setText(R.string.tv_settings_rotatemode_quickinfo_drivingdirectionsup_saved); } else{ if(activeRotateMode == rotateMode) { this.rotateModeQuickinfo.setText(getString(R.string.tv_settings_rotatemode_quickinfo_drivingdirectionsup) + " "+ getString(R.string.tv_settings_center_and_rotate_mode_quickinfo_current)); } else { this.rotateModeQuickinfo.setText(R.string.tv_settings_rotatemode_quickinfo_drivingdirectionsup); } } break; } } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== protected void applyButtonListeners() { new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_rotatemode_northup)){ @Override public void onFocusChanged(final View arg0, final boolean focus) { if(focus) { SettingsRotateMode.this.refreshRotatemodeImageAndTextByMode(PREF_ROTATEMODE_NORTH_UP, false); } } @Override public void onClicked(final View me) { Preferences.saveRotateMode(SettingsRotateMode.this, PREF_ROTATEMODE_NORTH_UP); SettingsRotateMode.this.refreshRotatemodeImageAndTextByMode(PREF_ROTATEMODE_NORTH_UP, true); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_rotatemode_drivingdirectionup)){ @Override public void onFocusChanged(final View arg0, final boolean focus) { if(focus) { SettingsRotateMode.this.refreshRotatemodeImageAndTextByMode(PREF_ROTATEMODE_DRIVINGDIRECTION_UP, false); } } @Override public void onClicked(final View me) { /* ROTATEMODE_DRIVINGDIRECTION_UP and centermode_UPTO_NEXTTURN are 'mutex' */ if(Preferences.getCenterMode(SettingsRotateMode.this) == PREF_CENTERMODE_UPTO_NEXTTURN){ final AlertDialog.Builder aBuilder = new AlertDialog.Builder(SettingsRotateMode.this); aBuilder.setIcon(R.drawable.questionmark_small); aBuilder.setTitle(R.string.centermode_dd_up_rotatemode_upto_nextturn_mutex_title); aBuilder.setMessage(R.string.centermode_dd_up_rotatemode_upto_nextturn_mutex_message); aBuilder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener(){ @Override public void onClick(final DialogInterface arg0, final int arg1) { Preferences.saveCenterMode(SettingsRotateMode.this, PREF_CENTERMODE_CENTERUSER); Preferences.saveRotateMode(SettingsRotateMode.this, PREF_ROTATEMODE_DRIVINGDIRECTION_UP); SettingsRotateMode.this.refreshRotatemodeImageAndTextByMode(PREF_ROTATEMODE_DRIVINGDIRECTION_UP, true); } }); aBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener(){ @Override public void onClick(final DialogInterface arg0, final int arg1) { // Nothing to react on here! } }); aBuilder.create().show(); }else{ Preferences.saveRotateMode(SettingsRotateMode.this, PREF_ROTATEMODE_DRIVINGDIRECTION_UP); SettingsRotateMode.this.refreshRotatemodeImageAndTextByMode(PREF_ROTATEMODE_DRIVINGDIRECTION_UP, true); } } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_rotatemode_close)){ @Override public void onBoth(final View me, final boolean focused) { if(focused && SettingsRotateMode.super.mMenuVoiceEnabled) { MediaPlayer.create(SettingsRotateMode.this, R.raw.close).start(); } } @Override public void onFocusChanged(final View arg0, final boolean focus) { if(focus) { SettingsRotateMode.this.rotateModeQuickinfo.setText(R.string.tv_settings_quickinfo_close_focused); } } @Override public void onClicked(final View me) { SettingsRotateMode.this.finish(); } }; } // =========================================================== // Inner and Anonymous Classes // =========================================================== }