Procházet zdrojové kódy

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

inorichi před 10 roky
rodič
revize
8be44c209c
18 změnil soubory, kde provedl 71 přidání a 20 odebrání
  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. binární
      app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png
  6. binární
      app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png
  7. binární
      app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png
  8. binární
      app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png
  9. binární
      app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png
  10. binární
      app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png
  11. binární
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png
  12. binární
      app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png
  13. binární
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png
  14. binární
      app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png
  15. binární
      app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png
  16. binární
      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();

binární
app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png


binární
app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png


binární
app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png


binární
app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png


binární
app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png


binární
app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png


binární
app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png


binární
app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png


binární
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png


binární
app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png


binární
app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png


binární
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"