package me.devsaki.hentoid.fragments; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageButton; import java.util.List; import me.devsaki.hentoid.R; import me.devsaki.hentoid.abstracts.DownloadsFragment; import me.devsaki.hentoid.adapters.ContentAdapter.ContentsWipedListener; import me.devsaki.hentoid.adapters.ContentAdapter.EndlessScrollListener; import me.devsaki.hentoid.database.domains.Content; import me.devsaki.hentoid.util.ConstsPrefs; import me.devsaki.hentoid.util.LogHelper; /** * Created by avluis on 08/26/2016. * Presents the list of downloaded works to the user in an endless scroll list. */ public class EndlessFragment extends DownloadsFragment implements ContentsWipedListener, EndlessScrollListener { private static final String TAG = LogHelper.makeLogTag(EndlessFragment.class); @Override protected void attachScrollListener() { mListView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // Show toolbar: if (!override && result != null && result.size() > 0) { // At top of list if (llm.findViewByPosition(llm.findFirstVisibleItemPosition()) .getTop() == 0 && llm.findFirstVisibleItemPosition() == 0) { showToolbar(true, false); if (newContent) { toolTip.setVisibility(View.VISIBLE); } } // Last item in list if (llm.findLastVisibleItemPosition() == result.size() - 1) { showToolbar(true, false); } else { // When scrolling up if (dy < -10) { showToolbar(true, false); if (newContent) { toolTip.setVisibility(View.VISIBLE); } // When scrolling down } else if (dy > 100) { showToolbar(false, false); if (newContent) { toolTip.setVisibility(View.GONE); } } } } } }); } @Override protected void attachRefresh(View rootView) { ImageButton btnRefresh = (ImageButton) rootView.findViewById(R.id.btnRefresh); btnRefresh.setOnClickListener(v -> { if (isLoaded) { update(); } }); btnRefresh.setOnLongClickListener(v -> false); } @Override protected void queryPrefs() { super.queryPrefs(); qtyPages = ConstsPrefs.PREF_QUANTITY_PER_PAGE_DEFAULT; } @Override protected void checkResults() { if (contents != null) { LogHelper.d(TAG, "Contents are not null."); } else if (isLoaded && result != null) { LogHelper.d(TAG, "Result is not null."); result.clear(); } else { LogHelper.d(TAG, "Contents are null."); } mAdapter.setEndlessScrollListener(this); if (result != null) { LogHelper.d(TAG, "Result is not null."); LogHelper.d(TAG, "Are results loaded? " + isLoaded); if (result.isEmpty() && !isLoaded) { LogHelper.d(TAG, "Result is empty!"); update(); } checkContent(false); mAdapter.setContentsWipedListener(this); } else { LogHelper.d(TAG, "Result is null."); update(); checkContent(true); } if (!query.isEmpty()) { LogHelper.d(TAG, "Saved Query: " + query); update(); } } @Override protected void showToolbar(boolean show, boolean override) { this.override = override; if (override) { if (show) { toolbar.setVisibility(View.VISIBLE); } else { toolbar.setVisibility(View.GONE); } } else { toolbar.setVisibility(View.GONE); } } @Override protected void displayResults() { result = search.getContent(); if (isLoaded) { toggleUI(0); } if (query.isEmpty()) { if (result != null && !result.isEmpty()) { if (contents == null) { contents = result; mAdapter.setContentList(contents); mListView.setAdapter(mAdapter); } else { int curSize = mAdapter.getItemCount(); contents.addAll(result); mAdapter.notifyItemRangeInserted(curSize, contents.size() - 1); } toggleUI(SHOW_RESULT); updatePager(); mAdapter.enableFooter(false); } } else { LogHelper.d(TAG, "Query: " + query); if (result != null && !result.isEmpty()) { LogHelper.d(TAG, "Result: Match."); List<Content> searchResults = result; mAdapter.setContentList(searchResults); mListView.setAdapter(mAdapter); toggleUI(SHOW_RESULT); showToolbar(true, true); updatePager(); mAdapter.enableFooter(false); } else { LogHelper.d(TAG, "Result: Nothing to match."); displayNoResults(); } } } @Override public void onLoadMore() { if (query.isEmpty()) { if (!isLastPage) { currentPage++; searchContent(); LogHelper.d(TAG, "Load more data now~"); mAdapter.enableFooter(true); } } else { LogHelper.d(TAG, "Endless Scrolling disabled."); mAdapter.enableFooter(false); } } }