浏览代码

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

inorichi 9 年之前
父节点
当前提交
8be44c209c
共有 18 个文件被更改,包括 71 次插入20 次删除
  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. 二进制
      app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png
  6. 二进制
      app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png
  7. 二进制
      app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png
  8. 二进制
      app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png
  9. 二进制
      app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png
  10. 二进制
      app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png
  11. 二进制
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png
  12. 二进制
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png
  13. 二进制
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png
  14. 二进制
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png
  15. 二进制
      app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png
  16. 二进制
      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();

二进制
app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png


二进制
app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png


二进制
app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png


二进制
app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png


二进制
app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png


二进制
app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png


二进制
app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png


二进制
app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png


二进制
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png


二进制
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png


二进制
app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png


二进制
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"