You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FoxMagiskModuleManager/app/src/main/java/com/fox2code/mmm/settings/LongClickablePreference.java

65 lines
2.1 KiB
Java

package com.fox2code.mmm.settings;
import android.content.Context;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
public class LongClickablePreference extends Preference {
private OnPreferenceLongClickListener onPreferenceLongClickListener;
public LongClickablePreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public LongClickablePreference(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public LongClickablePreference(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public LongClickablePreference(@NonNull Context context) {
super(context);
}
@Override
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
holder.itemView.setOnLongClickListener(v -> performLongClick());
}
private boolean performLongClick() {
if (!this.isEnabled() || !this.isSelectable()) {
return false;
}
if (this.onPreferenceLongClickListener != null) {
return this.onPreferenceLongClickListener.onPreferenceLongClick(this);
}
return false;
}
public void setOnPreferenceLongClickListener(OnPreferenceLongClickListener onPreferenceLongClickListener) {
this.onPreferenceLongClickListener = onPreferenceLongClickListener;
}
public OnPreferenceLongClickListener getOnPreferenceLongClickListener() {
return this.onPreferenceLongClickListener;
}
@FunctionalInterface
public interface OnPreferenceLongClickListener {
/**
* Called when a preference has been clicked.
*
* @param preference The preference that was clicked
* @return {@code true} if the click was handled
*/
boolean onPreferenceLongClick(@NonNull Preference preference);
}
}