//Created by plusminus on 15:47:12 - 15.02.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 org.androad.ui.sd.SDFavorites; import org.androad.ui.sd.SDPoi; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TabHost; import android.widget.TextView; import android.widget.TabHost.TabSpec; public class SettingsMenu extends AndNavBaseActivity { // =========================================================== // Final Fields // =========================================================== /* REQUEST-CODES for SubActivities. */ protected static final int REQUESTCODE_QUALITY = 0x1937; protected static final int REQUESTCODE_DIRECTIONSLANGUAGE = REQUESTCODE_QUALITY + 1; protected static final int REQUESTCODE_UNITSYSTEM = REQUESTCODE_DIRECTIONSLANGUAGE + 1; protected static final int REQUESTCODE_FAVORITES = REQUESTCODE_UNITSYSTEM + 1; protected static final int REQUESTCODE_POI = REQUESTCODE_FAVORITES + 1; protected static final int REQUESTCODE_STATISTICS = REQUESTCODE_POI + 1; protected static final int REQUESTCODE_ROUTINGFLAGS_SETTINGS = REQUESTCODE_STATISTICS + 1; protected static final int REQUESTCODE_SCREENORIENTATION = REQUESTCODE_ROUTINGFLAGS_SETTINGS + 1; protected static final int REQUESTCODE_TRACEPOLICY = REQUESTCODE_SCREENORIENTATION + 1; protected static final int REQUESTCODE_COLORSCHEME = REQUESTCODE_TRACEPOLICY + 1; protected static final int REQUESTCODE_NAVIGATIONSETTINGS = REQUESTCODE_COLORSCHEME + 1; protected static final int REQUESTCODE_HUDSETTING = REQUESTCODE_NAVIGATIONSETTINGS + 1; protected static final int REQUESTCODE_SERVER = REQUESTCODE_HUDSETTING + 1; // =========================================================== // Fields // =========================================================== protected TabHost myTabHost; // =========================================================== // Constructors // =========================================================== @Override public void onCreate(final Bundle icicle) { super.onCreate(icicle); Preferences.applySharedSettings(this); this.setContentView(R.layout.settings_menu); this.myTabHost = (TabHost)this.findViewById(R.id.th_settings_menu_tabhost); this.setupTabs(); this.updateThemeButtonImage(false); this.applySettingsButtonListenersPageDevice(); this.applySettingsButtonListenersPageNav(); this.applySettingsButtonListenersPageUser(); } protected void updateThemeButtonImage() { updateThemeButtonImage(true); } protected void updateThemeButtonImage(final boolean changeQuickInfo) { final int themeID = Preferences.getSharedThemeID(SettingsMenu.this); final int drawableID; final int resTextID; switch(themeID){ case PREF_THEME_NIGHT_RESID: drawableID = R.drawable.settings_colorscheme_nightmode; resTextID = R.string.tv_settings_quickinfo_colorscheme_night; break; case PREF_THEME_DAY_RESID: drawableID = R.drawable.settings_colorscheme_daymode; resTextID = R.string.tv_settings_quickinfo_colorscheme_day; break; case PREF_THEME_DEFAULT_RESID: default: drawableID = R.drawable.settings_colorscheme_defaultmode; resTextID = R.string.tv_settings_quickinfo_colorscheme_default; break; } if(changeQuickInfo) { setQuickinfoPageDeviceTextByID(resTextID); } ((ImageView)this.findViewById(R.id.ibtn_settings_colorscheme)).setImageResource(drawableID); } // =========================================================== // Getter & Setter // =========================================================== protected void setQuickinfoPageNavTextByID(final int resTextId){ ((TextView)this.findViewById(R.id.tv_settings_quickinfo_page_nav)).setText(resTextId); } protected void setQuickinfoPageDeviceTextByID(final int resTextId){ ((TextView)this.findViewById(R.id.tv_settings_quickinfo_page_device)).setText(resTextId); } protected void setQuickinfoPageUserTextByID(final int resTextId){ ((TextView)this.findViewById(R.id.tv_settings_quickinfo_page_user)).setText(resTextId); } // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== /** React on returning Activities (like centermode and Rotatemode), i.e. to update the button-images. */ @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { switch(requestCode){ case REQUESTCODE_COLORSCHEME: this.updateThemeButtonImage(true); break; } } // =========================================================== // Methods // =========================================================== private void applySettingsButtonListenersPageNav() { new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_directionslanguage)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_directionslanguage_focused); } } @Override public void onClicked(final View me) { final Intent ddLanguageIntent = new Intent(SettingsMenu.this, SettingsDirectionLanguage.class); SettingsMenu.this.startActivityForResult(ddLanguageIntent, REQUESTCODE_DIRECTIONSLANGUAGE); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_routingflags)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_routingflags_focused); } } @Override public void onClicked(final View me) { final Intent advancedNavSettingsIntent = new Intent(SettingsMenu.this, SettingsRoutingFlags.class); SettingsMenu.this.startActivityForResult(advancedNavSettingsIntent, REQUESTCODE_ROUTINGFLAGS_SETTINGS); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_server)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_orsserver_focused); } } @Override public void onClicked(final View me) { final Intent serverIntent = new Intent(SettingsMenu.this, SettingsORSServer.class); SettingsMenu.this.startActivityForResult(serverIntent, REQUESTCODE_SERVER); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_navigation)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_navigation_focused); } } @Override public void onClicked(final View me) { final Intent centermodeIntent = new Intent(SettingsMenu.this, SettingsNavigation.class); SettingsMenu.this.startActivityForResult(centermodeIntent, REQUESTCODE_NAVIGATIONSETTINGS); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_hud)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_hud_focused); } } @Override public void onClicked(final View me) { final Intent hudIntent = new Intent(SettingsMenu.this, SettingsHUD.class); SettingsMenu.this.startActivityForResult(hudIntent, REQUESTCODE_HUDSETTING); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_close_page_nav)){ @Override public void onBoth(final View me, final boolean focused) { if(focused && SettingsMenu.super.mMenuVoiceEnabled) { MediaPlayer.create(SettingsMenu.this, R.raw.close).start(); } } @Override public void onFocusChange(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageNavTextByID(R.string.tv_settings_quickinfo_close_focused); } } @Override public void onClicked(final View me) { /* Close this (Settings)-Activity. */ SettingsMenu.this.finish(); } }; } private void applySettingsButtonListenersPageDevice() { new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_colorscheme)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageDeviceTextByID(R.string.tv_settings_quickinfo_colorscheme_focused); } } @Override public void onClicked(final View me) { final Intent colorschemeIntent = new Intent(SettingsMenu.this, SettingsColorscheme.class); SettingsMenu.this.startActivityForResult(colorschemeIntent, REQUESTCODE_COLORSCHEME); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_quality)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageDeviceTextByID(R.string.tv_settings_quickinfo_quality_focused); } } @Override public void onClicked(final View me) { final Intent displayQualityIntent = new Intent(SettingsMenu.this, SettingsQuality.class); SettingsMenu.this.startActivityForResult(displayQualityIntent, REQUESTCODE_QUALITY); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_screenorientation)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageDeviceTextByID(R.string.tv_settings_quickinfo_screenorientation_focused); } } @Override public void onClicked(final View me) { final Intent screenorientationIntent = new Intent(SettingsMenu.this, SettingsScreenOrientation.class); SettingsMenu.this.startActivityForResult(screenorientationIntent, REQUESTCODE_SCREENORIENTATION); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_close_page_device)){ @Override public void onBoth(final View me, final boolean focused) { if(focused && SettingsMenu.super.mMenuVoiceEnabled) { MediaPlayer.create(SettingsMenu.this, R.raw.close).start(); } } @Override public void onFocusChange(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageDeviceTextByID(R.string.tv_settings_quickinfo_close_focused); } } @Override public void onClicked(final View me) { /* Close this (Settings)-Activity. */ SettingsMenu.this.finish(); } }; } private void applySettingsButtonListenersPageUser() { new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_osmcontribution)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageDeviceTextByID(R.string.tv_settings_quickinfo_tracepolicy_focused); } } @Override public void onClicked(final View me) { final Intent tracePolicyIntent = new Intent(SettingsMenu.this, SettingsTracePolicy.class); SettingsMenu.this.startActivityForResult(tracePolicyIntent, REQUESTCODE_TRACEPOLICY); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_favorites)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageUserTextByID(R.string.tv_settings_quickinfo_favorites_focused); } } @Override public void onClicked(final View me) { final Intent favIntent = new Intent(SettingsMenu.this, SDFavorites.class); final Bundle b = new Bundle(); b.putBoolean(SDFavorites.EXTRAS_FAVORITES_REFER, false); favIntent.putExtras(b); SettingsMenu.this.startActivityForResult(favIntent, REQUESTCODE_FAVORITES); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_poi)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageUserTextByID(R.string.tv_settings_quickinfo_poi_focused); } } @Override public void onClicked(final View me) { final Intent favIntent = new Intent(SettingsMenu.this, SDPoi.class); SettingsMenu.this.startActivityForResult(favIntent, REQUESTCODE_POI); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_unitsystem)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageUserTextByID(R.string.tv_settings_quickinfo_unitsystem_focused); } } @Override public void onClicked(final View me) { final Intent unitsystemIntent = new Intent(SettingsMenu.this, SettingsUnitSystem.class); SettingsMenu.this.startActivityForResult(unitsystemIntent, REQUESTCODE_UNITSYSTEM); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_statistics)){ @Override public void onBoth(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageUserTextByID(R.string.tv_settings_quickinfo_statistics_focused); } } @Override public void onClicked(final View me) { final Intent statisticsIntent = new Intent(SettingsMenu.this, SettingsStatistics.class); SettingsMenu.this.startActivityForResult(statisticsIntent, REQUESTCODE_STATISTICS); } }; new OnClickOnFocusChangedListenerAdapter(this.findViewById(R.id.ibtn_settings_close_page_user)){ @Override public void onBoth(final View me, final boolean focused) { if(focused && SettingsMenu.super.mMenuVoiceEnabled) { MediaPlayer.create(SettingsMenu.this, R.raw.close).start(); } } @Override public void onFocusChange(final View me, final boolean focused) { if(focused) { SettingsMenu.this.setQuickinfoPageUserTextByID(R.string.tv_settings_quickinfo_close_focused); } } @Override public void onClicked(final View me) { /* Close this (Settings)-Activity. */ SettingsMenu.this.finish(); } }; } private void setupTabs() { this.myTabHost.setup(); final TabSpec tsNav = this.myTabHost.newTabSpec("NAV"); tsNav.setIndicator("", getResources().getDrawable(R.drawable.map)); tsNav.setContent(R.id.grid_settings_menu_page_nav); this.myTabHost.addTab(tsNav); final TabSpec tsDevice = this.myTabHost.newTabSpec("DEV"); tsDevice.setIndicator("", getResources().getDrawable(R.drawable.device)); tsDevice.setContent(R.id.grid_settings_menu_page_device); this.myTabHost.addTab(tsDevice); final TabSpec tsUser = this.myTabHost.newTabSpec("USR"); tsUser.setIndicator("", getResources().getDrawable(R.drawable.user_settings)); tsUser.setContent(R.id.grid_settings_menu_page_user); this.myTabHost.addTab(tsUser); this.myTabHost.setCurrentTab(0); } // =========================================================== // Inner and Anonymous Classes // =========================================================== }