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

Commit 3072209e authored by Yuri Lin's avatar Yuri Lin Committed by Android (Google) Code Review
Browse files

Merge "Redirect to new modes page when modes_ui is on." into main

parents c1c2853c eff863e5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -7893,6 +7893,9 @@
    <!-- Sound: Title for the Do not Disturb option and associated settings page. [CHAR LIMIT=50]-->
    <string name="zen_mode_settings_title">Do Not Disturb</string>
    <!-- Sound: Title for the Modes option and associated settings page. [CHAR LIMIT=50]-->
    <string name="zen_modes_list_title">Priority Modes</string>
    <!-- Sound: Summary for the Do not Disturb option and associated settings page. [CHAR LIMIT=240]-->
    <string name="zen_mode_settings_summary">Only get notified by important people and apps</string>
+28 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2024 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"
                  android:title="@string/zen_modes_list_title" >

    <!-- TODO: b/333682392 - add strings for summary as appropriate -->

    <PreferenceCategory
        android:key="zen_modes_list">
        <!-- Preferences leading to rules are added in this PreferenceCategory. -->
    </PreferenceCategory>

</PreferenceScreen>
+25 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2024 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"
                  android:title="@string/zen_modes_list_title" >

    <!-- TODO: b/308819292 - implement page, delete this test preference -->
    <Preference
        android:key="zen_mode_test" />

</PreferenceScreen>
 No newline at end of file
+78 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.modes;

import android.app.AutomaticZenRule;
import android.app.settings.SettingsEnums;
import android.content.Context;

import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;

import java.util.ArrayList;
import java.util.List;

public class ZenModeFragment extends ZenModeFragmentBase {

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.modes_rule_settings;
    }

    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        // TODO: fill in with all the elements of this page. Each should be an instance of
        //       {@link AbstractZenModePreferenceController}.
        List<AbstractPreferenceController> prefControllers = new ArrayList<>();
        return prefControllers;
    }

    @Override
    public void onStart() {
        super.onStart();

        // Set title for the entire screen
        ZenMode mode = getMode();
        AutomaticZenRule azr = getAZR();
        if (mode == null || azr == null) {
            return;
        }
        getActivity().setTitle(azr.getName());

        // TODO: b/308819292 - implement the real screen!
        final PreferenceScreen screen = getPreferenceScreen();
        if (screen == null) {
            return;
        }

        Preference tmpPref = screen.findPreference("zen_mode_test");
        if (tmpPref == null) {
            return;
        }
        tmpPref.setTitle(azr.getTriggerDescription());
        tmpPref.setSummary("active?: " + mode.isActive());
    }

    @Override
    public int getMetricsCategory() {
        // TODO: b/332937635 - make this the correct metrics category
        return SettingsEnums.NOTIFICATION_ZEN_MODE_AUTOMATION;
    }
}
+65 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.modes;

import static com.android.settings.notification.modes.ZenModeFragmentBase.MODE_ID;

import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;

import com.android.settings.core.SubSettingLauncher;
import com.android.settings.notification.zen.ZenModeSettings;
import com.android.settingslib.RestrictedPreference;

/**
 * Preference representing a single mode item on the modes aggregator page. Clicking on this
 * preference leads to an individual mode's configuration page.
 */
public class ZenModeListPreference extends RestrictedPreference {
    final Context mContext;
    ZenMode mZenMode;

    ZenModeListPreference(Context context, ZenMode zenMode) {
        super(context);
        mContext = context;
        mZenMode = zenMode;
        setTitle(mZenMode.getRule().getName());
        setSummary((mZenMode.isActive() ? "ACTIVE" : "inactive") + ": "
                + mZenMode.getRule().getTriggerDescription());
    }

    @Override
    public void onClick() {
        // TODO: b/322373473 - This implementation is a hack that just leads to the old DND page
        //                     for manual only; remove this in favor of the real implementation.
        if (mZenMode.isManualDnd()) {
            new SubSettingLauncher(mContext)
                    .setDestination(ZenModeSettings.class.getName())
                    .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_ZEN_MODE)
                    .launch();
        } else {
            Bundle bundle = new Bundle();
            bundle.putString(MODE_ID, mZenMode.getId());
            new SubSettingLauncher(mContext)
                    .setDestination(ZenModeFragment.class.getName())
                    .setArguments(bundle)
                    .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_ZEN_MODE_AUTOMATION)
                    .launch();
        }

    }
}
Loading