Update
This commit is contained in:
1 parent
dc465e89a6
commit
cd852f4003
24 files changed
+456
-62
No files matched your search
@@ -20,6 +20,7 @@ import com.hippo.yorozuya.Messenger;
|
||||
|
||||
public final class Constants {
|
||||
|
||||
public static final int MESSENGER_ID_READING_DIRECTION;
|
||||
public static final int MESSENGER_ID_EH_SOURCE;
|
||||
public static final int MESSENGER_ID_SHOW_APP_STATUS;
|
||||
public static final int MESSENGER_ID_SIGN_IN_OR_OUT;
|
||||
@@ -30,6 +31,7 @@ public final class Constants {
|
||||
|
||||
static {
|
||||
Messenger messenger = Messenger.getInstance();
|
||||
MESSENGER_ID_READING_DIRECTION = messenger.newId();
|
||||
MESSENGER_ID_EH_SOURCE = messenger.newId();
|
||||
MESSENGER_ID_SHOW_APP_STATUS = messenger.newId();
|
||||
MESSENGER_ID_SIGN_IN_OR_OUT = messenger.newId();
|
||||
|
||||
@@ -714,7 +714,6 @@ public class GLView implements TouchOwner {
|
||||
public void setMinimumWidth(int minWidth) {
|
||||
mMinWidth = minWidth;
|
||||
requestLayout();
|
||||
|
||||
}
|
||||
|
||||
protected void setMeasuredSize(int width, int height) {
|
||||
|
||||
@@ -55,12 +55,11 @@ public class GalleryLayout extends FrameLayout implements GalleryView.ActionList
|
||||
@Override
|
||||
public void onTapCenter() {
|
||||
mGalleryPanel.setShown(true, true);
|
||||
mActionListener.onShowGalleryPanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSetMode(GalleryView.Mode mode) {
|
||||
mGalleryPanel.setRange(1, mGalleryView.getPages());
|
||||
mGalleryPanel.setGalleryViewMode(mode, mGalleryView.getPages());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,6 +76,11 @@ public class GalleryLayout extends FrameLayout implements GalleryView.ActionList
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShow() {
|
||||
mActionListener.onShowGalleryPanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHide() {
|
||||
mActionListener.onHideGalleryPanel();
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.hippo.ehviewer.gallery.ui;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
@@ -30,7 +31,8 @@ import com.hippo.util.AnimationUtils;
|
||||
import com.hippo.widget.FitPaddingImpl;
|
||||
import com.hippo.yorozuya.LayoutUtils;
|
||||
|
||||
public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSetProgressListener {
|
||||
public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSetProgressListener,
|
||||
GLView.OnClickListener {
|
||||
|
||||
private static final String KEY_SHOWN = "shown_key";
|
||||
|
||||
@@ -42,13 +44,14 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
private XmlResourceView mShare;
|
||||
|
||||
private LinearLayout mBottomView;
|
||||
private TextView mProgressTextView;
|
||||
private TextView mPagesTextView;
|
||||
private TextView mLeftTextView;
|
||||
private TextView mRightTextView;
|
||||
private Slider mSlider;
|
||||
|
||||
private float mShowPercent = 0.0f;
|
||||
|
||||
private int mEnd = 0;
|
||||
private GalleryView.Mode mGalleryViewMode = GalleryView.Mode.NONE;
|
||||
private int mPages = 0;
|
||||
|
||||
private ActionListener mListener;
|
||||
|
||||
@@ -77,12 +80,15 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
mScreenRotation = new XmlResourceView();
|
||||
XmlResourceTexture screenRotationTexture = new XmlResourceTexture(context, R.drawable.ic_screen_rotation_dark_x48);
|
||||
mScreenRotation.setTexture(screenRotationTexture);
|
||||
mScreenRotation.setOnClickListener(this);
|
||||
mRefresh = new XmlResourceView();
|
||||
XmlResourceTexture refreshTexture = new XmlResourceTexture(context, R.drawable.ic_refresh_dark_x48);
|
||||
mRefresh.setTexture(refreshTexture);
|
||||
mRefresh.setOnClickListener(this);
|
||||
mShare = new XmlResourceView();
|
||||
XmlResourceTexture shareTexture = new XmlResourceTexture(context, R.drawable.ic_share_dark_x48);
|
||||
mShare.setTexture(shareTexture);
|
||||
mShare.setOnClickListener(this);
|
||||
|
||||
int actionSize = LayoutUtils.dp2pix(context, 48);
|
||||
lp = new LinearLayout.LayoutParams(
|
||||
@@ -100,10 +106,10 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
mBottomView.setBackgroundColor(background);
|
||||
mBottomView.setPaddingLeft(LayoutUtils.dp2pix(context, 8));
|
||||
mBottomView.setPaddingRight(LayoutUtils.dp2pix(context, 8));
|
||||
mProgressTextView = new TextView(sTextTexture);
|
||||
mProgressTextView.setGravity(Gravity.CENTER);
|
||||
mPagesTextView = new TextView(sTextTexture);
|
||||
mPagesTextView.setGravity(Gravity.CENTER);
|
||||
mLeftTextView = new TextView(sTextTexture);
|
||||
mLeftTextView.setGravity(Gravity.CENTER);
|
||||
mRightTextView = new TextView(sTextTexture);
|
||||
mRightTextView.setGravity(Gravity.CENTER);
|
||||
mSlider = new Slider(context);
|
||||
mSlider.setPaddings(LayoutUtils.dp2pix(context, 8), LayoutUtils.dp2pix(context, 18),
|
||||
LayoutUtils.dp2pix(context, 8), LayoutUtils.dp2pix(context, 18));
|
||||
@@ -113,7 +119,7 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
lp = new LinearLayout.LayoutParams(
|
||||
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
||||
lp.gravity = Gravity.CENTER_VERTICAL;
|
||||
mBottomView.addComponent(mProgressTextView, lp);
|
||||
mBottomView.addComponent(mLeftTextView, lp);
|
||||
lp = new LinearLayout.LayoutParams(
|
||||
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
|
||||
lp.gravity = Gravity.CENTER_VERTICAL;
|
||||
@@ -122,7 +128,7 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
lp = new LinearLayout.LayoutParams(
|
||||
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
||||
lp.gravity = Gravity.CENTER_VERTICAL;
|
||||
mBottomView.addComponent(mPagesTextView, lp);
|
||||
mBottomView.addComponent(mRightTextView, lp);
|
||||
|
||||
addComponent(mRightView, new LayoutParams(
|
||||
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
|
||||
@@ -140,7 +146,15 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
};
|
||||
}
|
||||
|
||||
public boolean isShown() {
|
||||
return mShown;
|
||||
}
|
||||
|
||||
public void setShown(boolean shown, boolean animation) {
|
||||
if (shown && mGalleryViewMode == GalleryView.Mode.NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mShown != shown) {
|
||||
mShown = shown;
|
||||
|
||||
@@ -150,7 +164,9 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
mAnimation.forceReset();
|
||||
invalidate();
|
||||
|
||||
if (!shown) {
|
||||
if (shown) {
|
||||
mListener.onShow();
|
||||
} else {
|
||||
mListener.onHide();
|
||||
}
|
||||
}
|
||||
@@ -174,32 +190,48 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
@Override
|
||||
protected void onLayout(
|
||||
boolean changeSize, int left, int top, int right, int bottom) {
|
||||
if (changeSize) {
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
|
||||
int l = width - (int) (mRightView.getMeasuredWidth() * mShowPercent);
|
||||
mRightView.layout(l, height / 2 - mRightView.getMeasuredHeight() / 2,
|
||||
l + mRightView.getMeasuredWidth(), height / 2 + mRightView.getMeasuredHeight() / 2);
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
|
||||
int t = height - (int) (mBottomView.getMeasuredHeight() * mShowPercent);
|
||||
mBottomView.layout(0, t, width, t + mBottomView.getMeasuredHeight());
|
||||
}
|
||||
int l = width - (int) (mRightView.getMeasuredWidth() * mShowPercent);
|
||||
mRightView.layout(l, height / 2 - mRightView.getMeasuredHeight() / 2,
|
||||
l + mRightView.getMeasuredWidth(), height / 2 + mRightView.getMeasuredHeight() / 2);
|
||||
|
||||
int t = height - (int) (mBottomView.getMeasuredHeight() * mShowPercent);
|
||||
mBottomView.layout(0, t, width, t + mBottomView.getMeasuredHeight());
|
||||
}
|
||||
|
||||
public void setRange(int start, int end) {
|
||||
mSlider.setRange(start, end);
|
||||
mEnd = end;
|
||||
public void setGalleryViewMode(GalleryView.Mode galleryViewMode, int pages) {
|
||||
mGalleryViewMode = galleryViewMode;
|
||||
mPages = pages;
|
||||
|
||||
String pages = Integer.toString(end);
|
||||
mProgressTextView.setMinimumWidth((int) (sTextTexture.getMaxWidth() * pages.length()));
|
||||
mPagesTextView.setMinimumWidth((int) (sTextTexture.getMaxWidth() * pages.length()));
|
||||
mPagesTextView.setText(pages);
|
||||
mSlider.setRange(1, pages);
|
||||
|
||||
String pagesStr = Integer.toString(pages);
|
||||
int maxWidth = (int) (sTextTexture.getMaxWidth() * pagesStr.length());
|
||||
mLeftTextView.setMinimumWidth(maxWidth);
|
||||
mRightTextView.setMinimumWidth(maxWidth);
|
||||
|
||||
if (galleryViewMode == GalleryView.Mode.RIGHT_TO_LEFT) {
|
||||
mSlider.setReverse(true);
|
||||
mLeftTextView.setText(pagesStr);
|
||||
mRightTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
} else {
|
||||
mSlider.setReverse(false);
|
||||
mRightTextView.setText(pagesStr);
|
||||
mLeftTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
}
|
||||
}
|
||||
|
||||
public void setProgress(int progress) {
|
||||
mSlider.setProgress(progress);
|
||||
mProgressTextView.setText(Integer.toString(progress));
|
||||
|
||||
if (mGalleryViewMode == GalleryView.Mode.RIGHT_TO_LEFT) {
|
||||
mRightTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
} else {
|
||||
mLeftTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -212,7 +244,24 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
@Override
|
||||
public void onSetProgress(int newProgress, int oldProgress, boolean byUser) {
|
||||
mListener.onSetProgress(newProgress, oldProgress, byUser);
|
||||
mProgressTextView.setText(Integer.toString(newProgress));
|
||||
|
||||
if (mGalleryViewMode == GalleryView.Mode.RIGHT_TO_LEFT) {
|
||||
mRightTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
} else {
|
||||
mLeftTextView.setText(Integer.toString(mSlider.getProgress()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onClick(GLView v) {
|
||||
if (v == mScreenRotation) {
|
||||
Log.d("TAG", "mScreenRotation");
|
||||
} else if (v == mRefresh) {
|
||||
Log.d("TAG", "mRefresh");
|
||||
} else if (v == mShare) {
|
||||
Log.d("TAG", "mShare");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -240,6 +289,8 @@ public class GalleryPanel extends GLView implements FitPaddingImpl, Slider.OnSet
|
||||
public interface ActionListener {
|
||||
void onSetProgress(int newProgress, int oldProgress, boolean byUser);
|
||||
|
||||
void onShow();
|
||||
|
||||
void onHide();
|
||||
}
|
||||
}
|
||||
@@ -7,17 +7,19 @@ import android.view.MotionEvent;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.view.animation.OvershootInterpolator;
|
||||
|
||||
import com.hippo.ehviewer.Constants;
|
||||
import com.hippo.ehviewer.gallery.anim.Animation;
|
||||
import com.hippo.ehviewer.gallery.glrenderer.GLCanvas;
|
||||
import com.hippo.ehviewer.gallery.util.GalleryUtils;
|
||||
import com.hippo.yorozuya.IntArray;
|
||||
import com.hippo.yorozuya.MathUtils;
|
||||
import com.hippo.yorozuya.Messenger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Stack;
|
||||
|
||||
public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
public class GalleryView extends GLView implements GestureRecognizer.Listener, Messenger.Receiver {
|
||||
|
||||
private static final String TAG = GalleryView.class.getSimpleName();
|
||||
|
||||
@@ -95,10 +97,29 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
private ActionListener mListener;
|
||||
|
||||
public enum Mode {
|
||||
NONE, // Just a progress view
|
||||
LEFT_TO_RIGHT,
|
||||
RIGHT_TO_LEFT,
|
||||
TOP_TO_BOTTOM
|
||||
NONE (-1), // Just a progress view
|
||||
LEFT_TO_RIGHT (0),
|
||||
RIGHT_TO_LEFT (1),
|
||||
TOP_TO_BOTTOM (2);
|
||||
|
||||
Mode(int ni) {
|
||||
nativeInt = ni;
|
||||
}
|
||||
final int nativeInt;
|
||||
}
|
||||
|
||||
public static Mode intToMode(int value) {
|
||||
switch (value) {
|
||||
case -1:
|
||||
return Mode.NONE;
|
||||
case 0:
|
||||
return Mode.LEFT_TO_RIGHT;
|
||||
default:
|
||||
case 1:
|
||||
return Mode.RIGHT_TO_LEFT;
|
||||
case 2:
|
||||
return Mode.TOP_TO_BOTTOM;
|
||||
}
|
||||
}
|
||||
|
||||
public enum Scale {
|
||||
@@ -127,6 +148,19 @@ public class GalleryView extends GLView implements GestureRecognizer.Listener {
|
||||
mSmoothScaler = new SmoothScaler();
|
||||
mSmoothScaler.setInterpolator(SMOOTH_SCALER_INTERPOLATOR);
|
||||
mRecycler = new Recycler();
|
||||
|
||||
Messenger.getInstance().register(Constants.MESSENGER_ID_READING_DIRECTION, this);
|
||||
}
|
||||
|
||||
public void onClose() {
|
||||
Messenger.getInstance().unregister(Constants.MESSENGER_ID_READING_DIRECTION, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceive(int id, Object obj) {
|
||||
if (Constants.MESSENGER_ID_READING_DIRECTION == id) {
|
||||
setMode(intToMode((Integer) obj));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -41,7 +41,6 @@ public class GalleryUtils {
|
||||
// works most of the time, but that's ok because it's for debugging only.
|
||||
|
||||
private static volatile Thread sCurrentThread;
|
||||
private static volatile boolean sWarned;
|
||||
|
||||
public static void setRenderThread() {
|
||||
sCurrentThread = Thread.currentThread();
|
||||
|
||||
@@ -48,6 +48,7 @@ import com.hippo.ehviewer.gallery.ui.GalleryLayout;
|
||||
import com.hippo.ehviewer.gallery.ui.GalleryPageView;
|
||||
import com.hippo.ehviewer.gallery.ui.GalleryPanel;
|
||||
import com.hippo.ehviewer.gallery.ui.GalleryView;
|
||||
import com.hippo.ehviewer.util.Settings;
|
||||
import com.hippo.util.SystemUiHelper;
|
||||
import com.hippo.yorozuya.PriorityThreadFactory;
|
||||
import com.hippo.yorozuya.SimpleHandler;
|
||||
@@ -72,6 +73,7 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
public static final SparseArray<CloseGalleryProviderTask> sCloseGalleryProviderTaskMap = new SparseArray<>();
|
||||
|
||||
private SystemUiHelper mSystemUiHelper;
|
||||
private boolean mSystemUiShowing = false;
|
||||
|
||||
private Resources mResources;
|
||||
|
||||
@@ -151,12 +153,15 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
return;
|
||||
}
|
||||
|
||||
mSystemUiHelper = new SystemUiHelper(this, SystemUiHelper.LEVEL_IMMERSIVE,
|
||||
mSystemUiHelper = new SystemUiHelper(this,
|
||||
Settings.getReadingHideNavBar() ? SystemUiHelper.LEVEL_IMMERSIVE : SystemUiHelper.LEVEL_HIDE_STATUS_BAR,
|
||||
SystemUiHelper.FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES | SystemUiHelper.FLAG_IMMERSIVE_STICKY);
|
||||
if (savedInstanceState == null || !savedInstanceState.getBoolean(KEY_SHOWING, false)) {
|
||||
mSystemUiHelper.hide();
|
||||
mSystemUiShowing = false;
|
||||
} else {
|
||||
mSystemUiHelper.show();
|
||||
mSystemUiShowing = true;
|
||||
}
|
||||
|
||||
mResources = getResources();
|
||||
@@ -202,7 +207,7 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
if (mSize <= 0) {
|
||||
setMode(GalleryView.Mode.NONE);
|
||||
} else {
|
||||
setMode(GalleryView.Mode.LEFT_TO_RIGHT);
|
||||
setMode(GalleryView.intToMode(Settings.getReadingDirection()));
|
||||
}
|
||||
mGalleryProvider.addGalleryProviderListener(this);
|
||||
|
||||
@@ -226,7 +231,7 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putInt(KEY_HASH_CODE, hashCode());
|
||||
outState.putBoolean(KEY_SHOWING, mSystemUiHelper.isShowing());
|
||||
outState.putBoolean(KEY_SHOWING, mSystemUiShowing);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -261,17 +266,30 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
clearTiledTextureInPage((GalleryPageView) view);
|
||||
}
|
||||
}
|
||||
|
||||
mGalleryView.onClose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
|
||||
if (mSystemUiHelper.isShowing()) {
|
||||
mSystemUiHelper.show();
|
||||
if (hasFocus) {
|
||||
if (mSystemUiShowing) {
|
||||
mSystemUiHelper.show();
|
||||
} else {
|
||||
mSystemUiHelper.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (mGalleryPanel.isShown()) {
|
||||
mGalleryPanel.setShown(false, true);
|
||||
} else {
|
||||
mSystemUiHelper.hide();
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +320,7 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
public void onGetSize(int size) {
|
||||
if (mSize != size) {
|
||||
mSize = size;
|
||||
setMode(GalleryView.Mode.LEFT_TO_RIGHT);
|
||||
setMode(GalleryView.intToMode(Settings.getReadingDirection()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,11 +467,17 @@ public class GalleryActivity extends StatsActivity implements TiledTexture.OnFre
|
||||
@Override
|
||||
public void onShowGalleryPanel() {
|
||||
mSystemUiHelper.show();
|
||||
mSystemUiShowing = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHideGalleryPanel() {
|
||||
mSystemUiHelper.hide();
|
||||
if (Settings.getReadingHideNavBar()) {
|
||||
mSystemUiHelper.delayHide(3000);
|
||||
} else {
|
||||
mSystemUiHelper.hide();
|
||||
}
|
||||
mSystemUiShowing = false;
|
||||
}
|
||||
|
||||
class GalleryAdapter extends GalleryView.Adapter {
|
||||
|
||||
@@ -21,10 +21,11 @@ import android.support.v4.content.ContextCompat;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.ui.ContentActivity;
|
||||
import com.hippo.ehviewer.ui.scene.preference.AdvanceSettingsScene;
|
||||
import com.hippo.ehviewer.ui.scene.preference.AdvancedSettingsScene;
|
||||
import com.hippo.ehviewer.ui.scene.preference.DisplaySettingsScene;
|
||||
import com.hippo.ehviewer.ui.scene.preference.DownloadSettingsScene;
|
||||
import com.hippo.ehviewer.ui.scene.preference.EHSettingsScene;
|
||||
import com.hippo.ehviewer.ui.scene.preference.ReadingSettingsScene;
|
||||
import com.hippo.scene.preference.PreferenceHeader;
|
||||
import com.hippo.scene.preference.PreferenceHeaderScene;
|
||||
|
||||
@@ -48,6 +49,10 @@ public final class MainSettingsScene extends PreferenceHeaderScene {
|
||||
R.drawable.ic_cellphone_android_theme_accent,
|
||||
R.string.settings_display,
|
||||
DisplaySettingsScene.class),
|
||||
newPreferenceHeader(
|
||||
R.drawable.ic_book_open_theme_accent_x24,
|
||||
R.string.settings_reading,
|
||||
ReadingSettingsScene.class),
|
||||
newPreferenceHeader(
|
||||
R.drawable.ic_eh_theme_accent,
|
||||
R.string.settings_eh,
|
||||
@@ -58,8 +63,8 @@ public final class MainSettingsScene extends PreferenceHeaderScene {
|
||||
DownloadSettingsScene.class),
|
||||
newPreferenceHeader(
|
||||
R.drawable.ic_black_mesa_theme_accent,
|
||||
R.string.settings_advance,
|
||||
AdvanceSettingsScene.class)
|
||||
R.string.settings_advanced,
|
||||
AdvancedSettingsScene.class)
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import com.hippo.scene.preference.SwitchPreference;
|
||||
import com.hippo.yorozuya.FileUtils;
|
||||
import com.hippo.yorozuya.Messenger;
|
||||
|
||||
public class AdvanceSettingsScene extends PreferenceScene implements
|
||||
public class AdvancedSettingsScene extends PreferenceScene implements
|
||||
Preference.OnValueChangeListener, Preference.OnClickListener {
|
||||
|
||||
private static final String KEY_SHOW_APPLICATION_STATS = "show_application_stats";
|
||||
@@ -56,7 +56,7 @@ public final class EHSettingsScene extends PreferenceScene implements Preference
|
||||
ListPreference sourcePreference = new ListPreference(this, Settings.KEY_EH_SOURCE,
|
||||
resources.getString(R.string.settings_eh_source_title), null);
|
||||
sourcePreference.setKeys(resources.getStringArray(R.array.settings_eh_source_entries));
|
||||
sourcePreference.setValues(resources.getIntArray(R.array.settings_eh_source_entry_values));
|
||||
sourcePreference.setValues(resources.getIntArray(R.array.settings_eh_source_values));
|
||||
sourcePreference.setDefaultValue(Settings.DEFAULT_EH_SOURCE);
|
||||
sourcePreference.setOnValueChangeListener(this);
|
||||
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright 2015 Hippo Seven
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.hippo.ehviewer.ui.scene.preference;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
|
||||
import com.hippo.ehviewer.Constants;
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.ehviewer.util.Settings;
|
||||
import com.hippo.scene.preference.ListPreference;
|
||||
import com.hippo.scene.preference.Preference;
|
||||
import com.hippo.scene.preference.PreferenceScene;
|
||||
import com.hippo.scene.preference.PreferenceSet;
|
||||
import com.hippo.scene.preference.SwitchPreference;
|
||||
import com.hippo.yorozuya.Messenger;
|
||||
|
||||
public class ReadingSettingsScene extends PreferenceScene implements ListPreference.OnValueChangeListener {
|
||||
|
||||
@Override
|
||||
protected void onCreate(boolean rebirth) {
|
||||
super.onCreate(rebirth);
|
||||
|
||||
setTitle(R.string.settings_reading);
|
||||
setIcon(R.drawable.ic_arrow_left_dark);
|
||||
|
||||
setPreferenceSet(getPreferenceSet());
|
||||
}
|
||||
|
||||
private PreferenceSet[] getPreferenceSet() {
|
||||
Resources resources = getStageActivity().getResources();
|
||||
|
||||
// Reading direction
|
||||
ListPreference directionPreference = new ListPreference(this, Settings.KEY_READING_DIRECTION,
|
||||
resources.getString(R.string.settings_reading_direction_title), null);
|
||||
directionPreference.setKeys(resources.getStringArray(R.array.settings_reading_direction_entries));
|
||||
directionPreference.setValues(resources.getIntArray(R.array.settings_reading_direction_values));
|
||||
directionPreference.setDefaultValue(Settings.DEFAULT_READING_DIRECTION);
|
||||
directionPreference.setOnValueChangeListener(this);
|
||||
|
||||
// Hide nav bar
|
||||
SwitchPreference hideNavbarPreference = new SwitchPreference(Settings.KEY_READING_HIDE_NAV_BAR,
|
||||
resources.getString(R.string.settings_reading_hide_nav_bar_title),
|
||||
resources.getString(R.string.settings_reading_hide_nav_bar_summary));
|
||||
hideNavbarPreference.setSummaryOn(resources.getString(R.string.settings_reading_hide_nav_bar_summary_on));
|
||||
hideNavbarPreference.setSummaryOff(resources.getString(R.string.settings_reading_hide_nav_bar_summary_off));
|
||||
hideNavbarPreference.setDefaultValue(Settings.getReadingHideNavBar());
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
|
||||
hideNavbarPreference.setEnable(false);
|
||||
}
|
||||
|
||||
PreferenceSet preferenceSet = new PreferenceSet();
|
||||
preferenceSet.setPreferenceList(new Preference[] {
|
||||
directionPreference,
|
||||
hideNavbarPreference
|
||||
});
|
||||
|
||||
return new PreferenceSet[] {
|
||||
preferenceSet
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean OnValueChange(Preference preference, Object newValue) {
|
||||
String key = preference.getKey();
|
||||
switch (key) {
|
||||
case Settings.KEY_READING_DIRECTION:
|
||||
Messenger.getInstance().notify(Constants.MESSENGER_ID_READING_DIRECTION, newValue);
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -136,6 +136,29 @@ public final class Settings {
|
||||
}
|
||||
}
|
||||
|
||||
/****** Reading ******/
|
||||
public static final String KEY_READING_DIRECTION = "reading_direction";
|
||||
public static final int DEFAULT_READING_DIRECTION = 1;
|
||||
public static final String KEY_READING_HIDE_NAV_BAR = "reading_hide_nav_bar";
|
||||
public static final boolean DEFAULT_READING_HIDE_NAV_BAR = true;
|
||||
|
||||
public static void putReadingDirection(int value) {
|
||||
putInt(KEY_READING_DIRECTION, value);
|
||||
}
|
||||
|
||||
public static int getReadingDirection() {
|
||||
return getInt(KEY_READING_DIRECTION, DEFAULT_READING_DIRECTION);
|
||||
}
|
||||
|
||||
public static void putReadingHideNavBar(boolean value) {
|
||||
putBoolean(KEY_READING_HIDE_NAV_BAR, value);
|
||||
}
|
||||
|
||||
public static boolean getReadingHideNavBar() {
|
||||
return getBoolean(KEY_READING_HIDE_NAV_BAR, DEFAULT_READING_HIDE_NAV_BAR);
|
||||
}
|
||||
|
||||
|
||||
/****** EH ******/
|
||||
public static final String KEY_EH_SOURCE = "eh_source";
|
||||
public static final int DEFAULT_EH_SOURCE = EhUrl.SOURCE_G;
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.hippo.ehviewer.R;
|
||||
import com.hippo.yorozuya.ViewUtils;
|
||||
|
||||
// TODO Need a better way to update it
|
||||
public class Preference extends PreferenceBase {
|
||||
@@ -35,6 +36,8 @@ public class Preference extends PreferenceBase {
|
||||
private String mTitle;
|
||||
private String mSummary;
|
||||
|
||||
private boolean mEnable = true;
|
||||
|
||||
private OnClickListener mOnClickListener;
|
||||
private OnValueChangeListener mOnValueChangeListener;
|
||||
private ViewHolderGetter mViewHolderGetter;
|
||||
@@ -70,6 +73,18 @@ public class Preference extends PreferenceBase {
|
||||
mPosition = position;
|
||||
}
|
||||
|
||||
public boolean getEnable() {
|
||||
return mEnable;
|
||||
}
|
||||
|
||||
public void setEnable(boolean enable) {
|
||||
mEnable = enable;
|
||||
RecyclerView.ViewHolder viewHolder = getViewHolder();
|
||||
if (viewHolder != null) {
|
||||
ViewUtils.setEnabledRecursively(viewHolder.itemView, mEnable);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the text display below title
|
||||
*/
|
||||
@@ -125,6 +140,8 @@ public class Preference extends PreferenceBase {
|
||||
}
|
||||
|
||||
onUpdateView(viewHolder);
|
||||
|
||||
ViewUtils.setEnabledRecursively(pvh.itemView, mEnable);
|
||||
}
|
||||
|
||||
protected void onBind(Context context, FrameLayout widgetFrame) {
|
||||
|
||||
@@ -52,8 +52,9 @@ public class SwitchPreference extends Preference {
|
||||
@Override
|
||||
public String getDisplaySummary() {
|
||||
String displaySummary = getValue() ? mSummaryOn : mSummaryOff;
|
||||
if (displaySummary == null) {
|
||||
displaySummary = getSummary();
|
||||
String summary = getSummary();
|
||||
if (displaySummary == null || (!getEnable() && summary != null)) {
|
||||
displaySummary = summary;
|
||||
}
|
||||
return displaySummary;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user