Add check duplicate quick search

This commit is contained in:
seven332 committed 2016-03-22 22:46:03 +08:00
1 parent ba884f8c99
commit 6e06cca962
8 files changed
+73 -21

No files matched your search

@@ -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);
@@ -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;
@@ -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
*/
@@ -500,12 +500,21 @@ public final class GalleryListScene extends BaseScene
private void showAddQuickSearchDialog(final List<QuickSearch> list,
final ArrayAdapter<QuickSearch> 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);
}
}
});
}