Jelajahi Sumber

Show selected decoder and background color in the popup menu. Reload adapter when the decoder changes.

inorichi 10 tahun lalu
induk
melakukan
8be44c209c
18 mengubah file dengan 71 tambahan dan 20 penghapusan
  1. 24 12
      app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java
  2. 4 0
      app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java
  3. 3 0
      app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java
  4. 14 0
      app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java
  5. TEMPAT SAMPAH
      app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png
  6. TEMPAT SAMPAH
      app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png
  7. TEMPAT SAMPAH
      app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png
  8. TEMPAT SAMPAH
      app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png
  9. TEMPAT SAMPAH
      app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png
  10. TEMPAT SAMPAH
      app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png
  11. TEMPAT SAMPAH
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png
  12. TEMPAT SAMPAH
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png
  13. TEMPAT SAMPAH
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png
  14. TEMPAT SAMPAH
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png
  15. TEMPAT SAMPAH
      app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png
  16. TEMPAT SAMPAH
      app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_unselected.png
  17. 5 0
      app/src/main/res/drawable/reader_background_checkbox.xml
  18. 21 8
      app/src/main/res/layout/reader_popup.xml

+ 24 - 12
app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java

@@ -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);
         }
 
     }

+ 4 - 0
app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java

@@ -61,4 +61,8 @@ public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonHolder> {
         fragment.getReaderActivity().getPresenter().retryPage(page);
     }
 
+    public WebtoonReader getReader() {
+        return fragment;
+    }
+
 }

+ 3 - 0
app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java

@@ -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()));
     }
 

+ 14 - 0
app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java

@@ -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();

TEMPAT SAMPAH
app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png


TEMPAT SAMPAH
app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png


TEMPAT SAMPAH
app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png


TEMPAT SAMPAH
app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_unselected.png


+ 5 - 0
app/src/main/res/drawable/reader_background_checkbox.xml

@@ -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>

+ 21 - 8
app/src/main/res/layout/reader_popup.xml

@@ -8,18 +8,31 @@
     android:paddingTop="5dp"
     android:paddingBottom="5dp">
 
-    <TextView
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+
+        <TextView
+            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"
+            style="@style/reader_menu_settings_item"
+            android:text="@string/pref_image_decoder"/>
+
+    </LinearLayout>
+
+    <CheckBox
         android:id="@+id/reader_theme"
-        android:paddingLeft="32dp"
         style="@style/reader_menu_settings_item"
+        android:button="@drawable/reader_background_checkbox"
         android:text="@string/pref_reader_theme"/>
 
-    <TextView
-        android:id="@+id/image_decoder"
-        android:paddingLeft="32dp"
-        style="@style/reader_menu_settings_item"
-        android:text="@string/pref_image_decoder"/>
-
     <CheckBox
         android:id="@+id/enable_transitions"
         style="@style/reader_menu_settings_item"