diff --git a/app/src/main/java/com/hippo/ehviewer/network/EhHttpClient.java b/app/src/main/java/com/hippo/ehviewer/network/EhHttpClient.java index b70d51d01..e1cbfda91 100644 --- a/app/src/main/java/com/hippo/ehviewer/network/EhHttpClient.java +++ b/app/src/main/java/com/hippo/ehviewer/network/EhHttpClient.java @@ -63,6 +63,11 @@ public class EhHttpClient extends HttpClient { mEhConfig.setDirty(); } + public void setPreviewSize(String previewSize) { + mEhConfig.previewSize = previewSize; + mEhConfig.setDirty(); + } + private String getDomain(URL uri) { String host = uri.getHost(); int length = host.length(); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/EHSettingsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/EHSettingsScene.java index ff519d822..ea0cd1a0d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/EHSettingsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/preference/EHSettingsScene.java @@ -19,8 +19,10 @@ package com.hippo.ehviewer.ui.scene.preference; import android.content.res.Resources; import com.hippo.ehviewer.Constants; +import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; -import com.hippo.ehviewer.client.EhUrl; +import com.hippo.ehviewer.client.EhConfig; +import com.hippo.ehviewer.util.Settings; import com.hippo.scene.SimpleCurtain; import com.hippo.scene.preference.ListPreference; import com.hippo.scene.preference.Preference; @@ -29,22 +31,8 @@ import com.hippo.scene.preference.PreferenceScene; import com.hippo.scene.preference.PreferenceSet; import com.hippo.util.Messenger; -public final class EHSettingsScene extends PreferenceScene implements Preference.OnClickListener { - - private static final String KEY_EH_SOURCE = "eh_source"; - private static final int DEFAULT_EH_SOURCE = EhUrl.SOURCE_G; - - private static final String KEY_EH_API = "eh_api"; - private static final int DEFAULT_EH_API = EhUrl.SOURCE_G; - - private static final String KEY_DEFAULT_CATEGORIES = "default_categories"; - private static final int DEFAULT_DEFAULT_CATEGORIES = 0; - - private static final String KEY_EXCLUDED_NAMESPACES = "excluded_namespaces"; - private static final int DEFAULT_EXCLUDED_NAMESPACES = 0; - - private static final String KEY_EXCLUDED_LANGUAGES = "excluded_languages"; - private static final String DEFAULT_EXCLUDED_LANGUAGES = ""; +public final class EHSettingsScene extends PreferenceScene implements Preference.OnClickListener, + Preference.OnValueChangeListener { @Override protected void onCreate(boolean rebirth) { @@ -64,27 +52,36 @@ public final class EHSettingsScene extends PreferenceScene implements Preference private PreferenceSet[] getPreferenceSet() { Resources resources = getStageActivity().getResources(); - ValueChangeListener valueChangeListener = new ValueChangeListener(); - - ListPreference sourcePreference = new ListPreference(this, KEY_EH_SOURCE, + // Source + 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.setDefaultValue(DEFAULT_EH_SOURCE); - sourcePreference.setOnValueChangeListener(valueChangeListener); - + sourcePreference.setDefaultValue(Settings.DEFAULT_EH_SOURCE); + sourcePreference.setOnValueChangeListener(this); + // Excluded language Preference languagePreference = new Preference( - KEY_EXCLUDED_LANGUAGES, - resources.getString(R.string.excluded_languages), null); + Settings.KEY_EXCLUDED_LANGUAGES, + resources.getString(R.string.settings_excluded_languages_title), + resources.getString(R.string.settings_excluded_languages_summary)); languagePreference.setOnClickListener(this); + // Preview size + ListPreference previewSizePreference = new ListPreference(this, Settings.KEY_PREVIEW_SIZE, + resources.getString(R.string.settings_preview_size_title), null); + previewSizePreference.setKeys(resources.getStringArray(R.array.settings_preview_size_entries)); + previewSizePreference.setValues(resources.getIntArray(R.array.settings_preview_size_values)); + previewSizePreference.setDefaultValue(Settings.DEFAULT_PREVIEW_SIZE); + previewSizePreference.setOnValueChangeListener(this); + PreferenceSet preferenceSet = new PreferenceSet(); preferenceSet.setPreferenceCategory(new PreferenceCategory(resources.getString(R.string.settings_eh))); preferenceSet.setPreferenceList(new Preference[] { sourcePreference, - languagePreference + languagePreference, + previewSizePreference }); return new PreferenceSet[] { @@ -95,7 +92,7 @@ public final class EHSettingsScene extends PreferenceScene implements Preference @Override public boolean onClick(Preference preference) { String key = preference.getKey(); - if (KEY_EXCLUDED_LANGUAGES.equals(key)) { + if (Settings.KEY_EXCLUDED_LANGUAGES.equals(key)) { startScene(ExcludedLanguagesScene.class, null, new SimpleCurtain(SimpleCurtain.DIRECTION_BOTTOM)); return true; } else { @@ -103,18 +100,20 @@ public final class EHSettingsScene extends PreferenceScene implements Preference } } - private static class ValueChangeListener implements Preference.OnValueChangeListener { - - @Override - public boolean OnValueChange(Preference preference, Object newValue) { - String key = preference.getKey(); - switch (key) { - case KEY_EH_SOURCE: - Messenger.getInstance().notify(Constants.MESSENGER_ID_EH_SOURCE, newValue); - return true; - default: - return true; - } + @Override + public boolean OnValueChange(Preference preference, Object newValue) { + String key = preference.getKey(); + switch (key) { + case Settings.KEY_EH_SOURCE: + Messenger.getInstance().notify(Constants.MESSENGER_ID_EH_SOURCE, newValue); + return true; + case Settings.KEY_PREVIEW_SIZE: + int value = (Integer) newValue; + EhApplication.getEhHttpClient(getStageActivity()).setPreviewSize( + value == 0? EhConfig.PREVIEW_SIZE_NORMAL : EhConfig.PREVIEW_SIZE_LARGE); + return true; + default: + return true; } } } diff --git a/app/src/main/java/com/hippo/ehviewer/util/Settings.java b/app/src/main/java/com/hippo/ehviewer/util/Settings.java index 75c2ae696..034bd1512 100644 --- a/app/src/main/java/com/hippo/ehviewer/util/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/util/Settings.java @@ -73,8 +73,10 @@ public final class Settings { } /****** EH ******/ - private static final String KEY_EH_SOURCE = "eh_source"; - private static final int DEFAULT_EH_SOURCE = EhUrl.SOURCE_G; + public static final String KEY_EH_SOURCE = "eh_source"; + public static final int DEFAULT_EH_SOURCE = EhUrl.SOURCE_G; + public static final String KEY_EH_API = "eh_api"; + public static final int DEFAULT_EH_API = EhUrl.SOURCE_G; private static final String KEY_SIGN_IN = "sign_in"; private static final boolean DEFAULT_SIGN_IN = false; private static final String KEY_DISPLAY_NAME = "display_name"; @@ -149,12 +151,15 @@ public final class Settings { } /****** EhConfig ******/ - private static final String KEY_EXCLUDED_LANGUAGES = "excluded_languages"; - private static final String DEFAULT_EXCLUDED_LANGUAGES = ""; - + public static final String KEY_EXCLUDED_LANGUAGES = "excluded_languages"; + public static final String DEFAULT_EXCLUDED_LANGUAGES = ""; + public static final String KEY_PREVIEW_SIZE = "preview_size"; + public static final int DEFAULT_PREVIEW_SIZE = 0; public static EhConfig generateEhConfig() { EhConfig config = new EhConfig(); + config.previewSize = getPreviewSize() == 0 ? + EhConfig.PREVIEW_SIZE_NORMAL : EhConfig.PREVIEW_SIZE_LARGE; config.excludedLanguages = getExcludedLanguages(); return config; } @@ -167,6 +172,14 @@ public final class Settings { return getString(KEY_EXCLUDED_LANGUAGES, DEFAULT_EXCLUDED_LANGUAGES); } + public static void putPreviewSize(int value) { + putInt(KEY_PREVIEW_SIZE, value); + } + + public static int getPreviewSize() { + return getInt(KEY_PREVIEW_SIZE, DEFAULT_PREVIEW_SIZE); + } + /****** Advance ******/ private static final String KEY_SHOW_APPLICATION_STATS = "show_application_stats"; private static final boolean DEFAULT_SHOW_APPLICATION_STATS = BuildConfig.DEBUG; diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0ed6fa36e..38e5ff07a 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -97,11 +97,44 @@ 显示 EH 源 + 排除语言 + 在列表与搜索中隐藏指定语言画廊 + 预览图大小 + 一般 + 较大 高级 显示应用状态 在屏幕右上角显示设备状态 + + 排除语言 + 全选 + 全取消 + 反选 + 语言 + 原作 + 翻译 + 改写 + + 日语 + 英语 + 汉语 + 荷兰语 + 法语 + 德语 + 匈牙利语 + 意大利语 + 韩语 + 波兰语 + 葡萄牙语 + 俄语 + 西班牙语 + 泰语 + 越南语 + N/A + 其他 + “啥?” “我把熊猫给丢了……” diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 66aaee58e..3675d61ea 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -34,4 +34,14 @@ 2 + + @string/settings_preview_size_normal + @string/settings_preview_size_large + + + + 0 + 1 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 57f6b471b..6d56612a6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -140,6 +140,11 @@ g.e-hentai.org exhentai.org lofi.e-hentai.org + Excluded languages + Hide galleries in certain languages from the gallery list and searches + Preview size + Normal + Large Advance Show application stats