瀏覽代碼

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"