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;
}
}