Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb9f3517 authored by Dan Sandler's avatar Dan Sandler
Browse files

Switch to vibrate (or slash-bell) icon at ringer volume 0.

Bug: 16900054
Change-Id: If94a18a7cac596c0f4c33421b642f96dcf0280fd
parent 8007caa4
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
<!--
Copyright (C) 2014 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.
-->
<!-- shrink ic_audio_ring_notif from 32dp to 24dp using insets -->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:drawable="@*android:drawable/ic_audio_ring_notif"
        android:insetLeft="4dp"
        android:insetRight="4dp"
        android:insetTop="4dp"
        android:insetBottom="4dp"
        />
+23 −0
Original line number Diff line number Diff line
<!--
Copyright (C) 2014 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.
-->
<!-- shrink ic_audio_ring_notif_mute from 32dp to 24dp using insets -->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:drawable="@*android:drawable/ic_audio_ring_notif_mute"
        android:insetLeft="4dp"
        android:insetRight="4dp"
        android:insetTop="4dp"
        android:insetBottom="4dp"
        />
+23 −0
Original line number Diff line number Diff line
<!--
Copyright (C) 2014 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.
-->
<!-- shrink ic_audio_ring_notif_vibrate from 32dp to 24dp using insets -->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:drawable="@*android:drawable/ic_audio_ring_notif_vibrate"
        android:insetLeft="4dp"
        android:insetRight="4dp"
        android:insetTop="4dp"
        android:insetBottom="4dp"
        />
+2 −2
Original line number Diff line number Diff line
@@ -39,13 +39,13 @@
        <!-- Ring volume -->
        <com.android.settings.notification.VolumeSeekBarPreference
                android:key="ring_volume"
                android:icon="@*android:drawable/ic_audio_ring_notif"
                android:icon="@drawable/ring_notif"
                android:title="@string/ring_volume_option_title" />

        <!-- Notification volume -->
        <com.android.settings.notification.VolumeSeekBarPreference
                android:key="notification_volume"
                android:icon="@*android:drawable/ic_audio_ring_notif"
                android:icon="@drawable/ring_notif"
                android:title="@string/notification_volume_option_title" />

        <!-- Also vibrate for calls -->
+37 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Vibrator;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceCategory;
@@ -40,6 +41,7 @@ import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.util.Log;

import android.widget.SeekBar;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
@@ -76,6 +78,8 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
    private Context mContext;
    private PackageManager mPM;
    private boolean mVoiceCapable;
    private Vibrator mVibrator;
    private VolumeSeekBarPreference mRingOrNotificationPreference;

    private Preference mPhoneRingtonePreference;
    private Preference mNotificationRingtonePreference;
@@ -93,15 +97,23 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
        mPM = mContext.getPackageManager();
        mVoiceCapable = Utils.isVoiceCapable(mContext);
        mSecure = new LockPatternUtils(getActivity()).isSecure();

        mVibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
        if (mVibrator != null && !mVibrator.hasVibrator()) {
            mVibrator = null;
        }

        addPreferencesFromResource(R.xml.notification_settings);

        final PreferenceCategory sound = (PreferenceCategory) findPreference(KEY_SOUND);
        initVolumePreference(KEY_MEDIA_VOLUME, AudioManager.STREAM_MUSIC);
        initVolumePreference(KEY_ALARM_VOLUME, AudioManager.STREAM_ALARM);
        if (mVoiceCapable) {
            mRingOrNotificationPreference =
                    initVolumePreference(KEY_RING_VOLUME, AudioManager.STREAM_RING);
            sound.removePreference(sound.findPreference(KEY_NOTIFICATION_VOLUME));
        } else {
            mRingOrNotificationPreference =
                    initVolumePreference(KEY_NOTIFICATION_VOLUME, AudioManager.STREAM_NOTIFICATION);
            sound.removePreference(sound.findPreference(KEY_RING_VOLUME));
        }
@@ -134,10 +146,19 @@ public class NotificationSettings extends SettingsPreferenceFragment implements

    // === Volumes ===

    private void initVolumePreference(String key, int stream) {
    private VolumeSeekBarPreference initVolumePreference(String key, int stream) {
        final VolumeSeekBarPreference volumePref = (VolumeSeekBarPreference) findPreference(key);
        volumePref.setStream(stream);
        volumePref.setCallback(mVolumeCallback);
        volumePref.setStream(stream);
        return volumePref;
    }

    private void updateRingOrNotificationIcon(int progress) {
        mRingOrNotificationPreference.showIcon(progress > 0
                    ? R.drawable.ring_notif
                    : (mVibrator == null
                            ? R.drawable.ring_notif_mute
                            : R.drawable.ring_notif_vibrate));
    }

    private final class VolumePreferenceCallback implements VolumeSeekBarPreference.Callback {
@@ -155,6 +176,14 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
            }
        }

        @Override
        public void onStreamValueChanged(int stream, int progress) {
            if (stream == AudioManager.STREAM_RING) {
                mHandler.removeMessages(H.UPDATE_RINGER_ICON);
                mHandler.obtainMessage(H.UPDATE_RINGER_ICON, progress, 0).sendToTarget();
            }
        }

        public void stopSample() {
            if (mCurrent != null) {
                mCurrent.stopSample();
@@ -426,6 +455,7 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
        private static final int UPDATE_PHONE_RINGTONE = 1;
        private static final int UPDATE_NOTIFICATION_RINGTONE = 2;
        private static final int STOP_SAMPLE = 3;
        private static final int UPDATE_RINGER_ICON = 4;

        private H() {
            super(Looper.getMainLooper());
@@ -443,6 +473,9 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
                case STOP_SAMPLE:
                    mVolumeCallback.stopSample();
                    break;
                case UPDATE_RINGER_ICON:
                    updateRingOrNotificationIcon(msg.arg1);
                    break;
            }
        }
    }
Loading