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

Commit 20454ca6 authored by Danny Baumann's avatar Danny Baumann Committed by Michael Bestas
Browse files

Settings: Add setup UI for minimum delay between an app's notification sounds

Author: LuK1337 <priv.luk@gmail.com>
Date:   Tue Jul 23 20:28:56 2019 +0200

    Settings: Preserve sound timeout pref when showing legacy notification settings

    * Fixes : https://gitlab.com/LineageOS/issues/android/issues/936
              https://gitlab.com/LineageOS/issues/android/issues/939

    Change-Id: I61da5790fd09f6340c6fdbe89378114cd1e0dc5b

Author: Luk1337 <priv.luk@gmail.com>
Date:   Tue Aug 27 17:35:07 2019 +0800

    Settings: Remove sound timeout preference from channel_settings PreferenceScreen

    * Fixes: https://gitlab.com/LineageOS/issues/android/issues/1098

    Change-Id: I228fef766b70ad4f3fc47b83cf113517eb9db99f

Change-Id: I70e9cc308b4f7c7681457a0b09dd73e5d1aebb73
parent b1c57de9
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -15,6 +15,28 @@
     limitations under the License.
-->
<resources>
    <!-- Per-app notification settings: Timeout period in which the app notifications are muted. These are shown in a list dialog. -->
    <string-array name="app_notification_sound_timeout_entries" translatable="false">
        <item>@string/app_notification_sound_timeout_value_none</item>
        <item>@string/app_notification_sound_timeout_value_10_seconds</item>
        <item>@string/app_notification_sound_timeout_value_30_seconds</item>
        <item>@string/app_notification_sound_timeout_value_1_minute</item>
        <item>@string/app_notification_sound_timeout_value_5_minutes</item>
        <item>@string/app_notification_sound_timeout_value_15_minutes</item>
        <item>@string/app_notification_sound_timeout_value_30_minutes</item>
    </string-array>

    <!-- Do not translate. -->
    <string-array name="app_notification_sound_timeout_values" translatable="false">
        <item>0</item>
        <item>10000</item>
        <item>30000</item>
        <item>60000</item>
        <item>300000</item>
        <item>900000</item>
        <item>1800000</item>
    </string-array>

    <!-- Fingerprint sensor locations.  Devices should configure their sensor location using
         config_fingerprintSensorLocation -->
    <string-array name="security_settings_fingerprint_sensor_locations" translatable="false">
+11 −0
Original line number Diff line number Diff line
@@ -49,6 +49,17 @@
    <!-- Hostname setting -->
    <string name="device_hostname">Device hostname</string>

    <!-- Notification sound timeout -->
    <string name="app_notification_sound_timeout_title">Minimum time between notification sounds</string>
    <string name="app_notification_sound_timeout_summary_template">Allow sounds or vibration no more than once every <xliff:g id="duration">%1$s</xliff:g></string>
    <string name="app_notification_sound_timeout_value_none">No restriction</string>
    <string name="app_notification_sound_timeout_value_10_seconds">10 seconds</string>
    <string name="app_notification_sound_timeout_value_30_seconds">30 seconds</string>
    <string name="app_notification_sound_timeout_value_1_minute">1 minute</string>
    <string name="app_notification_sound_timeout_value_5_minutes">5 minutes</string>
    <string name="app_notification_sound_timeout_value_15_minutes">10 minutes</string>
    <string name="app_notification_sound_timeout_value_30_minutes">30 minutes</string>

    <!-- Proximity wake -->
    <string name="proximity_wake_title">Prevent accidental wake-up</string>
    <string name="proximity_wake_summary">Check the proximity sensor prior to waking up screen</string>
+8 −1
Original line number Diff line number Diff line
@@ -89,9 +89,16 @@
            settings:useAdditionalSummary="true"
            android:order="1001"
            settings:restrictedSwitchSummary="@string/enabled_by_admin" />
        <com.android.settings.RestrictedListPreference
            android:key="sound_timeout"
            android:title="@string/app_notification_sound_timeout_title"
            android:entries="@array/app_notification_sound_timeout_entries"
            android:entryValues="@array/app_notification_sound_timeout_values"
            android:order="1003"
            android:persistent="false" />
        <Preference
            android:key="app_link"
            android:order="1003"
            android:order="1004"
            android:title="@string/app_settings_link" />

    </PreferenceCategory>
+21 −0
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ public class NotificationBackend {
        row.userId = UserHandle.getUserId(row.uid);
        row.blockedChannelCount = getBlockedChannelCount(row.pkg, row.uid);
        row.channelCount = getChannelCount(row.pkg, row.uid);
        row.soundTimeout = getNotificationSoundTimeout(row.pkg, row.uid);
        recordAggregatedUsageEvents(context, row);
        return row;
    }
@@ -576,6 +577,25 @@ public class NotificationBackend {
        sm.requestPinShortcut(shortcutInfo, null);
    }

    public long getNotificationSoundTimeout(String pkg, int uid) {
        try {
            return sINM.getNotificationSoundTimeout(pkg, uid);
        } catch (Exception e) {
            Log.w(TAG, "Error calling NoMan", e);
            return 0;
        }
    }

    public boolean setNotificationSoundTimeout(String pkg, int uid, long timeout) {
        try {
            sINM.setNotificationSoundTimeout(pkg, uid, timeout);
            return true;
        } catch (Exception e) {
            Log.w(TAG, "Error calling NoMan", e);
            return false;
        }
    }

    /**
     * NotificationsSentState contains how often an app sends notifications and how recently it sent
     * one.
@@ -606,6 +626,7 @@ public class NotificationBackend {
        public int userId;
        public int blockedChannelCount;
        public int channelCount;
        public long soundTimeout;
        public Map<String, NotificationsSentState> sentByChannel;
        public NotificationsSentState sentByApp;
    }
+4 −1
Original line number Diff line number Diff line
@@ -41,7 +41,9 @@ public class AppNotificationSettings extends NotificationSettings {
    private static String KEY_ADVANCED_CATEGORY = "app_advanced";
    private static String KEY_BADGE = "badge";
    private static String KEY_APP_LINK = "app_link";
    private static String[] LEGACY_NON_ADVANCED_KEYS = {KEY_BADGE, KEY_APP_LINK};
    private static String KEY_SOUND_TIMEOUT = "sound_timeout";
    private static String[] LEGACY_NON_ADVANCED_KEYS =
            {KEY_BADGE, KEY_APP_LINK, KEY_SOUND_TIMEOUT};

    @Override
    public int getMetricsCategory() {
@@ -101,6 +103,7 @@ public class AppNotificationSettings extends NotificationSettings {
        mControllers.add(new HeaderPreferenceController(context, this));
        mControllers.add(new BlockPreferenceController(context, mDependentFieldListener, mBackend));
        mControllers.add(new BadgePreferenceController(context, mBackend));
        mControllers.add(new SoundTimeoutPreferenceController(context, mBackend));
        mControllers.add(new AllowSoundPreferenceController(
                context, mDependentFieldListener, mBackend));
        mControllers.add(new ImportancePreferenceController(
Loading