am c5ab362a: Add a setting to change the default ringtone.

Merge commit 'c5ab362aa8bd98d8a160a72dc8790103b9d6596f' into eclair-mr2-plus-aosp

* commit 'c5ab362aa8bd98d8a160a72dc8790103b9d6596f':
  Add a setting to change the default ringtone.
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a5207d3..47251f8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -205,6 +205,9 @@
     <!-- The summary of the side button setting. -->
     <string name="volume_button_setting_summary">Set the desired behavior of the side buttons when pressed during an alarm</string>
 
+    <!-- Title of the ringtone setting. -->
+    <string name="default_ringtone_setting_title">Set default ringtone</string>
+
     <!-- Entries listed in the setting for the side-button action. -->
     <string-array name="volume_button_setting_entries">
       <item>None</item>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index e49126c..e034f1d 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -46,4 +46,12 @@
         android:summary="@string/volume_button_setting_summary"
         android:defaultValue="2" />
 
+    <com.android.alarmclock.AlarmPreference
+        android:key="default_ringtone"
+        android:title="@string/default_ringtone_setting_title"
+        android:ringtoneType="alarm"
+        android:showDefault="false"
+        android:persistent="false"
+        android:showSilent="true" />
+
 </PreferenceScreen>
diff --git a/src/com/android/alarmclock/AlarmPreference.java b/src/com/android/alarmclock/AlarmPreference.java
index cb0e3f5..e4aee40 100644
--- a/src/com/android/alarmclock/AlarmPreference.java
+++ b/src/com/android/alarmclock/AlarmPreference.java
@@ -21,6 +21,7 @@
 import android.media.RingtoneManager;
 import android.net.Uri;
 import android.preference.RingtonePreference;
+import android.provider.Settings;
 import android.util.AttributeSet;
 
 /**
@@ -29,6 +30,7 @@
  */
 public class AlarmPreference extends RingtonePreference {
     private Uri mAlert;
+    private boolean mChangeDefault;
 
     public AlarmPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -37,6 +39,12 @@
     @Override
     protected void onSaveRingtone(Uri ringtoneUri) {
         setAlert(ringtoneUri);
+        if (mChangeDefault) {
+            // Update the default alert in the system.
+            Settings.System.putString(getContext().getContentResolver(),
+                    Settings.System.ALARM_ALERT,
+                    ringtoneUri == null ? null : ringtoneUri.toString());
+        }
     }
 
     @Override
@@ -62,4 +70,8 @@
         }
         return Alarms.ALARM_ALERT_SILENT;
     }
+
+    public void setChangeDefault() {
+        mChangeDefault = true;
+    }
 }
diff --git a/src/com/android/alarmclock/SettingsActivity.java b/src/com/android/alarmclock/SettingsActivity.java
index f0b97fd..bebfda8 100644
--- a/src/com/android/alarmclock/SettingsActivity.java
+++ b/src/com/android/alarmclock/SettingsActivity.java
@@ -16,13 +16,17 @@
 
 package com.android.alarmclock;
 
+import android.content.SharedPreferences;
 import android.media.AudioManager;
+import android.media.RingtoneManager;
+import android.net.Uri;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceScreen;
+import android.preference.RingtonePreference;
 import android.provider.Settings;
 
 /**
@@ -40,11 +44,22 @@
             "snooze_duration";
     static final String KEY_VOLUME_BEHAVIOR =
             "volume_button_setting";
+    static final String KEY_DEFAULT_RINGTONE =
+            "default_ringtone";
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.settings);
+
+        final AlarmPreference ringtone =
+                (AlarmPreference) findPreference(KEY_DEFAULT_RINGTONE);
+        Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this,
+                RingtoneManager.TYPE_ALARM);
+        if (alert != null) {
+            ringtone.setAlert(alert);
+        }
+        ringtone.setChangeDefault();
     }
 
     @Override