summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/panel/PanelFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/panel/PanelFragment.java')
-rw-r--r--src/com/android/settings/panel/PanelFragment.java39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 0f46758244..31e2ac6ee5 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -41,6 +41,7 @@ import androidx.annotation.Nullable;
import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
+import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LiveData;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -53,6 +54,7 @@ import com.android.settings.R;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.panel.PanelLoggingContract.PanelClosedKeys;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.utils.ThreadUtils;
import com.google.android.setupdesign.DividerItemDecoration;
@@ -183,6 +185,11 @@ public class PanelFragment extends Fragment {
activity.finish();
}
+ mPanel.registerCallback(new LocalPanelCallback());
+ if (mPanel instanceof LifecycleObserver) {
+ getLifecycle().addObserver((LifecycleObserver) mPanel);
+ }
+
mMetricsProvider = FeatureFactory.getFactory(activity).getMetricsFeatureProvider();
mPanelSlices.setLayoutManager(new LinearLayoutManager((activity)));
@@ -208,8 +215,15 @@ public class PanelFragment extends Fragment {
mSeeMoreButton.setOnClickListener(getSeeMoreListener());
mDoneButton.setOnClickListener(getCloseListener());
- // If getSeeMoreIntent() is null, hide the mSeeMoreButton.
- if (mPanel.getSeeMoreIntent() == null) {
+ if (mPanel.isCustomizedButtonUsed()) {
+ final CharSequence customTitle = mPanel.getCustomButtonTitle();
+ if (TextUtils.isEmpty(customTitle)) {
+ mSeeMoreButton.setVisibility(View.GONE);
+ } else {
+ mSeeMoreButton.setText(customTitle);
+ }
+ } else if (mPanel.getSeeMoreIntent() == null) {
+ // If getSeeMoreIntent() is null hide the mSeeMoreButton.
mSeeMoreButton.setVisibility(View.GONE);
}
@@ -371,9 +385,13 @@ public class PanelFragment extends Fragment {
View.OnClickListener getSeeMoreListener() {
return (v) -> {
mPanelClosedKey = PanelClosedKeys.KEY_SEE_MORE;
- final FragmentActivity activity = getActivity();
- activity.startActivityForResult(mPanel.getSeeMoreIntent(), 0);
- activity.finish();
+ if (mPanel.isCustomizedButtonUsed()) {
+ mPanel.onClickCustomizedButton();
+ } else {
+ final FragmentActivity activity = getActivity();
+ activity.startActivityForResult(mPanel.getSeeMoreIntent(), 0);
+ activity.finish();
+ }
};
}
@@ -392,4 +410,15 @@ public class PanelFragment extends Fragment {
activity.startActivity(mPanel.getHeaderIconIntent());
};
}
+
+ class LocalPanelCallback implements PanelCustomizedButtonCallback {
+
+ @Override
+ public void onCustomizedButtonStateChanged() {
+ ThreadUtils.postOnMainThread(() -> {
+ mSeeMoreButton.setVisibility(
+ mPanel.isCustomizedButtonUsed() ? View.VISIBLE : View.GONE);
+ });
+ }
+ }
}