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

Commit 7e1a50b8 authored by Sean Stout's avatar Sean Stout Committed by Android (Google) Code Review
Browse files

Merge "Use ListPreference for Gradually increase volume and snooze." into ub-deskclock-huddle

parents 2ac7b29f 8fde4f24
Loading
Loading
Loading
Loading
+105 −0
Original line number Diff line number Diff line
@@ -277,6 +277,111 @@
        <item>-1</item> <!-- Off -->
    </string-array>

    <!-- Entries listed in the ListPreference when invoking gradually increase
     volume preferences. -->
    <string-array name="crescendo_entries">
        <item>Off</item>
        <item>5 seconds</item>
        <item>10 seconds</item>
        <item>15 seconds</item>
        <item>20 seconds</item>
        <item>25 seconds</item>
        <item>30 seconds</item>
        <item>35 seconds</item>
        <item>40 seconds</item>
        <item>45 seconds</item>
        <item>50 seconds</item>
        <item>55 seconds</item>
        <item>60 seconds</item>
    </string-array>

    <!-- Values that are retrieved from the ListPreference. These must match
         the crescendo_entries above. -->
    <string-array name="crescendo_values" translatable="false">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>15</item>
        <item>20</item>
        <item>25</item>
        <item>30</item>
        <item>35</item>
        <item>40</item>
        <item>45</item>
        <item>50</item>
        <item>55</item>
        <item>60</item>
    </string-array>

    <!-- Entries listed in the ListPreference when invoking the snooze duration preference -->
    <string-array name="snooze_duration_entries">
        <item>1 minute</item>
        <item>2 minutes</item>
        <item>3 minutes</item>
        <item>4 minutes</item>
        <item>5 minutes</item>
        <item>6 minutes</item>
        <item>7 minutes</item>
        <item>8 minutes</item>
        <item>9 minutes</item>
        <item>10 minutes</item>
        <item>11 minutes</item>
        <item>12 minutes</item>
        <item>13 minutes</item>
        <item>14 minutes</item>
        <item>15 minutes</item>
        <item>16 minutes</item>
        <item>17 minutes</item>
        <item>18 minutes</item>
        <item>19 minutes</item>
        <item>20 minutes</item>
        <item>21 minutes</item>
        <item>22 minutes</item>
        <item>23 minutes</item>
        <item>24 minutes</item>
        <item>25 minutes</item>
        <item>26 minutes</item>
        <item>27 minutes</item>
        <item>28 minutes</item>
        <item>29 minutes</item>
        <item>30 minutes</item>
    </string-array>

    <!-- Values that are retrieved from the ListPreference. These must match
         the snooze_duration_entries above. -->
    <string-array name="snooze_duration_values" translatable="false">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
        <item>9</item>
        <item>10</item>
        <item>11</item>
        <item>12</item>
        <item>13</item>
        <item>14</item>
        <item>15</item>
        <item>16</item>
        <item>17</item>
        <item>18</item>
        <item>19</item>
        <item>20</item>
        <item>21</item>
        <item>22</item>
        <item>23</item>
        <item>24</item>
        <item>25</item>
        <item>26</item>
        <item>27</item>
        <item>28</item>
        <item>29</item>
        <item>30</item>
    </string-array>

    <!-- Week start day preference title. -->
    <string name="week_start_title">Start week on</string>

+41 −31
Original line number Diff line number Diff line
@@ -18,24 +18,24 @@
    <PreferenceCategory
        android:title="@string/clock_settings">
        <ListPreference
            android:key="clock_style"
            android:title="@string/clock_style"
            android:defaultValue="@string/default_clock_style"
            android:dialogTitle="@string/clock_style"
            android:entries="@array/clock_style_entries"
            android:entryValues="@array/clock_style_values"
            android:defaultValue="@string/default_clock_style"
            android:dialogTitle="@string/clock_style" />
            android:key="clock_style"
            android:title="@string/clock_style" />

        <SwitchPreferenceCompat
            android:defaultValue="true"
            android:key="automatic_home_clock"
            android:title="@string/automatic_home_clock"
            android:summary="@string/automatic_home_clock_summary"
            android:defaultValue="true" />
            android:title="@string/automatic_home_clock" />

        <ListPreference
            android:key="home_time_zone"
            android:dialogTitle="@string/home_time_zone_title"
            android:entries="@array/timezone_labels"
            android:entryValues="@array/timezone_values"
            android:dialogTitle="@string/home_time_zone_title"
            android:key="home_time_zone"
            android:title="@string/home_time_zone" />

        <Preference
