Merge changes from topic "two_pane_state" into sc-v2-dev am: 05896ef5fb

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16101559

Change-Id: I5f42aebba8811cc3d1711f709e71c3d82c529443
This commit is contained in:
TreeHugger Robot
2021-10-25 09:09:43 +00:00
committed by Automerger Merge Worker
6 changed files with 45 additions and 10 deletions

View File

@@ -16,13 +16,18 @@
package com.android.settings; package com.android.settings;
import android.app.Activity;
import android.app.Application; import android.app.Application;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import java.lang.ref.WeakReference;
/** Settings application which sets up activity embedding rules for the large screen device. */ /** Settings application which sets up activity embedding rules for the large screen device. */
public class SettingsApplication extends Application { public class SettingsApplication extends Application {
private WeakReference<Activity> mHomeActivity = new WeakReference<>(null);
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
@@ -31,4 +36,12 @@ public class SettingsApplication extends Application {
new ActivityEmbeddingRulesController(this); new ActivityEmbeddingRulesController(this);
controller.initRules(); controller.initRules();
} }
public void setHomeActivity(Activity homeActivity) {
mHomeActivity = new WeakReference<>(homeActivity);
}
public Activity getHomeActivity() {
return mHomeActivity.get();
}
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.activityembedding; package com.android.settings.activityembedding;
import android.app.Activity;
import android.content.ContentProvider; import android.content.ContentProvider;
import android.content.ContentValues; import android.content.ContentValues;
import android.database.Cursor; import android.database.Cursor;
@@ -23,13 +24,17 @@ import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import com.android.settings.SettingsApplication;
/** /**
* A content provider for querying the state of activity embedding feature * A content provider for querying the state of activity embedding feature
*/ */
public class ActivityEmbeddingProvider extends ContentProvider { public class ActivityEmbeddingProvider extends ContentProvider {
private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled"; private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled";
private static final String METHOD_IS_IN_SETTINGS_TWO_PANE = "isInSettingsTwoPane";
private static final String EXTRA_ENABLED_STATE = "enabled_state"; private static final String EXTRA_ENABLED_STATE = "enabled_state";
private static final String EXTRA_TWO_PANE_STATE = "two_pane_state";
@Override @Override
public boolean onCreate() { public boolean onCreate() {
@@ -43,6 +48,14 @@ public class ActivityEmbeddingProvider extends ContentProvider {
bundle.putBoolean(EXTRA_ENABLED_STATE, bundle.putBoolean(EXTRA_ENABLED_STATE,
ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())); ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext()));
return bundle; return bundle;
} else if (TextUtils.equals(method, METHOD_IS_IN_SETTINGS_TWO_PANE)) {
final Activity homeActivity =
((SettingsApplication) getContext().getApplicationContext()).getHomeActivity();
final Bundle bundle = new Bundle();
bundle.putBoolean(EXTRA_TWO_PANE_STATE,
homeActivity == null ? false
: ActivityEmbeddingUtils.isTwoPaneResolution(homeActivity));
return bundle;
} }
return null; return null;
} }

View File

@@ -16,7 +16,10 @@
package com.android.settings.activityembedding; package com.android.settings.activityembedding;
import android.app.Activity;
import android.app.ActivityTaskManager;
import android.content.Context; import android.content.Context;
import android.graphics.Rect;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.FeatureFlagUtils; import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
@@ -64,10 +67,11 @@ public class ActivityEmbeddingUtils {
} }
/** Whether the screen meets two-pane resolution. */ /** Whether the screen meets two-pane resolution. */
public static boolean isTwoPaneResolution(Context context) { public static boolean isTwoPaneResolution(Activity activity) {
final Context appContext = context.getApplicationContext(); final Rect currentTaskBounds =
final DisplayMetrics dm = appContext.getResources().getDisplayMetrics(); ActivityTaskManager.getInstance().getTaskBounds(activity.getTaskId());
return dm.widthPixels >= getMinCurrentScreenSplitWidthPx(appContext)
&& dm.heightPixels >= getMinSmallestScreenSplitWidthPx(appContext); return currentTaskBounds.width() >= getMinCurrentScreenSplitWidthPx(activity)
&& currentTaskBounds.height() >= getMinSmallestScreenSplitWidthPx(activity);
} }
} }

View File

@@ -42,6 +42,7 @@ import androidx.fragment.app.FragmentTransaction;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Settings; import com.android.settings.Settings;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.SettingsApplication;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.accounts.AvatarViewMixin; import com.android.settings.accounts.AvatarViewMixin;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
@@ -95,6 +96,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
((SettingsApplication) getApplication()).setHomeActivity(this);
setContentView(R.layout.settings_homepage_container); setContentView(R.layout.settings_homepage_container);
final View appBar = findViewById(R.id.app_bar_container); final View appBar = findViewById(R.id.app_bar_container);

View File

@@ -196,8 +196,8 @@ public class TopLevelSettings extends DashboardFragment implements
} }
Log.d(TAG, "onCreateAdapter, pref key: " + mHighlightedPreferenceKey); Log.d(TAG, "onCreateAdapter, pref key: " + mHighlightedPreferenceKey);
mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(preferenceScreen, mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
getListView(), mHighlightedPreferenceKey); getActivity(), preferenceScreen, getListView(), mHighlightedPreferenceKey);
return mTopLevelAdapter; return mTopLevelAdapter;
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.widget; package com.android.settings.widget;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.TextUtils; import android.text.TextUtils;
@@ -53,6 +54,7 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
final int mIconColorHighlight; final int mIconColorHighlight;
private final Context mContext; private final Context mContext;
private final Activity mActivity;
private final RecyclerView mRecyclerView; private final RecyclerView mRecyclerView;
private final int mNormalBackgroundRes; private final int mNormalBackgroundRes;
private String mHighlightKey; private String mHighlightKey;
@@ -61,12 +63,13 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
private boolean mHighlightNeeded; private boolean mHighlightNeeded;
private boolean mScrolled; private boolean mScrolled;
public HighlightableTopLevelPreferenceAdapter(PreferenceGroup preferenceGroup, public HighlightableTopLevelPreferenceAdapter(Activity activity,
RecyclerView recyclerView, String key) { PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) {
super(preferenceGroup); super(preferenceGroup);
mRecyclerView = recyclerView; mRecyclerView = recyclerView;
mHighlightKey = key; mHighlightKey = key;
mContext = preferenceGroup.getContext(); mContext = preferenceGroup.getContext();
mActivity = activity;
final TypedValue outValue = new TypedValue(); final TypedValue outValue = new TypedValue();
mContext.getTheme().resolveAttribute(android.R.attr.selectableItemBackground, mContext.getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
outValue, true /* resolveRefs */); outValue, true /* resolveRefs */);
@@ -233,6 +236,6 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
} }
private boolean isHighlightNeeded() { private boolean isHighlightNeeded() {
return ActivityEmbeddingUtils.isTwoPaneResolution(mContext); return ActivityEmbeddingUtils.isTwoPaneResolution(mActivity);
} }
} }