Crash fixes

This commit is contained in:
inorichi 2016-01-14 00:50:40 +01:00
parent 6ef0573a49
commit 4ee95140e6
7 changed files with 19 additions and 48 deletions

View file

@ -1,6 +1,7 @@
package eu.kanade.mangafeed.data.cache; package eu.kanade.mangafeed.data.cache;
import android.content.Context; import android.content.Context;
import android.text.TextUtils;
import android.widget.ImageView; import android.widget.ImageView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
@ -43,6 +44,9 @@ public class CoverCache {
// Download the cover with Glide (it can avoid repeating requests) and save the file on this cache // Download the cover with Glide (it can avoid repeating requests) and save the file on this cache
// Optionally, load the image in the given image view when the resource is ready, if not null // Optionally, load the image in the given image view when the resource is ready, if not null
public void save(String thumbnailUrl, LazyHeaders headers, ImageView imageView) { public void save(String thumbnailUrl, LazyHeaders headers, ImageView imageView) {
if (TextUtils.isEmpty(thumbnailUrl))
return;
GlideUrl url = new GlideUrl(thumbnailUrl, headers); GlideUrl url = new GlideUrl(thumbnailUrl, headers);
Glide.with(context) Glide.with(context)
.load(url) .load(url)
@ -93,6 +97,9 @@ public class CoverCache {
// Delete the cover from cache // Delete the cover from cache
public boolean delete(String thumbnailUrl) { public boolean delete(String thumbnailUrl) {
if (TextUtils.isEmpty(thumbnailUrl))
return false;
File file = new File(cacheDir, DiskUtils.hashKeyForDisk(thumbnailUrl)); File file = new File(cacheDir, DiskUtils.hashKeyForDisk(thumbnailUrl));
return file.exists() && file.delete(); return file.exists() && file.delete();
} }

View file

@ -4,7 +4,6 @@ import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Pair; import android.util.Pair;
import com.bumptech.glide.Glide;
import com.pushtorefresh.storio.sqlite.operations.put.PutResult; import com.pushtorefresh.storio.sqlite.operations.put.PutResult;
import java.util.List; import java.util.List;
@ -20,6 +19,7 @@ import eu.kanade.mangafeed.data.source.base.Source;
import eu.kanade.mangafeed.data.source.model.MangasPage; import eu.kanade.mangafeed.data.source.model.MangasPage;
import eu.kanade.mangafeed.ui.base.presenter.BasePresenter; import eu.kanade.mangafeed.ui.base.presenter.BasePresenter;
import eu.kanade.mangafeed.util.RxPager; import eu.kanade.mangafeed.util.RxPager;
import icepick.State;
import rx.Observable; import rx.Observable;
import rx.android.schedulers.AndroidSchedulers; import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers; import rx.schedulers.Schedulers;
@ -34,6 +34,7 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
@Inject PreferencesHelper prefs; @Inject PreferencesHelper prefs;
private Source source; private Source source;
@State int sourceId;
private String query; private String query;
@ -78,19 +79,14 @@ public class CataloguePresenter extends BasePresenter<CatalogueFragment> {
} }
private void onProcessRestart() { private void onProcessRestart() {
source = sourceManager.get(sourceId);
stop(GET_MANGA_LIST); stop(GET_MANGA_LIST);
stop(GET_MANGA_DETAIL); stop(GET_MANGA_DETAIL);
} }
@Override
protected void onDestroy() {
// Catalogue covers are probably not going to be needed for a long time
Glide.get(getContext()).clearMemory();
super.onDestroy();
}
public void startRequesting(Source source) { public void startRequesting(Source source) {
this.source = source; this.source = source;
sourceId = source.getId();
restartRequest(null); restartRequest(null);
} }

View file

@ -10,7 +10,6 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -62,12 +61,6 @@ public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implemen
return new ChaptersFragment(); return new ChaptersFragment();
} }
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setHasOptionsMenu(true);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@ -122,22 +115,6 @@ public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implemen
super.onPause(); super.onPause();
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.chapters, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
fetchChapters();
break;
}
return super.onOptionsItemSelected(item);
}
public void onNextChapters(List<Chapter> chapters) { public void onNextChapters(List<Chapter> chapters) {
// If the list is empty, fetch chapters from source if the conditions are met // If the list is empty, fetch chapters from source if the conditions are met
// We use presenter chapters instead because they are always unfiltered // We use presenter chapters instead because they are always unfiltered
@ -156,9 +133,11 @@ public class ChaptersFragment extends BaseRxFragment<ChaptersPresenter> implemen
} }
public void fetchChapters() { public void fetchChapters() {
if (getPresenter().getManga() != null) {
swipeRefresh.setRefreshing(true); swipeRefresh.setRefreshing(true);
getPresenter().fetchChaptersFromSource(); getPresenter().fetchChaptersFromSource();
} }
}
public void onFetchChaptersDone() { public void onFetchChaptersDone() {
swipeRefresh.setRefreshing(false); swipeRefresh.setRefreshing(false);

View file

@ -21,6 +21,7 @@ import eu.kanade.mangafeed.event.DownloadChaptersEvent;
import eu.kanade.mangafeed.event.ReaderEvent; import eu.kanade.mangafeed.event.ReaderEvent;
import eu.kanade.mangafeed.ui.base.presenter.BasePresenter; import eu.kanade.mangafeed.ui.base.presenter.BasePresenter;
import eu.kanade.mangafeed.util.EventBusHook; import eu.kanade.mangafeed.util.EventBusHook;
import icepick.State;
import rx.Observable; import rx.Observable;
import rx.android.schedulers.AndroidSchedulers; import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers; import rx.schedulers.Schedulers;
@ -40,7 +41,7 @@ public class ChaptersPresenter extends BasePresenter<ChaptersFragment> {
private boolean sortOrderAToZ = true; private boolean sortOrderAToZ = true;
private boolean onlyUnread = true; private boolean onlyUnread = true;
private boolean onlyDownloaded; private boolean onlyDownloaded;
private boolean hasRequested; @State boolean hasRequested;
private PublishSubject<List<Chapter>> chaptersSubject; private PublishSubject<List<Chapter>> chaptersSubject;

View file

@ -25,7 +25,7 @@ public abstract class PagerReader extends BaseReader {
protected void initializePager(Pager pager) { protected void initializePager(Pager pager) {
this.pager = pager; this.pager = pager;
pager.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); pager.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
pager.setOffscreenPageLimit(2); pager.setOffscreenPageLimit(1);
pager.setId(R.id.view_pager); pager.setId(R.id.view_pager);
pager.setOnChapterBoundariesOutListener(new OnChapterBoundariesOutListener() { pager.setOnChapterBoundariesOutListener(new OnChapterBoundariesOutListener() {
@Override @Override

View file

@ -1,13 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MangaDetailActivity">
<!--I am not sure wee need it, so for a while it will be not visible-->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="1"
android:title="@string/action_refresh"
android:visible="false"
app:showAsAction="ifRoom" />
</menu>

View file

@ -13,6 +13,7 @@
<item name="android:spinnerItemStyle">@style/ActionBarSpinner</item> <item name="android:spinnerItemStyle">@style/ActionBarSpinner</item>
<item name="android:spinnerDropDownItemStyle">@style/ActionBarSpinnerItem</item> <item name="android:spinnerDropDownItemStyle">@style/ActionBarSpinnerItem</item>
<item name="actionModeBackground">@color/colorPrimarySuperDark</item> <item name="actionModeBackground">@color/colorPrimarySuperDark</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item> <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="colorAccent">@color/white</item> <item name="colorAccent">@color/white</item>
</style> </style>