浏览代码

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

inorichi 10 年之前
父节点
当前提交
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"