Loading src/com/android/settings/applications/RecentAppsPreferenceController.java +4 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.applications; import android.app.Application; import android.app.settings.SettingsEnums; import android.app.usage.UsageStats; import android.content.Context; import android.icu.text.RelativeDateTimeFormatter; Loading Loading @@ -98,12 +97,12 @@ public class RecentAppsPreferenceController extends BasePreferenceController .setHeaderTitleRes(R.string.recent_app_category_title) .setHeaderDetailsClickListener((View v) -> { mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); getMetricsCategory()); new SubSettingLauncher(mContext) .setDestination(ManageApplications.class.getName()) .setArguments(null /* arguments */) .setTitleRes(R.string.application_info_label) .setSourceMetricsCategory(SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY) .setSourceMetricsCategory(getMetricsCategory()) .launch(); }); } Loading Loading @@ -166,11 +165,10 @@ public class RecentAppsPreferenceController extends BasePreferenceController RelativeDateTimeFormatter.Style.SHORT)) .setOnClickListener(v -> { mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); getMetricsCategory()); AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class, R.string.application_info_label, pkgName, appEntry.info.uid, mHost, 1001 /*RequestCode*/, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); mHost, 1001 /*RequestCode*/, getMetricsCategory()); }) .build(); } Loading src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java +1 −3 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -202,8 +201,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle pref.setSummary(item.getDescription()); pref.setEnabled(item.isEnabled()); pref.setOnPreferenceClickListener(preference -> { mMetricsFeatureProvider.logClickedPreference(preference, preference.getExtras().getInt(DashboardFragment.CATEGORY)); mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory()); final UserHandle user = item.getUser(); mContext.startActivityAsUser(item.getLaunchIntent(mContext), user); return true; Loading src/com/android/settings/core/BasePreferenceController.java +18 −1 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl private boolean mIsForWork; @Nullable private UserHandle mWorkProfileUser; private int mMetricsCategory; /** * Instantiate a controller as specified controller type and user-defined key. Loading Loading @@ -398,11 +399,27 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl * This won't block UI thread however has similar side effect. Please use it if you * want to avoid janky animation(i.e. new preference is added in the middle of page). * * This music be used in {@link BasePreferenceController} * This must be used in {@link BasePreferenceController} */ public interface UiBlocker { } /** * Set the metrics category of the parent fragment. * * Called by DashboardFragment#onAttach */ public void setMetricsCategory(int metricsCategory) { mMetricsCategory = metricsCategory; } /** * @return the metrics category of the parent fragment. */ protected int getMetricsCategory() { return mMetricsCategory; } /** * @return Non-{@code null} {@link UserHandle} when a work profile is enabled. * Otherwise {@code null}. Loading src/com/android/settings/core/TogglePreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ import android.content.Context; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.overlay.FeatureFactory; import com.android.settings.slices.SliceData; import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.TwoStateButtonPreference; /** * Abstract class that consolidates logic for updating toggle controllers. Loading Loading @@ -54,6 +56,8 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle ((TwoStatePreference) preference).setChecked(isChecked()); } else if (preference instanceof MasterSwitchPreference) { ((MasterSwitchPreference) preference).setChecked(isChecked()); } else if (preference instanceof TwoStateButtonPreference) { ((TwoStateButtonPreference) preference).setChecked(isChecked()); } else { refreshSummary(preference); } Loading @@ -61,6 +65,12 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { // TwoStatePreference is a regular preference and can be handled by DashboardFragment if (preference instanceof MasterSwitchPreference || preference instanceof TwoStateButtonPreference) { FeatureFactory.getFactory(mContext).getMetricsFeatureProvider() .logClickedPreference(preference, getMetricsCategory()); } return setChecked((boolean) newValue); } Loading src/com/android/settings/dashboard/DashboardFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } }); // Set metrics category for BasePreferenceController. final int metricCategory = getMetricsCategory(); mControllers.forEach(controller -> { if (controller instanceof BasePreferenceController) { ((BasePreferenceController) controller).setMetricsCategory(metricCategory); } }); mPlaceholderPreferenceController = new DashboardTilePlaceholderPreferenceController(context); mControllers.add(mPlaceholderPreferenceController); Loading Loading
src/com/android/settings/applications/RecentAppsPreferenceController.java +4 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.applications; import android.app.Application; import android.app.settings.SettingsEnums; import android.app.usage.UsageStats; import android.content.Context; import android.icu.text.RelativeDateTimeFormatter; Loading Loading @@ -98,12 +97,12 @@ public class RecentAppsPreferenceController extends BasePreferenceController .setHeaderTitleRes(R.string.recent_app_category_title) .setHeaderDetailsClickListener((View v) -> { mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); getMetricsCategory()); new SubSettingLauncher(mContext) .setDestination(ManageApplications.class.getName()) .setArguments(null /* arguments */) .setTitleRes(R.string.application_info_label) .setSourceMetricsCategory(SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY) .setSourceMetricsCategory(getMetricsCategory()) .launch(); }); } Loading Loading @@ -166,11 +165,10 @@ public class RecentAppsPreferenceController extends BasePreferenceController RelativeDateTimeFormatter.Style.SHORT)) .setOnClickListener(v -> { mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); getMetricsCategory()); AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class, R.string.application_info_label, pkgName, appEntry.info.uid, mHost, 1001 /*RequestCode*/, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY); mHost, 1001 /*RequestCode*/, getMetricsCategory()); }) .build(); } Loading
src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java +1 −3 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -202,8 +201,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle pref.setSummary(item.getDescription()); pref.setEnabled(item.isEnabled()); pref.setOnPreferenceClickListener(preference -> { mMetricsFeatureProvider.logClickedPreference(preference, preference.getExtras().getInt(DashboardFragment.CATEGORY)); mMetricsFeatureProvider.logClickedPreference(preference, getMetricsCategory()); final UserHandle user = item.getUser(); mContext.startActivityAsUser(item.getLaunchIntent(mContext), user); return true; Loading
src/com/android/settings/core/BasePreferenceController.java +18 −1 Original line number Diff line number Diff line Loading @@ -124,6 +124,7 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl private boolean mIsForWork; @Nullable private UserHandle mWorkProfileUser; private int mMetricsCategory; /** * Instantiate a controller as specified controller type and user-defined key. Loading Loading @@ -398,11 +399,27 @@ public abstract class BasePreferenceController extends AbstractPreferenceControl * This won't block UI thread however has similar side effect. Please use it if you * want to avoid janky animation(i.e. new preference is added in the middle of page). * * This music be used in {@link BasePreferenceController} * This must be used in {@link BasePreferenceController} */ public interface UiBlocker { } /** * Set the metrics category of the parent fragment. * * Called by DashboardFragment#onAttach */ public void setMetricsCategory(int metricsCategory) { mMetricsCategory = metricsCategory; } /** * @return the metrics category of the parent fragment. */ protected int getMetricsCategory() { return mMetricsCategory; } /** * @return Non-{@code null} {@link UserHandle} when a work profile is enabled. * Otherwise {@code null}. Loading
src/com/android/settings/core/TogglePreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ import android.content.Context; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.overlay.FeatureFactory; import com.android.settings.slices.SliceData; import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.TwoStateButtonPreference; /** * Abstract class that consolidates logic for updating toggle controllers. Loading Loading @@ -54,6 +56,8 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle ((TwoStatePreference) preference).setChecked(isChecked()); } else if (preference instanceof MasterSwitchPreference) { ((MasterSwitchPreference) preference).setChecked(isChecked()); } else if (preference instanceof TwoStateButtonPreference) { ((TwoStateButtonPreference) preference).setChecked(isChecked()); } else { refreshSummary(preference); } Loading @@ -61,6 +65,12 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle @Override public final boolean onPreferenceChange(Preference preference, Object newValue) { // TwoStatePreference is a regular preference and can be handled by DashboardFragment if (preference instanceof MasterSwitchPreference || preference instanceof TwoStateButtonPreference) { FeatureFactory.getFactory(mContext).getMetricsFeatureProvider() .logClickedPreference(preference, getMetricsCategory()); } return setChecked((boolean) newValue); } Loading
src/com/android/settings/dashboard/DashboardFragment.java +8 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } }); // Set metrics category for BasePreferenceController. final int metricCategory = getMetricsCategory(); mControllers.forEach(controller -> { if (controller instanceof BasePreferenceController) { ((BasePreferenceController) controller).setMetricsCategory(metricCategory); } }); mPlaceholderPreferenceController = new DashboardTilePlaceholderPreferenceController(context); mControllers.add(mPlaceholderPreferenceController); Loading