@@ -46,42 +46,48 @@
    <PreferenceCategory
        android:title="@string/alarm_settings">
        <ListPreference
            android:key="auto_silence"
            android:title="@string/auto_silence_title"
            android:defaultValue="10"
            android:dialogTitle="@string/auto_silence_title"
            android:entries="@array/auto_silence_entries"
            android:entryValues="@array/auto_silence_values"
            android:defaultValue="10"
            android:dialogTitle="@string/auto_silence_title" />
            android:key="auto_silence"
            android:title="@string/auto_silence_title" />

        <com.android.deskclock.settings.SnoozeLengthDialogPreference
        <ListPreference
            android:defaultValue="10"
            android:dialogTitle="@string/snooze_duration_title"
            android:entries="@array/snooze_duration_entries"
            android:entryValues="@array/snooze_duration_values"
            android:key="snooze_duration"
            android:title="@string/snooze_duration_title"
            android:dialogLayout="@layout/snooze_length_picker" />
            android:title="@string/snooze_duration_title" />

        <com.android.deskclock.settings.AlarmVolumePreference
            android:key="volume_setting"
            android:title="@string/alarm_volume_title"
            android:layout="@layout/alarm_volume_preference" />
            android:layout="@layout/alarm_volume_preference"
            android:title="@string/alarm_volume_title" />

        <com.android.deskclock.settings.CrescendoLengthDialogPreference
        <ListPreference
            android:defaultValue="0"
            android:dialogTitle="@string/crescendo_duration_title"
            android:entries="@array/crescendo_entries"
            android:entryValues="@array/crescendo_values"
            android:key="alarm_crescendo_duration"
            android:title="@string/crescendo_duration_title"
            android:dialogLayout="@layout/crescendo_length_picker" />
            android:title="@string/crescendo_duration_title" />

        <ListPreference
            android:key="volume_button_setting"
            android:title="@string/volume_button_setting_title"
            android:defaultValue="0"
            android:dialogTitle="@string/volume_button_setting_title"
            android:entries="@array/volume_button_setting_entries"
            android:entryValues="@array/volume_button_setting_values"
            android:defaultValue="0" />
            android:key="volume_button_setting"
            android:title="@string/volume_button_setting_title" />

        <ListPreference
            android:key="week_start"
            android:title="@string/week_start_title"
            android:dialogTitle="@string/week_start_title"
            android:entries="@array/week_start_entries"
            android:entryValues="@array/week_start_values" />
            android:entryValues="@array/week_start_values"
            android:key="week_start"
            android:title="@string/week_start_title" />
    </PreferenceCategory>

    <PreferenceCategory
@@ -90,15 +96,19 @@
            android:key="timer_ringtone"
            android:title="@string/timer_ringtone_title" />

        <com.android.deskclock.settings.CrescendoLengthDialogPreference
        <ListPreference
            android:defaultValue="0"
            android:dialogTitle="@string/crescendo_duration_title"
            android:entries="@array/crescendo_entries"
            android:entryValues="@array/crescendo_values"
            android:key="timer_crescendo_duration"
            android:title="@string/crescendo_duration_title"
            android:dialogLayout="@layout/crescendo_length_picker" />
            android:title="@string/crescendo_duration_title" />


        <SwitchPreferenceCompat
            android:defaultValue="false"
            android:key="timer_vibrate"
            android:title="@string/timer_vibrate_title"
            android:defaultValue="false" />
            android:title="@string/timer_vibrate_title" />
    </PreferenceCategory>

</PreferenceScreen>
+0 −105
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 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.deskclock.settings;

import android.os.Bundle;
import android.support.v14.preference.PreferenceDialogFragment;
import android.support.v7.preference.Preference;
import android.view.View;
import android.widget.NumberPicker;
import android.widget.TextView;

import com.android.deskclock.NumberPickerCompat;
import com.android.deskclock.R;
import com.android.deskclock.uidata.UiDataModel;

public class CrescendoLengthDialogFragment extends PreferenceDialogFragment {

    private static final int CRESCENDO_TIME_STEP = 5;

    private NumberPickerCompat mNumberPickerView;

    public static PreferenceDialogFragment newInstance(Preference preference) {
        final PreferenceDialogFragment fragment = new CrescendoLengthDialogFragment();

        final Bundle bundle = new Bundle();
        bundle.putString(ARG_KEY, preference.getKey());
        fragment.setArguments(bundle);

        return fragment;
    }

