diff --git a/src/com/android/settings/dashboard/DashboardDividerDecoration.java b/src/com/android/settings/dashboard/DashboardDividerDecoration.java deleted file mode 100644 index ed8a077be7b..00000000000 --- a/src/com/android/settings/dashboard/DashboardDividerDecoration.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.dashboard; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.support.v4.view.ViewCompat; -import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceGroupAdapter; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -import com.android.settings.overlay.FeatureFactory; - -public class DashboardDividerDecoration extends RecyclerView.ItemDecoration { - - private final DashboardFeatureProvider mDashboardFeatureProvider; - - private Drawable mDivider; - private int mDividerHeight; - - public DashboardDividerDecoration(Context context) { - mDashboardFeatureProvider = FeatureFactory.getFactory(context) - .getDashboardFeatureProvider(context); - } - - public void setDivider(Drawable divider) { - if (divider != null) { - mDividerHeight = divider.getIntrinsicHeight(); - } else { - mDividerHeight = 0; - } - mDivider = divider; - } - - public void setDividerHeight(int dividerHeight) { - mDividerHeight = dividerHeight; - } - - @Override - public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { - if (mDivider == null) { - return; - } - final int childCount = parent.getChildCount(); - final int width = parent.getWidth(); - for (int childViewIndex = 0; childViewIndex < childCount - 1; childViewIndex++) { - final View view = parent.getChildAt(childViewIndex); - if (shouldDrawDividerBelow(view, parent)) { - int top = (int) ViewCompat.getY(view) + view.getHeight(); - mDivider.setBounds(0, top, width, top + mDividerHeight); - mDivider.draw(c); - } - } - } - - private boolean shouldDrawDividerBelow(View view, RecyclerView parent) { - final RecyclerView.Adapter adapter = parent.getAdapter(); - if (adapter == null || !(adapter instanceof PreferenceGroupAdapter)) { - return false; - } - final PreferenceGroupAdapter prefAdapter = (PreferenceGroupAdapter) adapter; - final int adapterPosition = parent.getChildAdapterPosition(view); - if (adapterPosition == RecyclerView.NO_POSITION) { - return false; - } - final Preference pref = prefAdapter.getItem(adapterPosition); - final Preference nextPref = prefAdapter.getItem(adapterPosition + 1); - if (nextPref == null) { - return false; - } - - return mDashboardFeatureProvider.getPriorityGroup(pref) - != mDashboardFeatureProvider.getPriorityGroup(nextPref); - } - -} diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index 7dd83461764..e59b7baadbe 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -58,7 +58,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment private final Map mPreferenceControllers = new ArrayMap<>(); private final Set mDashboardTilePrefKeys = new ArraySet<>(); - private DashboardDividerDecoration mDividerDecoration; protected ProgressiveDisclosureMixin mProgressiveDisclosureMixin; protected DashboardFeatureProvider mDashboardFeatureProvider; @@ -99,9 +98,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = super.onCreateView(inflater, container, savedInstanceState); - if (mDashboardFeatureProvider.isEnabled()) { - getListView().addItemDecoration(mDividerDecoration); - } return view; } @@ -118,7 +114,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { super.onCreatePreferences(savedInstanceState, rootKey); - mDividerDecoration = new DashboardDividerDecoration(getContext()); refreshAllPreferences(getLogTag()); } @@ -126,8 +121,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment public void setDivider(Drawable divider) { if (mDashboardFeatureProvider.isEnabled()) { // Intercept divider and set it transparent so system divider decoration is disabled. - // We will use our decoration to draw divider more intelligently. - mDividerDecoration.setDivider(divider); super.setDivider(new ColorDrawable(Color.TRANSPARENT)); } else { super.setDivider(divider); diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java deleted file mode 100644 index e829eb2e1d8..00000000000 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.dashboard; - - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.Drawable; -import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceGroupAdapter; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import com.android.settings.SettingsRobolectricTestRunner; -import com.android.settings.TestConfig; -import com.android.settings.overlay.FeatureFactory; -import com.android.settings.testutils.FakeFeatureFactory; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Answers; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.annotation.Config; - -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class DashboardDividerDecorationTest { - - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Context mContext; - @Mock - private Drawable mDrawable; - @Mock - private Canvas mCanvas; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private RecyclerView mRecyclerView; - @Mock - private PreferenceGroupAdapter mAdapter; - @Mock - private Preference pref1; - @Mock - private Preference pref2; - private DashboardDividerDecoration mDecoration; - private FakeFeatureFactory mFactory; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - FakeFeatureFactory.setupForTest(mContext); - mFactory = (FakeFeatureFactory) FeatureFactory.getFactory(mContext); - mDecoration = new DashboardDividerDecoration(mContext); - mDecoration.setDivider(mDrawable); - mDecoration.setDividerHeight(3); - } - - @Test - public void drawOver_differentPriorityGroup_shouldDrawDivider() { - when(mRecyclerView.getAdapter()).thenReturn(mAdapter); - when(mRecyclerView.getChildCount()).thenReturn(2); - when(mRecyclerView.getChildAdapterPosition(any(View.class))) - .thenReturn(0) - .thenReturn(1); - when(mAdapter.getItem(0)).thenReturn(pref1); - when(mAdapter.getItem(1)).thenReturn(pref2); - when(mFactory.dashboardFeatureProvider.getPriorityGroup(pref1)).thenReturn(1); - when(mFactory.dashboardFeatureProvider.getPriorityGroup(pref2)).thenReturn(2); - - mDecoration.onDrawOver(mCanvas, mRecyclerView, null /* state */); - - verify(mDrawable).draw(mCanvas); - } - - - @Test - public void drawOver_samePriorityGroup_doNotDrawDivider() { - when(mRecyclerView.getAdapter()).thenReturn(mAdapter); - when(mRecyclerView.getChildCount()).thenReturn(2); - when(mRecyclerView.getChildAdapterPosition(any(View.class))) - .thenReturn(0) - .thenReturn(1); - when(mAdapter.getItem(0)).thenReturn(pref1); - when(mAdapter.getItem(1)).thenReturn(pref2); - - mDecoration.onDrawOver(mCanvas, mRecyclerView, null /* state */); - - verify(mDrawable, never()).draw(mCanvas); - } -}