Show selected decoder and background color in the popup menu. Reload adapter when the decoder changes.
@ -29,6 +29,7 @@ import eu.kanade.mangafeed.R;
|
||||
import eu.kanade.mangafeed.data.database.models.Chapter;
|
||||
import eu.kanade.mangafeed.data.database.models.Manga;
|
||||
import eu.kanade.mangafeed.data.preference.PreferencesHelper;
|
||||
import eu.kanade.mangafeed.ui.reader.viewer.base.BaseReader;
|
||||
import icepick.State;
|
||||
import rx.Subscription;
|
||||
|
||||
@ -245,8 +246,9 @@ public class ReaderMenu {
|
||||
@Bind(R.id.show_page_number) CheckBox showPageNumber;
|
||||
@Bind(R.id.hide_status_bar) CheckBox hideStatusBar;
|
||||
@Bind(R.id.keep_screen_on) CheckBox keepScreenOn;
|
||||
@Bind(R.id.reader_theme) CheckBox readerTheme;
|
||||
@Bind(R.id.image_decoder) TextView imageDecoder;
|
||||
@Bind(R.id.reader_theme) TextView readerTheme;
|
||||
@Bind(R.id.image_decoder_initial) TextView imageDecoderInitial;
|
||||
|
||||
public SettingsPopupWindow(View view) {
|
||||
super(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
||||
@ -261,6 +263,8 @@ public class ReaderMenu {
|
||||
showPageNumber.setChecked(preferences.showPageNumber().get());
|
||||
hideStatusBar.setChecked(preferences.hideStatusBar().get());
|
||||
keepScreenOn.setChecked(preferences.keepScreenOn().get());
|
||||
readerTheme.setChecked(preferences.readerTheme().get() == 1);
|
||||
setDecoderInitial(preferences.imageDecoder().get());
|
||||
|
||||
// Add a listener to change the corresponding setting
|
||||
enableTransitions.setOnCheckedChangeListener((view, isChecked) ->
|
||||
@ -275,6 +279,9 @@ public class ReaderMenu {
|
||||
keepScreenOn.setOnCheckedChangeListener((view, isChecked) ->
|
||||
preferences.keepScreenOn().set(isChecked));
|
||||
|
||||
readerTheme.setOnCheckedChangeListener((view, isChecked) ->
|
||||
preferences.readerTheme().set(isChecked ? 1 : 0));
|
||||
|
||||
imageDecoder.setOnClickListener(v -> {
|
||||
showImmersiveDialog(new MaterialDialog.Builder(activity)
|
||||
.title(R.string.pref_image_decoder)
|
||||
@ -282,22 +289,27 @@ public class ReaderMenu {
|
||||
.itemsCallbackSingleChoice(preferences.imageDecoder().get(),
|
||||
(dialog, itemView, which, text) -> {
|
||||
preferences.imageDecoder().set(which);
|
||||
setDecoderInitial(which);
|
||||
return true;
|
||||
})
|
||||
.build());
|
||||
});
|
||||
}
|
||||
|
||||
readerTheme.setOnClickListener(v -> {
|
||||
showImmersiveDialog(new MaterialDialog.Builder(activity)
|
||||
.title(R.string.pref_reader_theme)
|
||||
.items(R.array.reader_themes)
|
||||
.itemsCallbackSingleChoice(preferences.readerTheme().get(),
|
||||
(dialog, itemView, which, text) -> {
|
||||
preferences.readerTheme().set(which);
|
||||
return true;
|
||||
})
|
||||
.build());
|
||||
});
|
||||
private void setDecoderInitial(int decoder) {
|
||||
String initial;
|
||||
switch (decoder) {
|
||||
case BaseReader.SKIA_DECODER:
|
||||
initial = "S";
|
||||
break;
|
||||
case BaseReader.RAPID_DECODER:
|
||||
initial = "R";
|
||||
break;
|
||||
default:
|
||||
initial = "";
|
||||
break;
|
||||
}
|
||||
imageDecoderInitial.setText(initial);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -61,4 +61,8 @@ public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonHolder> {
|
||||
fragment.getReaderActivity().getPresenter().retryPage(page);
|
||||
}
|
||||
|
||||
public WebtoonReader getReader() {
|
||||
return fragment;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,9 +26,11 @@ public class WebtoonHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private Animation fadeInAnimation;
|
||||
private Page page;
|
||||
private WebtoonAdapter adapter;
|
||||
|
||||
public WebtoonHolder(View view, WebtoonAdapter adapter, View.OnTouchListener touchListener) {
|
||||
super(view);
|
||||
this.adapter = adapter;
|
||||
ButterKnife.bind(this, view);
|
||||
|
||||
fadeInAnimation = AnimationUtils.loadAnimation(view.getContext(), R.anim.fade_in);
|
||||
@ -88,6 +90,7 @@ public class WebtoonHolder extends RecyclerView.ViewHolder {
|
||||
setErrorButtonVisible(false);
|
||||
setProgressVisible(false);
|
||||
setImageVisible(true);
|
||||
imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass());
|
||||
imageView.setImage(ImageSource.uri(page.getImagePath()));
|
||||
}
|
||||
|
||||
|
@ -27,6 +27,7 @@ public class WebtoonReader extends BaseReader {
|
||||
private RecyclerView recycler;
|
||||
private PreCachingLayoutManager layoutManager;
|
||||
private Subscription subscription;
|
||||
private Subscription decoderSubscription;
|
||||
private GestureDetector gestureDetector;
|
||||
|
||||
@Nullable
|
||||
@ -42,6 +43,13 @@ public class WebtoonReader extends BaseReader {
|
||||
recycler.setItemAnimator(null);
|
||||
recycler.setAdapter(adapter);
|
||||
|
||||
decoderSubscription = getReaderActivity().getPreferences().imageDecoder()
|
||||
.asObservable()
|
||||
.doOnNext(this::setRegionDecoderClass)
|
||||
.skip(1)
|
||||
.distinctUntilChanged()
|
||||
.subscribe(v -> adapter.notifyDataSetChanged());
|
||||
|
||||
gestureDetector = new GestureDetector(getActivity(), new SimpleOnGestureListener() {
|
||||
@Override
|
||||
public boolean onSingleTapConfirmed(MotionEvent e) {
|
||||
@ -63,6 +71,12 @@ public class WebtoonReader extends BaseReader {
|
||||
return recycler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
decoderSubscription.unsubscribe();
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
unsubscribeStatus();
|
||||
|
After Width: | Height: | Size: 227 B |
After Width: | Height: | Size: 249 B |
After Width: | Height: | Size: 136 B |
After Width: | Height: | Size: 153 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 148 B |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 366 B |
After Width: | Height: | Size: 387 B |
After Width: | Height: | Size: 434 B |
After Width: | Height: | Size: 499 B |
5
app/src/main/res/drawable/reader_background_checkbox.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_checked="true" android:drawable="@drawable/reader_background_checkbox_selected" />
|
||||
<item android:drawable="@drawable/reader_background_checkbox_unselected" />
|
||||
</selector>
|
@ -8,18 +8,31 @@
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/reader_theme"
|
||||
android:paddingLeft="32dp"
|
||||
style="@style/reader_menu_settings_item"
|
||||
android:text="@string/pref_reader_theme"/>
|
||||
android:id="@+id/image_decoder_initial"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="16sp"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/colorAccent"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/image_decoder"
|
||||
android:paddingLeft="32dp"
|
||||
style="@style/reader_menu_settings_item"
|
||||
android:text="@string/pref_image_decoder"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/reader_theme"
|
||||
style="@style/reader_menu_settings_item"
|
||||
android:button="@drawable/reader_background_checkbox"
|
||||
android:text="@string/pref_reader_theme"/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/enable_transitions"
|
||||
style="@style/reader_menu_settings_item"
|
||||
|