package com.android.settings.dashboard;
import android.app.Activity;
-import android.app.Fragment;
import android.content.Context;
+import android.os.Bundle;
import android.support.v7.preference.Preference;
import com.android.settingslib.drawer.DashboardCategory;
* Returns a {@link ProgressiveDisclosureMixin} for specified fragment.
*/
ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
- DashboardFragment fragment);
+ DashboardFragment fragment, Bundle args);
/**
* Returns additional intent filter action for dashboard tiles
@Override
public ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
- DashboardFragment fragment) {
- return new ProgressiveDisclosureMixin(context, mMetricsFeatureProvider, fragment);
+ DashboardFragment fragment, Bundle args) {
+ boolean keepExpanded = false;
+ if (args != null) {
+ keepExpanded = args.getString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY) != null;
+ }
+ return new ProgressiveDisclosureMixin(context, fragment, keepExpanded);
}
@Override
mDashboardFeatureProvider =
FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
mProgressiveDisclosureMixin = mDashboardFeatureProvider
- .getProgressiveDisclosureMixin(context, this);
+ .getProgressiveDisclosureMixin(context, this, getArguments());
getLifecycle().addObserver(mProgressiveDisclosureMixin);
List<PreferenceController> controllers = getPreferenceControllers(context);
import com.android.settings.core.lifecycle.LifecycleObserver;
import com.android.settings.core.lifecycle.events.OnCreate;
import com.android.settings.core.lifecycle.events.OnSaveInstanceState;
+import com.android.settings.overlay.FeatureFactory;
import java.util.ArrayList;
import java.util.Collections;
private boolean mUserExpanded;
public ProgressiveDisclosureMixin(Context context,
- MetricsFeatureProvider metricsFeatureProvider,
- PreferenceFragment fragment) {
+ PreferenceFragment fragment, boolean keepExpanded) {
mContext = context;
mFragment = fragment;
mExpandButton = new ExpandPreference(context);
mExpandButton.setOnPreferenceClickListener(this);
- mMetricsFeatureProvider = metricsFeatureProvider;
+ mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
+ mUserExpanded = keepExpanded;
}
@Override
* Whether the screen should be collapsed.
*/
public boolean shouldCollapse(PreferenceScreen screen) {
- return screen.getPreferenceCount() >= mTileLimit && !mUserExpanded;
+ return !mUserExpanded && screen.getPreferenceCount() >= mTileLimit;
}
/**
mDashboardCategory.tiles = new ArrayList<>();
mDashboardCategory.tiles.add(new Tile());
mTestFragment = new TestFragment(ShadowApplication.getInstance().getApplicationContext());
- when(mFakeFeatureFactory.dashboardFeatureProvider
- .getProgressiveDisclosureMixin(any(Context.class), eq(mTestFragment)))
+ when(mFakeFeatureFactory.dashboardFeatureProvider.getProgressiveDisclosureMixin(
+ any(Context.class), eq(mTestFragment), any(Bundle.class)))
.thenReturn(mDisclosureMixin);
when(mFakeFeatureFactory.dashboardFeatureProvider.getTilesForCategory(anyString()))
.thenReturn(mDashboardCategory);
mAppContext = ShadowApplication.getInstance().getApplicationContext();
mFakeFeatureFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext);
mMixin = new ProgressiveDisclosureMixin(mAppContext,
- mFakeFeatureFactory.metricsFeatureProvider,
- mPreferenceFragment);
+ mPreferenceFragment, false /* keepExpanded */);
ReflectionHelpers.setField(mMixin, "mExpandButton", mExpandButton);
mPreference = new Preference(mAppContext);
mPreference.setKey("test");
}
@Test
+ public void shouldNotCollapse_whenStartAsExpanded() {
+ when(mScreen.getPreferenceCount()).thenReturn(5);
+
+ mMixin = new ProgressiveDisclosureMixin(mAppContext,
+ mPreferenceFragment, true /* keepExpanded */);
+ mMixin.setTileLimit(10);
+
+ assertThat(mMixin.shouldCollapse(mScreen)).isFalse();
+ }
+
+ @Test
public void shouldCollapse_morePreferenceThanLimit() {
when(mScreen.getPreferenceCount()).thenReturn(5);
mMixin.setTileLimit(3);