    @Override
    protected void onBindDialogView(View view) {
        final CrescendoLengthDialogPreference preference =
                (CrescendoLengthDialogPreference) getPreference();
        final int crescendoSeconds = preference.getPersistedCrescendoLength();

        final TextView unitView = (TextView) view.findViewById(R.id.title);
        unitView.setText(R.string.crescendo_picker_label);
        updateUnits(unitView, crescendoSeconds);

        final String[] displayedValues = new String[13];
        displayedValues[0] = getString(R.string.no_crescendo_duration);
        for (int i = 1; i < displayedValues.length; i++) {
            final int length = i * CRESCENDO_TIME_STEP;
            displayedValues[i] = UiDataModel.getUiDataModel().getFormattedNumber(length);
        }

        mNumberPickerView = (NumberPickerCompat) view.findViewById(R.id.seconds_picker);
        mNumberPickerView.setDisplayedValues(displayedValues);
        mNumberPickerView.setMinValue(0);
        mNumberPickerView.setMaxValue(displayedValues.length - 1);
        mNumberPickerView.setValue(crescendoSeconds / CRESCENDO_TIME_STEP);

        mNumberPickerView.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                updateUnits(unitView, newVal);
            }
        });
        mNumberPickerView.setOnAnnounceValueChangedListener(
                new NumberPickerCompat.OnAnnounceValueChangedListener() {
            @Override
            public void onAnnounceValueChanged(NumberPicker picker, int value,
                    String displayedValue) {
                final String announceString;
                if (value == 0) {
                    announceString = getString(R.string.no_crescendo_duration);
                } else {
                    announceString = getString(R.string.crescendo_duration, displayedValue);
                }
                picker.announceForAccessibility(announceString);
            }
        });
    }

    @Override
    public void onDialogClosed(boolean positiveResult) {
        if (positiveResult) {
            final CrescendoLengthDialogPreference preference =
                    (CrescendoLengthDialogPreference) getPreference();
            preference.persistCrescendoLength(mNumberPickerView.getValue() * CRESCENDO_TIME_STEP);
            preference.updateSummary();
        }
    }

    private void updateUnits(TextView unitView, int crescendoSeconds) {
        final int visibility = crescendoSeconds == 0 ? View.INVISIBLE : View.VISIBLE;
        unitView.setVisibility(visibility);
    }
}
+0 −51
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 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.deskclock.settings;

import android.content.Context;
import android.support.v7.preference.DialogPreference;
import android.util.AttributeSet;

import com.android.deskclock.R;
import com.android.deskclock.uidata.UiDataModel;

public class CrescendoLengthDialogPreference extends DialogPreference {

    private static final String DEFAULT_CRESCENDO_TIME = "0";

    public CrescendoLengthDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public int getPersistedCrescendoLength() {
        return Integer.parseInt(getPersistedString(DEFAULT_CRESCENDO_TIME));
    }

    public void persistCrescendoLength(int crescendoSeconds) {
        persistString(Integer.toString(crescendoSeconds));
    }

