Modify AppHeaderController to provide UI for notif settings
- The AppHeaderController is no longer a singleton. Each time appheader should be updated we will create a new controller. It acts as a builder/mutator, user provides customizable inputs, and the controller will bind everything to UI when calling done(). Bug: 32442716 Test: RunSettingsRoboTests Change-Id: Icfc5bcd8bc170a02b57432d864eaddf71db0d5b4
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.notification;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
@@ -24,20 +25,25 @@ import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.support.v7.preference.PreferenceCategory;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.AppHeader;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.applications.AppHeaderController;
|
||||
import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||
import com.android.settings.notification.NotificationBackend.AppRow;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
import com.android.settingslib.RestrictedSwitchPreference;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/** These settings are per app, so should not be returned in global search results. */
|
||||
@@ -50,15 +56,20 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
||||
.addCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES);
|
||||
|
||||
private static final String KEY_CHANNELS = "channels";
|
||||
|
||||
private DashboardFeatureProvider mDashboardFeatureProvider;
|
||||
private PreferenceCategory mChannels;
|
||||
List<NotificationChannel> mChannelList;
|
||||
private List<NotificationChannel> mChannelList;
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
if (mAppRow == null) return;
|
||||
AppHeader.createAppHeader(this, mAppRow.icon, mAppRow.label, mAppRow.pkg, mAppRow.uid,
|
||||
mAppRow.settingsIntent);
|
||||
if (!mDashboardFeatureProvider.isEnabled()) {
|
||||
AppHeader.createAppHeader(this, mAppRow.icon, mAppRow.label, mAppRow.pkg, mAppRow.uid,
|
||||
mAppRow.settingsIntent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -69,8 +80,12 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final Activity activity = getActivity();
|
||||
mDashboardFeatureProvider =
|
||||
FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
|
||||
|
||||
addPreferencesFromResource(R.xml.app_notification_settings);
|
||||
|
||||
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
||||
mPriority =
|
||||
(RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BYPASS_DND);
|
||||
@@ -118,6 +133,22 @@ public class AppNotificationSettings extends NotificationSettingsBase {
|
||||
}
|
||||
updateDependents(mAppRow.appImportance);
|
||||
}
|
||||
if (mDashboardFeatureProvider.isEnabled()) {
|
||||
final AppHeaderController appHeaderController = FeatureFactory.getFactory(activity)
|
||||
.getApplicationFeatureProvider(activity)
|
||||
.newAppHeaderController(this /* fragment */, null /* appHeader */);
|
||||
final View appHeader = appHeaderController.setIcon(mAppRow.icon)
|
||||
.setLabel(mAppRow.label)
|
||||
.setPackageName(mAppRow.pkg)
|
||||
.setUid(mAppRow.uid)
|
||||
.setAppNotifPrefIntent(mAppRow.settingsIntent)
|
||||
.setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
|
||||
AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE)
|
||||
.done();
|
||||
final Preference appHeaderPref = new LayoutPreference(getPrefContext(), appHeader);
|
||||
appHeaderPref.setOrder(0);
|
||||
getPreferenceScreen().addPreference(appHeaderPref);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -20,9 +20,14 @@ import com.android.internal.logging.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.AppHeader;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.RingtonePreference;
|
||||
import com.android.settings.applications.AppHeaderController;
|
||||
import com.android.settings.applications.LayoutPreference;
|
||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedSwitchPreference;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
@@ -30,6 +35,7 @@ import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.NotificationListenerService.Ranking;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.view.View;
|
||||
|
||||
public class ChannelNotificationSettings extends NotificationSettingsBase {
|
||||
protected static final String KEY_LIGHTS = "lights";
|
||||
@@ -39,14 +45,18 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
||||
protected RestrictedSwitchPreference mLights;
|
||||
protected RestrictedSwitchPreference mVibrate;
|
||||
protected DefaultNotificationTonePreference mRingtone;
|
||||
|
||||
private DashboardFeatureProvider mDashboardFeatureProvider;
|
||||
private int mMaxImportance;
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
if (mAppRow == null || mChannel == null) return;
|
||||
AppHeader.createAppHeader(
|
||||
this, mAppRow.icon, mChannel.getName(), mAppRow.pkg, mAppRow.uid);
|
||||
if (!mDashboardFeatureProvider.isEnabled()) {
|
||||
AppHeader.createAppHeader(
|
||||
this, mAppRow.icon, mChannel.getName(), mAppRow.pkg, mAppRow.uid);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,6 +67,9 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
final Activity activity = getActivity();
|
||||
mDashboardFeatureProvider =
|
||||
FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
|
||||
addPreferencesFromResource(R.xml.channel_notification_settings);
|
||||
|
||||
mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
|
||||
@@ -88,6 +101,22 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
||||
mChannel.getImportance() == NotificationManager.IMPORTANCE_NONE,
|
||||
mMaxImportance);
|
||||
}
|
||||
if (mDashboardFeatureProvider.isEnabled()) {
|
||||
final AppHeaderController appHeaderController = FeatureFactory.getFactory(activity)
|
||||
.getApplicationFeatureProvider(activity)
|
||||
.newAppHeaderController(this /* fragment */, null /* appHeader */);
|
||||
final View appHeader = appHeaderController.setIcon(mAppRow.icon)
|
||||
.setLabel(mAppRow.label)
|
||||
.setSummary(mChannel.getName())
|
||||
.setPackageName(mAppRow.pkg)
|
||||
.setUid(mAppRow.uid)
|
||||
.setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
|
||||
AppHeaderController.ActionType.ACTION_NONE)
|
||||
.done();
|
||||
final Preference appHeaderPref = new LayoutPreference(getPrefContext(), appHeader);
|
||||
appHeaderPref.setOrder(0);
|
||||
getPreferenceScreen().addPreference(appHeaderPref);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user