Minor changes

This commit is contained in:
inorichi 2015-12-30 19:10:28 +01:00
parent 384bc3c690
commit ef444b0b63
5 changed files with 20 additions and 23 deletions

View File

@ -1,8 +1,11 @@
package eu.kanade.mangafeed.event;
import android.support.annotation.Nullable;
import java.util.List;
import java.util.Map;
import eu.kanade.mangafeed.data.database.models.Category;
import eu.kanade.mangafeed.data.database.models.Manga;
public class LibraryMangasEvent {
@ -16,4 +19,9 @@ public class LibraryMangasEvent {
public Map<Integer, List<Manga>> getMangas() {
return mangas;
}
@Nullable
public List<Manga> getMangasForCategory(Category category) {
return mangas.get(category.id);
}
}

View File

@ -42,8 +42,4 @@ public class LibraryAdapter extends SmartFragmentStatePagerAdapter {
}
}
public boolean hasDefaultCategory() {
return categories.get(0).id == 0;
}
}

View File

@ -108,7 +108,7 @@ public class LibraryCategoryFragment extends BaseFragment
return;
Category category = categories.get(position);
List<Manga> mangas = event.getMangas().get(category.id);
List<Manga> mangas = event.getMangasForCategory(category);
if (mangas == null) {
mangas = new ArrayList<>();
}

View File

@ -7,7 +7,6 @@ import android.support.design.widget.AppBarLayout;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.view.ActionMode;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@ -119,26 +118,20 @@ public class LibraryFragment extends BaseRxFragment<LibraryPresenter>
startActivity(intent);
}
public void onNextLibraryUpdate(Pair<List<Category>, Map<Integer, List<Manga>>> pair) {
boolean mangasInDefaultCategory = pair.second.get(0) != null;
boolean initialized = adapter.categories != null;
public void onNextLibraryUpdate(List<Category> categories, Map<Integer, List<Manga>> mangas) {
boolean hasMangasInDefaultCategory = mangas.get(0) != null;
int activeCat = adapter.categories != null ? viewPager.getCurrentItem() : activeCategory;
// If there are mangas in the default category and the adapter doesn't have it,
// create the default category
if (mangasInDefaultCategory && (!initialized || !adapter.hasDefaultCategory())) {
setCategoriesWithDefault(pair.first);
}
// If there aren't mangas in the default category and the adapter have it,
// remove the default category
else if (!mangasInDefaultCategory && (!initialized || adapter.hasDefaultCategory())) {
setCategories(pair.first);
if (hasMangasInDefaultCategory) {
setCategoriesWithDefault(categories);
} else {
setCategories(categories);
}
// Restore active category
if (!initialized) {
viewPager.setCurrentItem(activeCategory, false);
}
viewPager.setCurrentItem(activeCat, false);
// Send the mangas to child fragments after the adapter is updated
EventBus.getDefault().postSticky(new LibraryMangasEvent(pair.second));
EventBus.getDefault().postSticky(new LibraryMangasEvent(mangas));
}
private void setCategoriesWithDefault(List<Category> categories) {

View File

@ -42,7 +42,7 @@ public class LibraryPresenter extends BasePresenter<LibraryFragment> {
restartableLatestCache(GET_LIBRARY,
this::getLibraryObservable,
LibraryFragment::onNextLibraryUpdate);
(view, pair) -> view.onNextLibraryUpdate(pair.first, pair.second));
start(GET_LIBRARY);
}