Remove cache size setting. Add advanced settings section. Other minor changes.
This commit is contained in:
@@ -87,8 +87,7 @@ public class ReaderActivity extends BaseRxActivity<ReaderPresenter> {
|
||||
readerMenu.show(false);
|
||||
|
||||
readerTheme = preferences.getReaderTheme();
|
||||
if (readerTheme == BLACK_THEME)
|
||||
setBlackTheme();
|
||||
applyTheme();
|
||||
|
||||
initializeSettings();
|
||||
|
||||
@@ -265,10 +264,15 @@ public class ReaderActivity extends BaseRxActivity<ReaderPresenter> {
|
||||
recreate();
|
||||
}
|
||||
|
||||
private void setBlackTheme() {
|
||||
getWindow().getDecorView().getRootView().setBackgroundColor(Color.BLACK);
|
||||
pageNumber.setTextColor(ContextCompat.getColor(this, R.color.light_grey));
|
||||
pageNumber.setBackgroundColor(ContextCompat.getColor(this, R.color.page_number_background_black));
|
||||
private void applyTheme() {
|
||||
View rootView = getWindow().getDecorView().getRootView();
|
||||
if (readerTheme == BLACK_THEME) {
|
||||
rootView.setBackgroundColor(Color.BLACK);
|
||||
pageNumber.setTextColor(ContextCompat.getColor(this, R.color.light_grey));
|
||||
pageNumber.setBackgroundColor(ContextCompat.getColor(this, R.color.page_number_background_black));
|
||||
} else {
|
||||
rootView.setBackgroundColor(Color.WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
public int getReaderTheme() {
|
||||
|
||||
@@ -10,14 +10,16 @@ import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
import eu.kanade.mangafeed.App;
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.cache.CacheManager;
|
||||
import eu.kanade.mangafeed.data.cache.ChapterCache;
|
||||
import eu.kanade.mangafeed.data.database.DatabaseHelper;
|
||||
import eu.kanade.mangafeed.data.preference.PreferencesHelper;
|
||||
import eu.kanade.mangafeed.ui.base.activity.BaseActivity;
|
||||
|
||||
public class SettingsActivity extends BaseActivity {
|
||||
|
||||
@Inject PreferencesHelper preferences;
|
||||
@Inject CacheManager cacheManager;
|
||||
@Inject ChapterCache chapterCache;
|
||||
@Inject DatabaseHelper db;
|
||||
|
||||
@Bind(R.id.toolbar) Toolbar toolbar;
|
||||
|
||||
@@ -64,9 +66,9 @@ public class SettingsActivity extends BaseActivity {
|
||||
SettingsAccountsFragment.newInstance(
|
||||
R.xml.pref_accounts, R.string.pref_category_accounts));
|
||||
|
||||
registerSubpreference(R.string.pref_category_cache_key,
|
||||
SettingsCacheFragment.newInstance(
|
||||
R.xml.pref_cache, R.string.pref_category_cache));
|
||||
registerSubpreference(R.string.pref_category_advanced_key,
|
||||
SettingsAdvancedFragment.newInstance(
|
||||
R.xml.pref_advanced, R.string.pref_category_advanced));
|
||||
|
||||
registerSubpreference(R.string.pref_category_about_key,
|
||||
SettingsAboutFragment.newInstance(
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
package eu.kanade.mangafeed.ui.setting;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.cache.ChapterCache;
|
||||
import eu.kanade.mangafeed.data.database.DatabaseHelper;
|
||||
import eu.kanade.mangafeed.util.ToastUtil;
|
||||
import rx.Observable;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
import rx.subscriptions.CompositeSubscription;
|
||||
|
||||
public class SettingsAdvancedFragment extends SettingsNestedFragment {
|
||||
|
||||
private CompositeSubscription subscriptions;
|
||||
|
||||
public static SettingsNestedFragment newInstance(int resourcePreference, int resourceTitle) {
|
||||
SettingsNestedFragment fragment = new SettingsAdvancedFragment();
|
||||
fragment.setArgs(resourcePreference, resourceTitle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
|
||||
View view = super.onCreateView(inflater, container, savedState);
|
||||
subscriptions = new CompositeSubscription();
|
||||
|
||||
Preference clearCache = findPreference(getString(R.string.pref_clear_chapter_cache_key));
|
||||
clearCache.setOnPreferenceClickListener(preference -> {
|
||||
clearChapterCache(preference);
|
||||
return true;
|
||||
});
|
||||
clearCache.setSummary(getString(R.string.used_cache, getChapterCache().getReadableSize()));
|
||||
|
||||
Preference clearDatabase = findPreference(getString(R.string.pref_clear_database_key));
|
||||
clearDatabase.setOnPreferenceClickListener(preference -> {
|
||||
clearDatabase();
|
||||
return true;
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
subscriptions.unsubscribe();
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
private void clearChapterCache(Preference preference) {
|
||||
final ChapterCache chapterCache = getChapterCache();
|
||||
final AtomicInteger deletedFiles = new AtomicInteger();
|
||||
|
||||
File[] files = chapterCache.getCacheDir().listFiles();
|
||||
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
|
||||
.title(R.string.deleting)
|
||||
.progress(false, files.length, true)
|
||||
.cancelable(false)
|
||||
.show();
|
||||
|
||||
subscriptions.add(Observable.defer(() -> Observable.from(files))
|
||||
.concatMap(file -> {
|
||||
if (chapterCache.remove(file.getName())) {
|
||||
deletedFiles.incrementAndGet();
|
||||
}
|
||||
return Observable.just(file);
|
||||
})
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(file -> dialog.incrementProgress(1),
|
||||
error -> {
|
||||
dialog.dismiss();
|
||||
ToastUtil.showShort(getActivity(), getString(R.string.cache_delete_error));
|
||||
}, () -> {
|
||||
dialog.dismiss();
|
||||
ToastUtil.showShort(getActivity(), getString(R.string.cache_deleted, deletedFiles.get()));
|
||||
preference.setSummary(getString(R.string.used_cache, chapterCache.getReadableSize()));
|
||||
}));
|
||||
}
|
||||
|
||||
private void clearDatabase() {
|
||||
final DatabaseHelper db = getSettingsActivity().db;
|
||||
|
||||
new MaterialDialog.Builder(getActivity())
|
||||
.content(R.string.clear_database_confirmation)
|
||||
.positiveText(R.string.button_yes)
|
||||
.negativeText(R.string.button_no)
|
||||
.onPositive((dialog1, which) -> {
|
||||
db.deleteMangasNotInLibrary().executeAsBlocking();
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
private ChapterCache getChapterCache() {
|
||||
return getSettingsActivity().chapterCache;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
package eu.kanade.mangafeed.ui.setting;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.Preference;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.cache.CacheManager;
|
||||
import eu.kanade.mangafeed.ui.setting.preference.IntListPreference;
|
||||
import eu.kanade.mangafeed.util.ToastUtil;
|
||||
import rx.Observable;
|
||||
import rx.Subscription;
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
import rx.schedulers.Schedulers;
|
||||
|
||||
public class SettingsCacheFragment extends SettingsNestedFragment implements Preference.OnPreferenceClickListener {
|
||||
|
||||
private CacheManager cacheManager;
|
||||
private Preference clearCache;
|
||||
private Subscription clearChapterCacheSubscription;
|
||||
|
||||
public static SettingsNestedFragment newInstance(int resourcePreference, int resourceTitle) {
|
||||
SettingsNestedFragment fragment = new SettingsCacheFragment();
|
||||
fragment.setArgs(resourcePreference, resourceTitle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
|
||||
View view = super.onCreateView(inflater, container, savedState);
|
||||
|
||||
cacheManager = getSettingsActivity().cacheManager;
|
||||
|
||||
IntListPreference cacheSize = (IntListPreference)findPreference(getString(R.string.pref_chapter_cache_size_key));
|
||||
cacheSize.setOnPreferenceChangeListener(
|
||||
(preference, newValue) -> {
|
||||
cacheManager.setSize(Integer.parseInt(newValue.toString()));
|
||||
return true;
|
||||
});
|
||||
|
||||
clearCache = findPreference(getString(R.string.pref_clear_chapter_cache_key));
|
||||
clearCache.setOnPreferenceClickListener(this);
|
||||
clearCache.setSummary(getString(R.string.used_cache, cacheManager.getReadableSize()));
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
if (preference.equals(clearCache)) {
|
||||
clearChapterCache();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void clearChapterCache() {
|
||||
final AtomicInteger deletedFiles = new AtomicInteger();
|
||||
|
||||
File[] files = cacheManager.getCacheDir().listFiles();
|
||||
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(getActivity())
|
||||
.title(R.string.deleting)
|
||||
.progress(false, files.length, true)
|
||||
.cancelable(false)
|
||||
.dismissListener(d -> {
|
||||
if (clearChapterCacheSubscription != null && !clearChapterCacheSubscription.isUnsubscribed())
|
||||
clearChapterCacheSubscription.unsubscribe();
|
||||
})
|
||||
.show();
|
||||
|
||||
clearChapterCacheSubscription = Observable.defer(() -> Observable.from(files))
|
||||
.concatMap(file -> {
|
||||
if (cacheManager.remove(file.getName())) {
|
||||
deletedFiles.incrementAndGet();
|
||||
}
|
||||
return Observable.just(file);
|
||||
})
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(file -> dialog.incrementProgress(1),
|
||||
error -> {
|
||||
dialog.dismiss();
|
||||
ToastUtil.showShort(getActivity(), getString(R.string.cache_delete_error));
|
||||
}, () -> {
|
||||
dialog.dismiss();
|
||||
ToastUtil.showShort(getActivity(), getString(R.string.cache_deleted, deletedFiles.get()));
|
||||
clearCache.setSummary(getString(R.string.used_cache, cacheManager.getReadableSize()));
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user