summaryrefslogtreecommitdiff
path: root/src/com/android/car/media/drawer/MediaDrawerAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/car/media/drawer/MediaDrawerAdapter.java')
-rw-r--r--src/com/android/car/media/drawer/MediaDrawerAdapter.java160
1 files changed, 0 insertions, 160 deletions
diff --git a/src/com/android/car/media/drawer/MediaDrawerAdapter.java b/src/com/android/car/media/drawer/MediaDrawerAdapter.java
deleted file mode 100644
index e1cf1b6..0000000
--- a/src/com/android/car/media/drawer/MediaDrawerAdapter.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2017 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.car.media.drawer;
-
-import android.content.Context;
-
-import androidx.annotation.Nullable;
-import androidx.car.drawer.CarDrawerAdapter;
-import androidx.car.drawer.CarDrawerController;
-import androidx.car.drawer.DrawerItemViewHolder;
-import androidx.recyclerview.widget.RecyclerView;
-
-/**
- * Subclass of CarDrawerAdapter used by the Media app.
- * <p>
- * This adapter delegates actual fetching of items (and other operations) to a
- * {@link MediaItemsFetcher}. The current fetcher being used can be updated at runtime.
- */
-class MediaDrawerAdapter extends CarDrawerAdapter {
- private final CarDrawerController mDrawerController;
- private MediaItemsFetcher mCurrentFetcher;
- private MediaFetchCallback mFetchCallback;
- private int mCurrentScrollPosition;
-
- /**
- * Interface for a callback object that will be notified of changes to the fetch status of
- * items in a media drawer.
- */
- interface MediaFetchCallback {
- /**
- * Called when a fetch for items starts.
- */
- void onFetchStart();
-
- /**
- * Called when a fetch for items ends.
- */
- void onFetchEnd();
- }
-
- MediaDrawerAdapter(Context context, CarDrawerController drawerController) {
- super(context, true /* showDisabledListOnEmpty */);
- mDrawerController = drawerController;
- }
-
- /**
- * Sets the object to be notified of changes to the fetching of items in the media drawer.
- */
- void setFetchCallback(@Nullable MediaFetchCallback callback) {
- mFetchCallback = callback;
- }
-
- /**
- * Switch the {@link MediaItemsFetcher} being used to fetch items. The new fetcher is kicked-off
- * and the drawer's content's will be updated to show newly loaded items. Any old fetcher is
- * cleaned up and released.
- *
- * @param fetcher New {@link MediaItemsFetcher} to use for display Drawer items.
- */
- void setFetcherAndInvoke(MediaItemsFetcher fetcher) {
- setFetcher(fetcher);
-
- if (mFetchCallback != null) {
- mFetchCallback.onFetchStart();
- }
-
- mCurrentFetcher.start(() -> {
- closeFetch();
- notifyDataSetChanged();
- });
- }
-
- void setFetcher(MediaItemsFetcher fetcher) {
- if (mCurrentFetcher != null) {
- mCurrentFetcher.cleanup();
- }
- mCurrentFetcher = fetcher;
- notifyDataSetChanged();
- }
-
- @Override
- protected int getActualItemCount() {
- return mCurrentFetcher != null ? mCurrentFetcher.getItemCount() : 0;
- }
-
- @Override
- protected boolean usesSmallLayout(int position) {
- return mCurrentFetcher.usesSmallLayout(position);
- }
-
- @Override
- protected void populateViewHolder(DrawerItemViewHolder holder, int position) {
- if (mCurrentFetcher == null) {
- return;
- }
-
- mCurrentFetcher.populateViewHolder(holder, position);
- scrollToCurrent();
- }
-
- @Override
- public void onItemClick(int position) {
- if (mCurrentFetcher != null) {
- mCurrentFetcher.onItemClick(position);
- }
- }
-
- @Override
- public void cleanup() {
- super.cleanup();
- if (mCurrentFetcher != null) {
- mCurrentFetcher.cleanup();
- mCurrentFetcher = null;
- notifyDataSetChanged();
- }
- closeFetch();
- }
-
- private void closeFetch() {
- if (mFetchCallback != null) {
- mFetchCallback.onFetchEnd();
- mFetchCallback = null;
- }
- }
-
- public void scrollToCurrent() {
- if (mCurrentFetcher == null) {
- return;
- }
- int scrollPosition = mCurrentFetcher.getScrollPosition();
- if (scrollPosition != MediaItemsFetcher.DONT_SCROLL
- && mCurrentScrollPosition != scrollPosition) {
- mDrawerController.scrollToPosition(scrollPosition);
- mCurrentScrollPosition = scrollPosition;
- }
- }
-
- @Override
- public void onAttachedToRecyclerView(RecyclerView recyclerView) {
- if (mCurrentFetcher != null) {
- MediaItemsFetcher fetcher = mCurrentFetcher;
- fetcher.cleanup();
- setFetcherAndInvoke(fetcher);
- }
- }
-
-}