mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Show selected decoder and background color in the popup menu. Reload adapter when the decoder changes.
This commit is contained in:
		| @@ -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(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user