Loading src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java +7 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer; import com.android.settings.homepage.contextualcards.slices.SwipeDismissalDelegate.DismissalItemTouchHelperListener; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; import java.util.ArrayList; Loading @@ -35,7 +36,7 @@ import java.util.List; import java.util.Map; public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements ContextualCardUpdateListener { implements ContextualCardUpdateListener, DismissalItemTouchHelperListener { static final int SPAN_COUNT = 2; private static final String TAG = "ContextualCardsAdapter"; Loading Loading @@ -136,4 +137,9 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi //TODO(b/119465242): flickering conditional cards after collapsing/expanding } @Override public void onSwiped(int position) { } } src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java +9 −2 Original line number Diff line number Diff line Loading @@ -27,9 +27,11 @@ import android.view.ViewGroup; import androidx.loader.app.LoaderManager; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.ItemTouchHelper; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.homepage.contextualcards.slices.SwipeDismissalDelegate; import com.android.settings.overlay.FeatureFactory; public class ContextualCardsFragment extends InstrumentedFragment implements Loading @@ -41,6 +43,7 @@ public class ContextualCardsFragment extends InstrumentedFragment implements private GridLayoutManager mLayoutManager; private ContextualCardsAdapter mContextualCardsAdapter; private ContextualCardManager mContextualCardManager; private ItemTouchHelper mItemTouchHelper; @Override public void onCreate(Bundle savedInstanceState) { Loading @@ -63,16 +66,20 @@ public class ContextualCardsFragment extends InstrumentedFragment implements @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final Context context = getContext(); final View rootView = inflater.inflate(R.layout.settings_homepage, container, false); mCardsContainer = rootView.findViewById(R.id.card_container); mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT, GridLayoutManager.VERTICAL, false /* reverseLayout */); mCardsContainer.setLayoutManager(mLayoutManager); mContextualCardsAdapter = new ContextualCardsAdapter(getContext(), this /* lifecycleOwner */, mContextualCardManager); mContextualCardsAdapter = new ContextualCardsAdapter(context, this /* lifecycleOwner */, mContextualCardManager); mCardsContainer.setAdapter(mContextualCardsAdapter); mContextualCardManager.setListener(mContextualCardsAdapter); mCardsContainer.setListener(this); mItemTouchHelper = new ItemTouchHelper( new SwipeDismissalDelegate(context, mContextualCardsAdapter)); mItemTouchHelper.attachToRecyclerView(mCardsContainer); return rootView; } Loading src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 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.homepage.contextualcards.slices; import android.content.Context; import android.graphics.Canvas; import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; public class SwipeDismissalDelegate extends ItemTouchHelper.Callback { private static final String TAG = "DismissItemTouchHelper"; public interface DismissalItemTouchHelperListener { void onSwiped(int position); } private final Context mContext; private final DismissalItemTouchHelperListener mListener; public SwipeDismissalDelegate(Context context, DismissalItemTouchHelperListener listener) { mContext = context; mListener = listener; } @Override public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { return 0; } @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { mListener.onSwiped(viewHolder.getAdapterPosition()); } @Override public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } } No newline at end of file Loading
src/com/android/settings/homepage/contextualcards/ContextualCardsAdapter.java +7 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer; import com.android.settings.homepage.contextualcards.slices.SwipeDismissalDelegate.DismissalItemTouchHelperListener; import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer; import java.util.ArrayList; Loading @@ -35,7 +36,7 @@ import java.util.List; import java.util.Map; public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements ContextualCardUpdateListener { implements ContextualCardUpdateListener, DismissalItemTouchHelperListener { static final int SPAN_COUNT = 2; private static final String TAG = "ContextualCardsAdapter"; Loading Loading @@ -136,4 +137,9 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi //TODO(b/119465242): flickering conditional cards after collapsing/expanding } @Override public void onSwiped(int position) { } }
src/com/android/settings/homepage/contextualcards/ContextualCardsFragment.java +9 −2 Original line number Diff line number Diff line Loading @@ -27,9 +27,11 @@ import android.view.ViewGroup; import androidx.loader.app.LoaderManager; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.ItemTouchHelper; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.homepage.contextualcards.slices.SwipeDismissalDelegate; import com.android.settings.overlay.FeatureFactory; public class ContextualCardsFragment extends InstrumentedFragment implements Loading @@ -41,6 +43,7 @@ public class ContextualCardsFragment extends InstrumentedFragment implements private GridLayoutManager mLayoutManager; private ContextualCardsAdapter mContextualCardsAdapter; private ContextualCardManager mContextualCardManager; private ItemTouchHelper mItemTouchHelper; @Override public void onCreate(Bundle savedInstanceState) { Loading @@ -63,16 +66,20 @@ public class ContextualCardsFragment extends InstrumentedFragment implements @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final Context context = getContext(); final View rootView = inflater.inflate(R.layout.settings_homepage, container, false); mCardsContainer = rootView.findViewById(R.id.card_container); mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT, GridLayoutManager.VERTICAL, false /* reverseLayout */); mCardsContainer.setLayoutManager(mLayoutManager); mContextualCardsAdapter = new ContextualCardsAdapter(getContext(), this /* lifecycleOwner */, mContextualCardManager); mContextualCardsAdapter = new ContextualCardsAdapter(context, this /* lifecycleOwner */, mContextualCardManager); mCardsContainer.setAdapter(mContextualCardsAdapter); mContextualCardManager.setListener(mContextualCardsAdapter); mCardsContainer.setListener(this); mItemTouchHelper = new ItemTouchHelper( new SwipeDismissalDelegate(context, mContextualCardsAdapter)); mItemTouchHelper.attachToRecyclerView(mCardsContainer); return rootView; } Loading
src/com/android/settings/homepage/contextualcards/slices/SwipeDismissalDelegate.java 0 → 100644 +66 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 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.homepage.contextualcards.slices; import android.content.Context; import android.graphics.Canvas; import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; public class SwipeDismissalDelegate extends ItemTouchHelper.Callback { private static final String TAG = "DismissItemTouchHelper"; public interface DismissalItemTouchHelperListener { void onSwiped(int position); } private final Context mContext; private final DismissalItemTouchHelperListener mListener; public SwipeDismissalDelegate(Context context, DismissalItemTouchHelperListener listener) { mContext = context; mListener = listener; } @Override public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) { return 0; } @Override public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { mListener.onSwiped(viewHolder.getAdapterPosition()); } @Override public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } } No newline at end of file