diff options
Diffstat (limited to 'src/com/android/settings/panel/PanelFragment.java')
-rw-r--r-- | src/com/android/settings/panel/PanelFragment.java | 39 |
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); + }); + } + } } |