    public void updateSummary() {
        final int crescendoSeconds = getPersistedCrescendoLength();
        if (crescendoSeconds == 0) {
            setSummary(getContext().getString(R.string.no_crescendo_duration));
        } else {
            final String length = UiDataModel.getUiDataModel().getFormattedNumber(crescendoSeconds);
            setSummary(getContext().getString(R.string.crescendo_duration, length));
        }
    }
}
+21 −47
Original line number Diff line number Diff line
@@ -166,54 +166,28 @@ public final class SettingsActivity extends BaseActivity {
        }

        @Override
        public void onDisplayPreferenceDialog(Preference preference) {
            final String key = preference.getKey();
            switch (key) {
                case KEY_ALARM_SNOOZE:
                    showDialog(SnoozeLengthDialogFragment.newInstance(preference));
                    break;
        public boolean onPreferenceChange(Preference pref, Object newValue) {
            switch (pref.getKey()) {
                case KEY_ALARM_CRESCENDO:
                case KEY_VOLUME_BUTTONS:
                case KEY_CLOCK_STYLE:
                case KEY_HOME_TZ:
                case KEY_WEEK_START:
                case KEY_ALARM_SNOOZE:
                case KEY_TIMER_CRESCENDO:
                    showDialog(CrescendoLengthDialogFragment.newInstance(preference));
                    final ListPreference preference = (ListPreference) pref;
                    final int index = preference.findIndexOfValue((String) newValue);
                    preference.setSummary(preference.getEntries()[index]);
                    break;
                default:
                    super.onDisplayPreferenceDialog(preference);
            }
        }

        @Override
        public boolean onPreferenceChange(Preference pref, Object newValue) {
            final int idx;
            switch (pref.getKey()) {
                case KEY_AUTO_SILENCE:
                    String delay = (String) newValue;
                    final String delay = (String) newValue;
                    updateAutoSnoozeSummary((ListPreference) pref, delay);
                    break;
                case KEY_CLOCK_STYLE:
                    final ListPreference clockStylePref = (ListPreference) pref;
                    idx = clockStylePref.findIndexOfValue((String) newValue);
                    clockStylePref.setSummary(clockStylePref.getEntries()[idx]);
                    break;
                case KEY_HOME_TZ:
                    final ListPreference homeTimezonePref = (ListPreference) pref;
                    idx = homeTimezonePref.findIndexOfValue((String) newValue);
                    homeTimezonePref.setSummary(homeTimezonePref.getEntries()[idx]);
                    break;
                case KEY_AUTO_HOME_CLOCK:
                    final boolean autoHomeClockEnabled = ((TwoStatePreference) pref).isChecked();
                    final Preference homeTimeZonePref = findPreference(KEY_HOME_TZ);
                    homeTimeZonePref.setEnabled(!autoHomeClockEnabled);
                    break;
                case KEY_VOLUME_BUTTONS:
                    final ListPreference volumeButtonsPref = (ListPreference) pref;
                    final int index = volumeButtonsPref.findIndexOfValue((String) newValue);
                    volumeButtonsPref.setSummary(volumeButtonsPref.getEntries()[index]);
                    break;
                case KEY_WEEK_START:
                    final ListPreference weekStartPref = (ListPreference) pref;
                    idx = weekStartPref.findIndexOfValue((String) newValue);
                    weekStartPref.setSummary(weekStartPref.getEntries()[idx]);
                    break;
                case KEY_TIMER_VIBRATE:
                    final TwoStatePreference timerVibratePref = (TwoStatePreference) pref;
                    DataModel.getDataModel().setTimerVibrate(timerVibratePref.isChecked());
@@ -327,17 +301,12 @@ public final class SettingsActivity extends BaseActivity {

            final ListPreference homeTimezonePref = (ListPreference) findPreference(KEY_HOME_TZ);
            homeTimezonePref.setEnabled(autoHomeClockEnabled);
            homeTimezonePref.setSummary(homeTimezonePref.getEntry());
            homeTimezonePref.setOnPreferenceChangeListener(this);
            refreshListPreference(homeTimezonePref);

            final ListPreference volumeButtonsPref =
                    (ListPreference) findPreference(KEY_VOLUME_BUTTONS);
            volumeButtonsPref.setSummary(volumeButtonsPref.getEntry());
            volumeButtonsPref.setOnPreferenceChangeListener(this);

            ((SnoozeLengthDialogPreference) findPreference(KEY_ALARM_SNOOZE)).updateSummary();
            ((CrescendoLengthDialogPreference) findPreference(KEY_ALARM_CRESCENDO)).updateSummary();
            ((CrescendoLengthDialogPreference) findPreference(KEY_TIMER_CRESCENDO)).updateSummary();
            refreshListPreference((ListPreference) findPreference(KEY_ALARM_CRESCENDO));
            refreshListPreference((ListPreference) findPreference(KEY_TIMER_CRESCENDO));
            refreshListPreference((ListPreference) findPreference(KEY_ALARM_SNOOZE));
            refreshListPreference((ListPreference) findPreference(KEY_VOLUME_BUTTONS));

            final Preference dateAndTimeSetting = findPreference(KEY_DATE_TIME);
            dateAndTimeSetting.setOnPreferenceClickListener(this);
@@ -357,6 +326,11 @@ public final class SettingsActivity extends BaseActivity {
            timerRingtonePref.setSummary(DataModel.getDataModel().getTimerRingtoneTitle());
        }

        private void refreshListPreference(ListPreference preference) {
            preference.setSummary(preference.getEntry());
            preference.setOnPreferenceChangeListener(this);
        }

        private void updateAutoSnoozeSummary(ListPreference listPref, String delay) {
            int i = Integer.parseInt(delay);
            if (i == -1) {
Loading