From 0553fda3fa58376e07fd74d9ce11b9d9738455e0 Mon Sep 17 00:00:00 2001 From: seven332 Date: Fri, 14 Dec 2018 13:40:47 +0800 Subject: [PATCH] Long click category to set other categories to the opposite --- .../hippo/ehviewer/widget/CategoryTable.java | 29 +++++++++++++++++-- .../java/com/hippo/widget/CheckTextView.java | 5 ++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/widget/CategoryTable.java b/app/src/main/java/com/hippo/ehviewer/widget/CategoryTable.java index e11832ca8..7db60f842 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/CategoryTable.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/CategoryTable.java @@ -21,15 +21,15 @@ import android.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import android.widget.TableLayout; - import com.hippo.ehviewer.R; import com.hippo.ehviewer.client.EhConfig; import com.hippo.widget.CheckTextView; import com.hippo.yorozuya.NumberUtils; -public class CategoryTable extends TableLayout { +public class CategoryTable extends TableLayout implements View.OnLongClickListener { private static final String STATE_KEY_SUPER = "super"; private static final String STATE_KEY_CATEGORY = "category"; @@ -45,6 +45,8 @@ public class CategoryTable extends TableLayout { private CheckTextView mAsianPorn; private CheckTextView mMisc; + private CheckTextView[] mOptions; + public CategoryTable(Context context) { super(context); init(); @@ -78,6 +80,29 @@ public class CategoryTable extends TableLayout { ViewGroup row4 = (ViewGroup) getChildAt(4); mAsianPorn = (CheckTextView) row4.getChildAt(0); mMisc = (CheckTextView) row4.getChildAt(1); + + mOptions = new CheckTextView[] { + mDoujinshi, mManga, mArtistCG, mGameCG, mWestern, + mNonH, mImageSets, mCosplay, mAsianPorn, mMisc + }; + + for (CheckTextView option : mOptions) { + option.setOnLongClickListener(this); + } + } + + @Override + public boolean onLongClick(View v) { + if (v instanceof CheckTextView) { + boolean checked = ((CheckTextView) v).isChecked(); + for (CheckTextView option : mOptions) { + if (option != v) { + option.setChecked(!checked, false); + } + } + } + + return true; } /** diff --git a/app/src/main/java/com/hippo/widget/CheckTextView.java b/app/src/main/java/com/hippo/widget/CheckTextView.java index 3ec309f94..e32ccf18d 100644 --- a/app/src/main/java/com/hippo/widget/CheckTextView.java +++ b/app/src/main/java/com/hippo/widget/CheckTextView.java @@ -27,12 +27,11 @@ import android.os.Build; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Interpolator; -import android.widget.TextView; - import com.hippo.ehviewer.R; import com.hippo.hotspot.Hotspot; import com.hippo.hotspot.Hotspotable; @@ -40,7 +39,7 @@ import com.hippo.yorozuya.AnimationUtils; import com.hippo.yorozuya.MathUtils; import com.hippo.yorozuya.SimpleAnimatorListener; -public class CheckTextView extends TextView implements OnClickListener, Hotspotable { +public class CheckTextView extends AppCompatTextView implements OnClickListener, Hotspotable { private static final String STATE_KEY_SUPER = "super"; private static final String STATE_KEY_CHECKED = "checked";