diff options
author | 2019-01-30 16:52:29 +0800 | |
---|---|---|
committer | 2019-02-22 12:06:11 +0800 | |
commit | b719a7d7e39b04f34fdca5c16184ac1da8ba1fa0 (patch) | |
tree | 88e42312699e7b1e4bf7ddd434884eab7e9653d5 | |
parent | 55168269d77994c5e3008095e217d0da0548edef (diff) |
Create an interface to set details text
For some cases, we still need a way to set text directly.
Test: robotest
Bug: 123538183
Change-Id: I5926730fcc2ba6382ee42c36ce398d6c930650f3
2 files changed, 33 insertions, 5 deletions
diff --git a/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java index 330049fc6673..6e95a0ed106a 100644 --- a/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java +++ b/packages/SettingsLib/EntityHeaderWidgets/src/com/android/settingslib/widget/AppEntitiesHeaderController.java @@ -90,6 +90,7 @@ public class AppEntitiesHeaderController { private int mHeaderTitleRes; private int mHeaderDetailsRes; private int mHeaderEmptyRes; + private CharSequence mHeaderDetails; private View.OnClickListener mDetailsOnClickListener; /** @@ -148,6 +149,14 @@ public class AppEntitiesHeaderController { } /** + * Set the text for app entities header details. + */ + public AppEntitiesHeaderController setHeaderDetails(CharSequence detailsText) { + mHeaderDetails = detailsText; + return this; + } + + /** * Register a callback to be invoked when header details view is clicked. */ public AppEntitiesHeaderController setHeaderDetailsClickListener( @@ -232,11 +241,13 @@ public class AppEntitiesHeaderController { } private void bindHeaderDetailsView() { - CharSequence detailsText = ""; - try { - detailsText = mContext.getText(mHeaderDetailsRes); - } catch (Resources.NotFoundException e) { - Log.e(TAG, "Resource of header details can't not be found!", e); + CharSequence detailsText = mHeaderDetails; + if (TextUtils.isEmpty(detailsText)) { + try { + detailsText = mContext.getText(mHeaderDetailsRes); + } catch (Resources.NotFoundException e) { + Log.e(TAG, "Resource of header details can't not be found!", e); + } } mHeaderDetailsView.setText(detailsText); mHeaderDetailsView.setVisibility( diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java index 63a958eeb5bb..9a07ca885914 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/AppEntitiesHeaderControllerTest.java @@ -85,6 +85,23 @@ public class AppEntitiesHeaderControllerTest { } @Test + public void setHeaderDetails_onlyDetailsTextSet_shouldSetToDetailsView() { + mController.setHeaderDetails(TITLE).apply(); + final TextView view = mAppEntitiesHeaderView.findViewById(R.id.header_details); + + assertThat(view.getText()).isEqualTo(TITLE); + } + + @Test + public void setHeaderDetails_detailsTextAndResBothSet_shouldSetTextToDetailsView() { + mController.setHeaderDetailsRes(R.string.expand_button_title); + mController.setHeaderDetails(TITLE).apply(); + final TextView view = mAppEntitiesHeaderView.findViewById(R.id.header_details); + + assertThat(view.getText()).isEqualTo(TITLE); + } + + @Test public void setHeaderDetailsClickListener_setClickListener_detailsViewAttachClickListener() { mController.setHeaderDetailsClickListener(v -> { }).apply(); |