diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java index d7f0cc9a8..f691c4fd9 100644 --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -26,8 +26,8 @@ import android.support.annotation.Nullable; import android.util.Log; import com.hippo.ehviewer.client.EhConfig; +import com.hippo.ehviewer.client.EhUtils; import com.hippo.ehviewer.client.data.FavListUrlBuilder; -import com.hippo.ehviewer.client.data.ListUrlBuilder; import com.hippo.ehviewer.gallery.gl.GalleryView; import com.hippo.ehviewer.gallery.gl.ImageView; import com.hippo.ehviewer.ui.CommonOperations; @@ -261,7 +261,7 @@ public class Settings { } public static final String KEY_DEFAULT_CATEGORIES = "default_categories"; - public static final int DEFAULT_DEFAULT_CATEGORIES = ListUrlBuilder.ALL_CATEGORT; + public static final int DEFAULT_DEFAULT_CATEGORIES = EhUtils.ALL_CATEGORY; public static int getDefaultCategories() { return getInt(KEY_DEFAULT_CATEGORIES, DEFAULT_DEFAULT_CATEGORIES); diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java index ce71be294..d5fbd8df0 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUtils.java @@ -29,6 +29,9 @@ public class EhUtils { public static final int NONE = -1; // Use it for homepage public static final int UNKNOWN = 0x400; + public static final int ALL_CATEGORY = EhUtils.UNKNOWN - 1; + //DOUJINSHI|MANGA|ARTIST_CG|GAME_CG|WESTERN|NON_H|IMAGE_SET|COSPLAY|ASIAN_PORN|MISC; + public static final int BG_COLOR_DOUJINSHI = 0xfff44336; public static final int BG_COLOR_MANGA = 0xffff9800; public static final int BG_COLOR_ARTIST_CG = 0xfffbc02d; diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java index 7713db59d..e0d79dc22 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java +++ b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java @@ -48,9 +48,6 @@ public class ListUrlBuilder implements Cloneable, Parcelable { public static final int MODE_WHATS_HOT = 0x3; public static final int MODE_IMAGE_SEARCH = 0x4; - public static final int ALL_CATEGORT = EhUtils.UNKNOWN - 1; - //DOUJINSHI|MANGA|ARTIST_CG|GAME_CG|WESTERN|NON_H|IMAGE_SET|COSPLAY|ASIAN_PORN|MISC; - public static final int DEFAULT_ADVANCE = AdvanceSearchTable.SNAME | AdvanceSearchTable.STAGS; public static final int DEFAULT_MIN_RATING = 2; @@ -166,6 +163,30 @@ public class ListUrlBuilder implements Cloneable, Parcelable { return q; } + public boolean equalsQuickSearch(QuickSearch q) { + if (null == q) { + return false; + } + + if (q.mode != mMode) { + return false; + } + if (q.category != mCategory) { + return false; + } + if (!StringUtils.equals(q.keyword, mKeyword)) { + return false; + } + if (q.advanceSearch != mAdvanceSearch) { + return false; + } + if (q.minRating != mMinRating) { + return false; + } + + return true; + } + /** * @param query xxx=yyy&mmm=nnn */ diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 429437b82..b8c41ede8 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -500,12 +500,21 @@ public final class GalleryListScene extends BaseScene private void showAddQuickSearchDialog(final List list, final ArrayAdapter adapter, final ListView listView, final TextView tip) { Context context = getContext2(); - if (null == context || null == mUrlBuilder) { + final ListUrlBuilder urlBuilder = mUrlBuilder; + if (null == context || null == urlBuilder) { return; } + // Check duplicate + for (QuickSearch q: list) { + if (urlBuilder.equalsQuickSearch(q)) { + showTip(getString(R.string.duplicate_quick_search, q.name), LENGTH_SHORT); + return; + } + } + final EditTextDialogBuilder builder = new EditTextDialogBuilder(context, - getSuitableTitleForUrlBuilder(context.getResources(), mUrlBuilder, false), getString(R.string.quick_search)); + getSuitableTitleForUrlBuilder(context.getResources(), urlBuilder, false), getString(R.string.quick_search)); builder.setTitle(R.string.add_quick_search_dialog_title); builder.setPositiveButton(android.R.string.ok, null); final AlertDialog dialog = builder.show(); @@ -513,25 +522,36 @@ public final class GalleryListScene extends BaseScene @Override public void onClick(View v) { String text = builder.getText().trim(); + + // Check name empty if (TextUtils.isEmpty(text)) { builder.setError(getString(R.string.name_is_empty)); - } else { - builder.setError(null); - dialog.dismiss(); - QuickSearch quickSearch = mUrlBuilder.toQuickSearch(); - quickSearch.name = text; - EhDB.insertQuickSearch(quickSearch); - list.add(quickSearch); - adapter.notifyDataSetChanged(); + return; + } - if (0 == list.size()) { - tip.setVisibility(View.VISIBLE); - listView.setVisibility(View.GONE); - } else { - tip.setVisibility(View.GONE); - listView.setVisibility(View.VISIBLE); + // Check name duplicate + for (QuickSearch q: list) { + if (text.equals(q.name)) { + builder.setError(getString(R.string.duplicate_name)); + return; } } + + builder.setError(null); + dialog.dismiss(); + QuickSearch quickSearch = urlBuilder.toQuickSearch(); + quickSearch.name = text; + EhDB.insertQuickSearch(quickSearch); + list.add(quickSearch); + adapter.notifyDataSetChanged(); + + if (0 == list.size()) { + tip.setVisibility(View.VISIBLE); + listView.setVisibility(View.GONE); + } else { + tip.setVisibility(View.GONE); + listView.setVisibility(View.VISIBLE); + } } }); } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index da85054c4..44020a1e2 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -139,6 +139,8 @@ 这里是快速搜索 画廊列表的状态将被保存为快速搜索。如果你想保存搜索面板的状态,请先执行搜索。 读我 + 已存在相同的快速搜索,名称为“%s”。 + 已存在相同名称 2 星 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index df9e5f5ed..5bd5a0517 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -139,6 +139,8 @@ 這裏是快速搜索 畫廊列表的狀態將被保存為快速搜索。如果你想保存搜索面板的狀態,請先執行搜索。 讀我 + 已存在相同的快速搜索,名稱為“%s”。 + 已存在相同名稱 2 星 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 28b749ec0..118ce8429 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -139,6 +139,8 @@ 這裡是快速搜尋 畫廊列表的狀態將被儲存為快速搜尋。如果你想儲存搜尋面板的狀態,請先執行搜尋。 讀我 + 已存在相同的快速搜尋,名稱為“%s”。 + 已存在相同名稱 2 星 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 616974a6e..6ae10d39e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -181,6 +181,8 @@ Quick search will be shown here The state of gallery list will be saved as quick search. Apply search first if you want to save the state of search panel. README + A duplicate quick search exists. The name is \"%s\". + A duplicate name exists 2 stars