Loading AndroidManifest.xml +6 −1 Original line number Diff line number Diff line Loading @@ -2820,8 +2820,13 @@ </activity> <!-- Show channel-level notification settings (channel passed in as extras) --> <activity android:name="Settings$ChannelNotificationSettingsActivity" <activity android:name=".notification.app.ChannelPanelActivity" android:label="@string/notification_channel_title" android:theme="@style/Theme.Panel" android:launchMode="singleInstance" android:excludeFromRecents="true" android:noHistory="true" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="true"> <intent-filter android:priority="1"> <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" /> Loading res/layout/notification_channel_panel.xml 0 → 100644 +66 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_content" android:layout_height="@dimen/output_switcher_slice_max_height" android:background="@drawable/settings_panel_background" android:orientation="vertical" android:layout_width="match_parent"> <FrameLayout android:id="@android:id/list_container" android:layout_height="0px" android:layout_weight="1" android:layout_width="match_parent"/> <View xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/footer_divider" android:layout_width="match_parent" android:layout_height="@dimen/horizontal_divider_height" android:background="?android:attr/dividerHorizontal"/> <LinearLayout android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="8dp" android:paddingBottom="8dp"> <Button android:id="@+id/see_more" style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginStart="12dp" android:text="@string/see_more"/> <Space android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <Button android:id="@+id/done" style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginEnd="12dp" android:text="@string/done"/> </LinearLayout> </LinearLayout> No newline at end of file res/xml/conversation_notification_settings.xml +0 −5 Original line number Diff line number Diff line Loading @@ -62,10 +62,6 @@ android:key="block_desc" settings:allowDividerAbove="false"/> <PreferenceCategory android:key="channel_advanced" android:order="50" settings:initialExpandedChildrenCount="0"> <!-- peeking --> <com.android.settingslib.RestrictedSwitchPreference Loading Loading @@ -107,6 +103,5 @@ android:icon="@drawable/ic_volume_ringer_vibrate" android:title="@string/notification_vibrate_title" settings:useAdditionalSummary="true" /> </PreferenceCategory> </PreferenceScreen> src/com/android/settings/notification/app/ChannelNotificationSettings.java +7 −2 Original line number Diff line number Diff line Loading @@ -68,12 +68,16 @@ public class ChannelNotificationSettings extends NotificationSettings { if (mChannel != null && !TextUtils.isEmpty(mChannel.getConversationId()) && !mChannel.isDemoted()) { startActivity(new SubSettingLauncher(mContext) Intent intent = new SubSettingLauncher(mContext) .setDestination(ConversationNotificationSettings.class.getName()) .setArguments(getArguments()) .setExtras(getIntent() != null ? getIntent().getExtras(): null) .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_TOPIC_NOTIFICATION) .toIntent()); .toIntent(); if (mPreferenceFilter != null) { intent.setClass(mContext, ChannelPanelActivity.class); } startActivity(intent); finish(); return; } Loading @@ -84,6 +88,7 @@ public class ChannelNotificationSettings extends NotificationSettings { controller.displayPreference(getPreferenceScreen()); } updatePreferenceStates(); animatePanel(); } @Override Loading src/com/android/settings/notification/app/ChannelPanelActivity.java 0 → 100644 +111 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 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.app; import android.app.settings.SettingsEnums; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.provider.Settings; import android.util.Log; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.HideNonSystemOverlayMixin; import com.android.settings.core.SubSettingLauncher; /** * Dialog Activity to host channel settings */ public class ChannelPanelActivity extends FragmentActivity { private static final String TAG = "ChannelPanelActivity"; final Bundle mBundle = new Bundle(); NotificationSettings mPanelFragment; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!getIntent().hasExtra(Settings.EXTRA_CHANNEL_FILTER_LIST)) { launchFullSettings(); } getApplicationContext().getTheme().rebase(); createOrUpdatePanel(); getLifecycle().addObserver(new HideNonSystemOverlayMixin(this)); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); createOrUpdatePanel(); } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); } private void launchFullSettings() { Bundle extras = getIntent().getExtras(); extras.remove(Settings.EXTRA_CHANNEL_FILTER_LIST); startActivity(new SubSettingLauncher(this) .setDestination(ChannelNotificationSettings.class.getName()) .setExtras(extras) .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_TOPIC_NOTIFICATION) .toIntent()); finish(); } private void createOrUpdatePanel() { final Intent callingIntent = getIntent(); if (callingIntent == null) { Log.e(TAG, "Null intent, closing Panel Activity"); finish(); return; } final FragmentManager fragmentManager = getSupportFragmentManager(); setContentView(R.layout.notification_channel_panel); // Move the window to the bottom of screen, and make it take up the entire screen width. final Window window = getWindow(); window.setGravity(Gravity.BOTTOM); window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); findViewById(R.id.done).setOnClickListener(v -> finish()); findViewById(R.id.see_more).setOnClickListener(v -> launchFullSettings()); mPanelFragment = callingIntent.hasExtra(Settings.EXTRA_CONVERSATION_ID) ? new ConversationNotificationSettings() : new ChannelNotificationSettings(); mPanelFragment.setArguments(new Bundle(mBundle)); fragmentManager.beginTransaction().replace( android.R.id.list_container, mPanelFragment).commit(); } } Loading
AndroidManifest.xml +6 −1 Original line number Diff line number Diff line Loading @@ -2820,8 +2820,13 @@ </activity> <!-- Show channel-level notification settings (channel passed in as extras) --> <activity android:name="Settings$ChannelNotificationSettingsActivity" <activity android:name=".notification.app.ChannelPanelActivity" android:label="@string/notification_channel_title" android:theme="@style/Theme.Panel" android:launchMode="singleInstance" android:excludeFromRecents="true" android:noHistory="true" android:configChanges="orientation|keyboardHidden|screenSize" android:exported="true"> <intent-filter android:priority="1"> <action android:name="android.settings.CHANNEL_NOTIFICATION_SETTINGS" /> Loading
res/layout/notification_channel_panel.xml 0 → 100644 +66 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2021 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. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_content" android:layout_height="@dimen/output_switcher_slice_max_height" android:background="@drawable/settings_panel_background" android:orientation="vertical" android:layout_width="match_parent"> <FrameLayout android:id="@android:id/list_container" android:layout_height="0px" android:layout_weight="1" android:layout_width="match_parent"/> <View xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/footer_divider" android:layout_width="match_parent" android:layout_height="@dimen/horizontal_divider_height" android:background="?android:attr/dividerHorizontal"/> <LinearLayout android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="8dp" android:paddingBottom="8dp"> <Button android:id="@+id/see_more" style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginStart="12dp" android:text="@string/see_more"/> <Space android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <Button android:id="@+id/done" style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored" android:layout_width="wrap_content" android:layout_height="48dp" android:layout_marginEnd="12dp" android:text="@string/done"/> </LinearLayout> </LinearLayout> No newline at end of file
res/xml/conversation_notification_settings.xml +0 −5 Original line number Diff line number Diff line Loading @@ -62,10 +62,6 @@ android:key="block_desc" settings:allowDividerAbove="false"/> <PreferenceCategory android:key="channel_advanced" android:order="50" settings:initialExpandedChildrenCount="0"> <!-- peeking --> <com.android.settingslib.RestrictedSwitchPreference Loading Loading @@ -107,6 +103,5 @@ android:icon="@drawable/ic_volume_ringer_vibrate" android:title="@string/notification_vibrate_title" settings:useAdditionalSummary="true" /> </PreferenceCategory> </PreferenceScreen>
src/com/android/settings/notification/app/ChannelNotificationSettings.java +7 −2 Original line number Diff line number Diff line Loading @@ -68,12 +68,16 @@ public class ChannelNotificationSettings extends NotificationSettings { if (mChannel != null && !TextUtils.isEmpty(mChannel.getConversationId()) && !mChannel.isDemoted()) { startActivity(new SubSettingLauncher(mContext) Intent intent = new SubSettingLauncher(mContext) .setDestination(ConversationNotificationSettings.class.getName()) .setArguments(getArguments()) .setExtras(getIntent() != null ? getIntent().getExtras(): null) .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_TOPIC_NOTIFICATION) .toIntent()); .toIntent(); if (mPreferenceFilter != null) { intent.setClass(mContext, ChannelPanelActivity.class); } startActivity(intent); finish(); return; } Loading @@ -84,6 +88,7 @@ public class ChannelNotificationSettings extends NotificationSettings { controller.displayPreference(getPreferenceScreen()); } updatePreferenceStates(); animatePanel(); } @Override Loading
src/com/android/settings/notification/app/ChannelPanelActivity.java 0 → 100644 +111 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 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.app; import android.app.settings.SettingsEnums; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.provider.Settings; import android.util.Log; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.HideNonSystemOverlayMixin; import com.android.settings.core.SubSettingLauncher; /** * Dialog Activity to host channel settings */ public class ChannelPanelActivity extends FragmentActivity { private static final String TAG = "ChannelPanelActivity"; final Bundle mBundle = new Bundle(); NotificationSettings mPanelFragment; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!getIntent().hasExtra(Settings.EXTRA_CHANNEL_FILTER_LIST)) { launchFullSettings(); } getApplicationContext().getTheme().rebase(); createOrUpdatePanel(); getLifecycle().addObserver(new HideNonSystemOverlayMixin(this)); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); createOrUpdatePanel(); } @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); } private void launchFullSettings() { Bundle extras = getIntent().getExtras(); extras.remove(Settings.EXTRA_CHANNEL_FILTER_LIST); startActivity(new SubSettingLauncher(this) .setDestination(ChannelNotificationSettings.class.getName()) .setExtras(extras) .setSourceMetricsCategory(SettingsEnums.NOTIFICATION_TOPIC_NOTIFICATION) .toIntent()); finish(); } private void createOrUpdatePanel() { final Intent callingIntent = getIntent(); if (callingIntent == null) { Log.e(TAG, "Null intent, closing Panel Activity"); finish(); return; } final FragmentManager fragmentManager = getSupportFragmentManager(); setContentView(R.layout.notification_channel_panel); // Move the window to the bottom of screen, and make it take up the entire screen width. final Window window = getWindow(); window.setGravity(Gravity.BOTTOM); window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); findViewById(R.id.done).setOnClickListener(v -> finish()); findViewById(R.id.see_more).setOnClickListener(v -> launchFullSettings()); mPanelFragment = callingIntent.hasExtra(Settings.EXTRA_CONVERSATION_ID) ? new ConversationNotificationSettings() : new ChannelNotificationSettings(); mPanelFragment.setArguments(new Bundle(mBundle)); fragmentManager.beginTransaction().replace( android.R.id.list_container, mPanelFragment).commit(); } }