diff options
author | Amith Yamasani <yamasani@google.com> | 2010-01-21 17:54:47 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-01-21 17:54:47 -0800 |
commit | 2197f83b6b8eed12d73c0ba249816d6e2af97ec3 (patch) | |
tree | 74cdf83f2d0af5dbfc0d3b9a511d0af8718563a8 | |
parent | abc3dc64cf61c9f5c28b6f2640b221d63cb86a0a (diff) | |
parent | 39c3d10bfccd74b26b045e3d6a712d282fba88d8 (diff) | |
download | packages_apps_settings-2197f83b6b8eed12d73c0ba249816d6e2af97ec3.zip packages_apps_settings-2197f83b6b8eed12d73c0ba249816d6e2af97ec3.tar.gz packages_apps_settings-2197f83b6b8eed12d73c0ba249816d6e2af97ec3.tar.bz2 |
am 39c3d10b: am 0e2ab4f8: New top-level Dock in Settings and a Dock Settings screen with Audio item. #2367275
Merge commit '39c3d10bfccd74b26b045e3d6a712d282fba88d8'
* commit '39c3d10bfccd74b26b045e3d6a712d282fba88d8':
New top-level Dock in Settings and a Dock Settings screen with Audio item. #2367275
-rw-r--r-- | AndroidManifest.xml | 13 | ||||
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | res/xml/dock_settings.xml | 29 | ||||
-rw-r--r-- | res/xml/settings.xml | 11 | ||||
-rw-r--r-- | res/xml/sound_and_display_settings.xml | 7 | ||||
-rw-r--r-- | src/com/android/settings/DockSettings.java | 136 | ||||
-rw-r--r-- | src/com/android/settings/Settings.java | 8 | ||||
-rw-r--r-- | src/com/android/settings/SoundAndDisplaySettings.java | 50 |
8 files changed, 198 insertions, 60 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a2eb681..0f6dae3 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -265,6 +265,19 @@ </intent-filter> </activity> + <activity android:name="DockSettings" + android:label="@string/dock_settings_title" + android:clearTaskOnLaunch="true" + > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <action android:name="com.android.settings.DOCK_SETTINGS" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.VOICE_LAUNCH" /> + <category android:name="com.android.settings.SHORTCUT" /> + </intent-filter> + </activity> + <activity android:name="DeviceInfoSettings" android:label="@string/device_info_settings" > <intent-filter> diff --git a/res/values/strings.xml b/res/values/strings.xml index db87edb..86cd087 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1047,8 +1047,8 @@ <!-- Dock not found dialog title --> <string name="dock_not_found_title">Dock not found</string> <!-- Dock not found dialog text --> - <string name="dock_not_found_text">You must dock the phone to configure audio settings for that dock</string> - + <string name="dock_not_found_text">The phone must be docked to configure dock audio</string> + <!-- Acounts & Sync settings screen setting option name to go into the screen for data sync settings--> <string name="sync_settings">Accounts & sync</string> <!-- Main Settings screen setting option summary text for the itme to go into the screen with data sync settings--> diff --git a/res/xml/dock_settings.xml b/res/xml/dock_settings.xml new file mode 100644 index 0000000..43e9fa5 --- /dev/null +++ b/res/xml/dock_settings.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<PreferenceScreen + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" + android:title="@string/dock_settings_title" + android:key="parent"> + + <PreferenceScreen + android:key="dock_audio" + android:title="@string/dock_audio_settings_title" + android:summary="@string/dock_settings_summary" + android:widgetLayout="@*android:layout/preference_dialog" /> + +</PreferenceScreen>
\ No newline at end of file diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 79a777d..0fe502e 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -133,6 +133,17 @@ android:targetClass="com.android.settings.LanguageSettings" /> </com.android.settings.IconPreferenceScreen> + <!-- Dock --> + + <com.android.settings.IconPreferenceScreen + android:key="dock_settings" + android:title="@string/dock_settings"> + <intent + android:action="android.intent.action.MAIN" + android:targetPackage="com.android.settings" + android:targetClass="com.android.settings.DockSettings" /> + </com.android.settings.IconPreferenceScreen> + <!-- Accessibility feedback --> <com.android.settings.IconPreferenceScreen diff --git a/res/xml/sound_and_display_settings.xml b/res/xml/sound_and_display_settings.xml index e3e3a8e..9ac3692 100644 --- a/res/xml/sound_and_display_settings.xml +++ b/res/xml/sound_and_display_settings.xml @@ -47,13 +47,6 @@ android:order="3" android:streamType="music" /> - <PreferenceScreen - android:key="dock_settings" - android:order="4" - android:title="@string/dock_settings_title" - android:summary="@string/dock_settings_summary" - android:widgetLayout="@*android:layout/preference_dialog" /> - <com.android.settings.DefaultRingtonePreference android:key="ringtone" android:title="@string/ringtone_title" diff --git a/src/com/android/settings/DockSettings.java b/src/com/android/settings/DockSettings.java new file mode 100644 index 0000000..5cf8a7e --- /dev/null +++ b/src/com/android/settings/DockSettings.java @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.BroadcastReceiver; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceScreen; + +import com.android.settings.bluetooth.DockEventReceiver; + +public class DockSettings extends PreferenceActivity { + + private static final int DIALOG_NOT_DOCKED = 1; + private static final String KEY_AUDIO_SETTINGS = "dock_audio"; + private Preference mAudioSettings; + private Intent mDockIntent; + + private BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(Intent.ACTION_DOCK_EVENT)) { + handleDockChange(intent); + } + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ContentResolver resolver = getContentResolver(); + addPreferencesFromResource(R.xml.dock_settings); + + initDockSettings(); + } + + @Override + protected void onResume() { + super.onResume(); + + IntentFilter filter = new IntentFilter(Intent.ACTION_DOCK_EVENT); + registerReceiver(mReceiver, filter); + } + + @Override + protected void onPause() { + super.onPause(); + + unregisterReceiver(mReceiver); + } + + private void initDockSettings() { + mAudioSettings = findPreference(KEY_AUDIO_SETTINGS); + } + + private void handleDockChange(Intent intent) { + if (mAudioSettings != null) { + int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0); + mDockIntent = intent; + int resId = R.string.dock_audio_summary_unknown; + switch (dockState) { + case Intent.EXTRA_DOCK_STATE_CAR: + resId = R.string.dock_audio_summary_car; + break; + case Intent.EXTRA_DOCK_STATE_DESK: + resId = R.string.dock_audio_summary_desk; + break; + case Intent.EXTRA_DOCK_STATE_UNDOCKED: + resId = R.string.dock_audio_summary_none; + } + mAudioSettings.setSummary(resId); + if (dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) { + // remove undocked dialog if currently showing. + try { + dismissDialog(DIALOG_NOT_DOCKED); + } catch (IllegalArgumentException iae) { + // Maybe it was already dismissed + } + } + } + } + + @Override + public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { + if (preference == mAudioSettings) { + int dockState = mDockIntent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0); + if (dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) { + showDialog(DIALOG_NOT_DOCKED); + } else { + Intent i = new Intent(mDockIntent); + i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); + i.setClass(this, DockEventReceiver.class); + sendBroadcast(i); + } + } + + return true; + } + + @Override + public Dialog onCreateDialog(int id) { + if (id == DIALOG_NOT_DOCKED) { + return createUndockedMessage(); + } + return null; + } + + private Dialog createUndockedMessage() { + final AlertDialog.Builder ab = new AlertDialog.Builder(this); + ab.setTitle(R.string.dock_not_found_title); + ab.setMessage(R.string.dock_not_found_text); + ab.setPositiveButton(android.R.string.ok, null); + return ab.create(); + } +} diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index c0a8613..5309cf5 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -17,9 +17,9 @@ package com.android.settings; import android.os.Bundle; +import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; -import android.provider.Settings.System; import android.telephony.TelephonyManager; public class Settings extends PreferenceActivity { @@ -28,6 +28,7 @@ public class Settings extends PreferenceActivity { private static final String KEY_CALL_SETTINGS = "call_settings"; private static final String KEY_SYNC_SETTINGS = "sync_settings"; private static final String KEY_SEARCH_SETTINGS = "search_settings"; + private static final String KEY_DOCK_SETTINGS = "dock_settings"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -40,6 +41,11 @@ public class Settings extends PreferenceActivity { PreferenceGroup parent = (PreferenceGroup) findPreference(KEY_PARENT); Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SYNC_SETTINGS, 0); Utils.updatePreferenceToSpecificActivityOrRemove(this, parent, KEY_SEARCH_SETTINGS, 0); + + Preference dockSettings = parent.findPreference(KEY_DOCK_SETTINGS); + if (getResources().getBoolean(R.bool.has_dock_settings) == false && dockSettings != null) { + parent.removePreference(dockSettings); + } } @Override diff --git a/src/com/android/settings/SoundAndDisplaySettings.java b/src/com/android/settings/SoundAndDisplaySettings.java index e01f7c3..29eb878 100644 --- a/src/com/android/settings/SoundAndDisplaySettings.java +++ b/src/com/android/settings/SoundAndDisplaySettings.java @@ -18,8 +18,6 @@ package com.android.settings; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; -import com.android.settings.bluetooth.DockEventReceiver; - import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -63,15 +61,11 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements private static final String KEY_EMERGENCY_TONE = "emergency_tone"; private static final String KEY_SOUND_SETTINGS = "sound_settings"; private static final String KEY_NOTIFICATION_PULSE = "notification_pulse"; - private static final String KEY_DOCK_SETTINGS = "dock_settings"; private CheckBoxPreference mSilent; private CheckBoxPreference mPlayMediaNotificationSounds; - private Preference mDockSettings; - private boolean mHasDockSettings; - private IMountService mMountService = null; /* @@ -99,16 +93,12 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { updateState(false); - } else if (intent.getAction().equals(Intent.ACTION_DOCK_EVENT)) { - handleDockChange(intent); } } }; private PreferenceGroup mSoundSettings; - private Intent mDockIntent; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -178,7 +168,6 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements } } - initDockSettings(); } @Override @@ -188,12 +177,6 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements updateState(true); IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); - if (mHasDockSettings) { - if (mDockSettings != null) { - mSoundSettings.removePreference(mDockSettings); - } - filter.addAction(Intent.ACTION_DOCK_EVENT); - } registerReceiver(mReceiver, filter); } @@ -204,34 +187,6 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements unregisterReceiver(mReceiver); } - private void initDockSettings() { - mDockSettings = mSoundSettings.findPreference(KEY_DOCK_SETTINGS); - mHasDockSettings = getResources().getBoolean(R.bool.has_dock_settings); - if (mDockSettings != null) { - mSoundSettings.removePreference(mDockSettings); - // Don't care even if we dock - if (getResources().getBoolean(R.bool.has_dock_settings) == false) { - mDockSettings = null; - } - } - } - - private void handleDockChange(Intent intent) { - if (mHasDockSettings && mDockSettings != null) { - int dockState = intent.getIntExtra(Intent.EXTRA_DOCK_STATE, 0); - if (dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) { - // Show dock settings item - mSoundSettings.addPreference(mDockSettings); - - // Save the intent to send to the activity - mDockIntent = intent; - } else { - // Remove dock settings item - mSoundSettings.removePreference(mDockSettings); - } - } - } - private void updateState(boolean force) { final int ringerMode = mAudioManager.getRingerMode(); final boolean silentOrVibrateMode = @@ -354,11 +309,6 @@ public class SoundAndDisplaySettings extends PreferenceActivity implements boolean value = mNotificationPulse.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.NOTIFICATION_LIGHT_PULSE, value ? 1 : 0); - } else if (preference == mDockSettings) { - Intent i = new Intent(mDockIntent); - i.setAction(DockEventReceiver.ACTION_DOCK_SHOW_UI); - i.setClass(this, DockEventReceiver.class); - sendBroadcast(i); } return true; |