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:
Fan Zhang
2016-10-27 15:50:36 -07:00
parent 6e3b964cf4
commit 1ff25ba7e6
9 changed files with 364 additions and 75 deletions

View File

@@ -154,7 +154,6 @@ public class InstalledAppDetails extends AppInfoBase
private final HashSet<String> mHomePackages = new HashSet<>();
private DashboardFeatureProvider mDashboardFeatureProvider;
private AppHeaderController mAppHeaderController;
private boolean mInitialized;
private boolean mShowUninstalled;
@@ -317,8 +316,6 @@ public class InstalledAppDetails extends AppInfoBase
final Activity activity = getActivity();
mDashboardFeatureProvider =
FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
mAppHeaderController = FeatureFactory.getFactory(activity)
.getApplicationFeatureProvider(activity).getAppHeaderController();
setHasOptionsMenu(true);
addPreferencesFromResource(mDashboardFeatureProvider.isEnabled()
@@ -384,13 +381,15 @@ public class InstalledAppDetails extends AppInfoBase
if (!mDashboardFeatureProvider.isEnabled()) {
handleHeader();
} else {
final Activity activity = getActivity();
mHeader = (LayoutPreference) findPreference(KEY_HEADER);
mAppHeaderController.bindAppHeaderButtons(
this,
mHeader.findViewById(R.id.app_detail_links),
mPackageName,
AppHeaderController.ActionType.ACTION_STORE_DEEP_LINK,
AppHeaderController.ActionType.ACTION_APP_PREFERENCE);
FeatureFactory.getFactory(activity)
.getApplicationFeatureProvider(activity)
.newAppHeaderController(this, mHeader.findViewById(R.id.app_snippet))
.setPackageName(mPackageName)
.setButtonActions(AppHeaderController.ActionType.ACTION_STORE_DEEP_LINK,
AppHeaderController.ActionType.ACTION_APP_PREFERENCE)
.bindAppHeaderButtons();
prepareUninstallAndStop();
}
@@ -544,7 +543,14 @@ public class InstalledAppDetails extends AppInfoBase
final View appSnippet = mHeader.findViewById(R.id.app_snippet);
mState.ensureIcon(mAppEntry);
if (mDashboardFeatureProvider.isEnabled()) {
mAppHeaderController.bindAppHeader(appSnippet, pkgInfo, mAppEntry);
final Activity activity = getActivity();
FeatureFactory.getFactory(activity)
.getApplicationFeatureProvider(activity)
.newAppHeaderController(this, appSnippet)
.setLabel(mAppEntry)
.setIcon(mAppEntry)
.setSummary(pkgInfo)
.done(false /* rebindActions */);
} else {
setupAppSnippet(appSnippet, mAppEntry.label, mAppEntry.icon,
pkgInfo != null ? pkgInfo.versionName : null);