package org.ebookdroid.ui.library.views; import org.ebookdroid.ui.library.RecentActivity; import org.ebookdroid.ui.library.RecentActivityController; import org.emdev.ui.AbstractActionActivity; import org.emdev.ui.AbstractActivityController; import org.sufficientlysecure.viewer.R; import org.ebookdroid.ui.library.adapters.BooksAdapter; import org.ebookdroid.ui.library.adapters.RecentAdapter; import android.content.Context; import android.database.DataSetObserver; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; public class BookcaseView extends RelativeLayout { private ViewPager shelves; private BooksAdapter adapter; private RecentAdapter recents; public BookcaseView(final Context context) { super(context); } public BookcaseView(final Context context, final AttributeSet attrs) { super(context, attrs); } public BookcaseView(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); } private void showSelectShelfDlg() { Context context = getContext(); if (context instanceof RecentActivity) { RecentActivityController controller = ((RecentActivity) context).getController(); controller.showSelectShelfDlg(); } } public void init(final BooksAdapter adapter, final RecentAdapter recents) { this.adapter = adapter; this.recents = recents; this.shelves = (ViewPager) findViewById(R.id.Shelves); shelves.setAdapter(adapter); adapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { onBookAdapterChanged(); } }); recents.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { onRecentAdapterChanged(); } }); onBookAdapterChanged(); TabLayout.OnTabSelectedListener l = new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { showSelectShelfDlg(); } }; final TabLayout tl = (TabLayout) findViewById(R.id.tabs); tl.setupWithViewPager(this.shelves); tl.addOnTabSelectedListener(l); } protected void onBookAdapterChanged() { final int selfCount = adapter.getCount(); int currentItem = shelves.getCurrentItem(); if (currentItem >= selfCount) { currentItem = selfCount - 1; setCurrentList(currentItem); return; } if (currentItem == BooksAdapter.RECENT_INDEX) { final int recentCount = adapter.getListCount(BooksAdapter.RECENT_INDEX); if (recentCount == 0 && selfCount > BooksAdapter.SERVICE_SHELVES) { setCurrentList(BooksAdapter.SERVICE_SHELVES); return; } } } protected void onRecentAdapterChanged() { final int count = BookcaseView.this.adapter.getCount(); final int recentCount = recents.getCount(); if (recentCount == 0 && count > BooksAdapter.SERVICE_SHELVES) { setCurrentList(BooksAdapter.SERVICE_SHELVES); } } public int getCurrentList() { return shelves.getCurrentItem(); } public void setCurrentList(final int shelf) { shelves.setCurrentItem(shelf); } public void prevList() { setCurrentList(Math.max(0, shelves.getCurrentItem() - 1)); } public void nextList() { setCurrentList(Math.min(shelves.getCurrentItem() + 1, adapter.getListCount() - 1)); } }