diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 49a9f10e0..31b02c83f 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -191,7 +191,7 @@ 预览图模式 正常预览图 大预览图 - 每行预览图数量(大预览图模式) + 每行预览图数量 数据 缓存 diff --git a/res/values/strings.xml b/res/values/strings.xml index 7cd577de9..38f4d358c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -192,7 +192,7 @@ Preview mode Normal Large - Preview number per row(large preview mode) + Preview number per row Data Cache diff --git a/src/com/hippo/ehviewer/ehclient/DetailParser.java b/src/com/hippo/ehviewer/ehclient/DetailParser.java index 57af82a4f..569a72929 100644 --- a/src/com/hippo/ehviewer/ehclient/DetailParser.java +++ b/src/com/hippo/ehviewer/ehclient/DetailParser.java @@ -30,6 +30,7 @@ import com.hippo.ehviewer.data.LargePreviewList; import com.hippo.ehviewer.data.NormalPreviewList; import com.hippo.ehviewer.data.PreviewList; import com.hippo.ehviewer.util.Log; +import com.hippo.ehviewer.util.Util; public class DetailParser { @@ -117,9 +118,9 @@ public class DetailParser { if (m.find()) { re |= DETAIL; - thumb = m.group(1); - title = m.group(2); - title_jpn = m.group(3); + thumb = Util.htmlUnsescape(m.group(1)); + title = Util.htmlUnsescape(m.group(2)); + title_jpn = Util.htmlUnsescape(m.group(3)); category = EhClient.getType(m.group(4)); uploader = m.group(5); posted = m.group(6); diff --git a/src/com/hippo/ehviewer/ehclient/ListParser.java b/src/com/hippo/ehviewer/ehclient/ListParser.java index 12b869e16..a0749e370 100644 --- a/src/com/hippo/ehviewer/ehclient/ListParser.java +++ b/src/com/hippo/ehviewer/ehclient/ListParser.java @@ -71,11 +71,11 @@ public class ListParser { gi.category = EhClient.getType(m.group(1)); gi.posted = m.group(2); if (m.group(3) == null) { - gi.thumb = "http://" - + m.group(5).replace('~', '/'); + gi.thumb = Util.htmlUnsescape("http://" + + m.group(5).replace('~', '/')); gi.title = Util.htmlUnsescape(m.group(6)); } else { - gi.thumb = m.group(3); + gi.thumb = Util.htmlUnsescape(m.group(3)); gi.title = Util.htmlUnsescape(m.group(4)); } diff --git a/src/com/hippo/ehviewer/ui/SettingsActivity.java b/src/com/hippo/ehviewer/ui/SettingsActivity.java index cdc56280e..383375d6c 100644 --- a/src/com/hippo/ehviewer/ui/SettingsActivity.java +++ b/src/com/hippo/ehviewer/ui/SettingsActivity.java @@ -315,6 +315,14 @@ public class SettingsActivity extends AbstractPreferenceActivity { private AutoListPreference mPreviewMode; private EditTextPreference mPreviewPerRow; + + private void setPPREnabled(String previewMode) { + if (previewMode.equals(Config.PREVIEW_MODE_LARGE)) + mPreviewPerRow.setEnabled(true); + else + mPreviewPerRow.setEnabled(false); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -326,24 +334,28 @@ public class SettingsActivity extends AbstractPreferenceActivity { mPreviewPerRow.setOnPreferenceChangeListener(this); mPreviewPerRow.setSummary(mPreviewPerRow.getText()); + setPPREnabled(mPreviewMode.getValue()); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final String key = preference.getKey(); if (KEY_PREVIEW_MODE.equals(key)) { - EhInfo.getInstance(mActivity).setPreviewMode((String)newValue); + String newPreviewMode = (String)newValue; + EhInfo.getInstance(mActivity).setPreviewMode(newPreviewMode); + setPPREnabled(newPreviewMode); + } else if (KEY_PREVIEW_PER_ROW.equals(key)) { try { int value = Integer.parseInt((String)newValue); if (value <= 0) throw new Exception(); + mPreviewPerRow.setSummary((String)newValue); } catch (Exception e) { new SuperToast(mActivity, R.string.invalid_input, SuperToast.ERROR).show(); return false; } - mPreviewPerRow.setSummary((String)newValue); } return true; } diff --git a/src/com/hippo/ehviewer/util/Config.java b/src/com/hippo/ehviewer/util/Config.java index d9aa9819a..bb12ab046 100644 --- a/src/com/hippo/ehviewer/util/Config.java +++ b/src/com/hippo/ehviewer/util/Config.java @@ -329,7 +329,9 @@ public class Config { // m for normal, l for large private static final String KEY_PREVIEW_MODE = "preview_mode"; - private static final String DEFAULT_PREVIEW_MODE = "l"; + public static final String PREVIEW_MODE_NORMAL = "m"; + public static final String PREVIEW_MODE_LARGE = "l"; + private static final String DEFAULT_PREVIEW_MODE = PREVIEW_MODE_LARGE; /** * reclass 0x1 diff --git a/src/com/hippo/ehviewer/util/Util.java b/src/com/hippo/ehviewer/util/Util.java index 01efe3229..1890fd273 100644 --- a/src/com/hippo/ehviewer/util/Util.java +++ b/src/com/hippo/ehviewer/util/Util.java @@ -269,6 +269,11 @@ public class Util { } } + /** + * Mostly title and url need it + * @param str + * @return + */ public static String htmlUnsescape(String str) { return str.replace("&", "&") .replace("<", "<") @@ -277,7 +282,13 @@ public class Util { .replace("'", "'"); } + /** + * Make file name valid by removing invalid character and set max length + * @param name + * @return + */ public static String rightFileName(String name) { - return name.replaceAll("[\\\\|/|:|*|?|\"|<|>|\\|]", ""); + name = name.replaceAll("[\\\\|/|:|*|?|\"|<|>|\\|]", ""); + return name.length() > 255 ? name.substring(0, 255) : name; } }