diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt b/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt
index ca2cb2d4b..1165452a8 100644
--- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt
+++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/FilterFragment.kt
@@ -15,469 +15,378 @@
* You should have received a copy of the GNU General Public License along with EhViewer.
* If not, see .
*/
+package com.hippo.ehviewer.ui.fragment
-package com.hippo.ehviewer.ui.fragment;
+import android.content.DialogInterface
+import android.os.Bundle
+import android.text.TextUtils
+import android.view.*
+import android.widget.EditText
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.appcompat.app.AlertDialog
+import androidx.core.content.ContextCompat
+import androidx.core.view.MenuProvider
+import androidx.recyclerview.widget.DefaultItemAnimator
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.checkbox.MaterialCheckBox
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.google.android.material.floatingactionbutton.FloatingActionButton
+import com.google.android.material.textfield.TextInputLayout
+import com.hippo.easyrecyclerview.EasyRecyclerView
+import com.hippo.easyrecyclerview.LinearDividerItemDecoration
+import com.hippo.ehviewer.R
+import com.hippo.ehviewer.client.EhFilter
+import com.hippo.ehviewer.dao.Filter
+import com.hippo.view.ViewTransition
+import com.hippo.yorozuya.LayoutUtils
+import com.hippo.yorozuya.ViewUtils
+import rikka.core.res.resolveColor
-import android.content.DialogInterface;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.Spinner;
-import android.widget.TextView;
+class FilterFragment : BaseFragment() {
+ private var mViewTransition: ViewTransition? = null
+ private var mAdapter: FilterAdapter = FilterAdapter()
+ private var mFilterList: FilterList = FilterList()
+ private val mMenuProvider: MenuProvider = FilterMenuProvider()
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.DefaultItemAnimator;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.google.android.material.checkbox.MaterialCheckBox;
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
-import com.google.android.material.textfield.TextInputLayout;
-import com.hippo.easyrecyclerview.EasyRecyclerView;
-import com.hippo.easyrecyclerview.LinearDividerItemDecoration;
-import com.hippo.ehviewer.R;
-import com.hippo.ehviewer.client.EhFilter;
-import com.hippo.ehviewer.dao.Filter;
-import com.hippo.view.ViewTransition;
-import com.hippo.yorozuya.LayoutUtils;
-import com.hippo.yorozuya.ViewUtils;
-
-import java.util.List;
-
-import rikka.core.res.ResourcesKt;
-
-public class FilterFragment extends BaseFragment {
-
- @Nullable
- private ViewTransition mViewTransition;
- @Nullable
- private FilterAdapter mAdapter;
- @Nullable
- private FilterList mFilterList;
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.activity_filter, container, false);
-
- mFilterList = new FilterList();
-
- RecyclerView recyclerView = (EasyRecyclerView) ViewUtils.$$(view, R.id.recycler_view);
- TextView tip = (TextView) ViewUtils.$$(view, R.id.tip);
- mViewTransition = new ViewTransition(recyclerView, tip);
- FloatingActionButton fab = view.findViewById(R.id.fab);
-
- Drawable drawable = ContextCompat.getDrawable(requireActivity(), R.drawable.big_filter);
- drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
- tip.setCompoundDrawables(null, drawable, null, null);
-
- mAdapter = new FilterAdapter();
- mAdapter.setHasStableIds(true);
- recyclerView.setAdapter(mAdapter);
- recyclerView.setClipToPadding(false);
- recyclerView.setClipChildren(false);
- LinearDividerItemDecoration decoration = new LinearDividerItemDecoration(
- LinearDividerItemDecoration.VERTICAL,
- ResourcesKt.resolveColor(requireActivity().getTheme(), R.attr.dividerColor),
- LayoutUtils.dp2pix(requireActivity(), 1));
- decoration.setShowLastDivider(true);
- recyclerView.addItemDecoration(decoration);
- recyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
- recyclerView.setHasFixedSize(true);
- DefaultItemAnimator defaultItemAnimator = (DefaultItemAnimator) recyclerView.getItemAnimator();
- if (defaultItemAnimator != null) {
- defaultItemAnimator.setSupportsChangeAnimations(false);
+ inner class FilterMenuProvider : MenuProvider {
+ override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
+ menuInflater.inflate(R.menu.activity_filter, menu)
}
- fab.setOnClickListener(v -> showAddFilterDialog());
-
- return view;
+ override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
+ val itemId = menuItem.itemId
+ if (itemId == R.id.action_tip) {
+ showTipDialog()
+ return true
+ }
+ return false
+ }
}
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- updateView(false);
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ val view = inflater.inflate(R.layout.activity_filter, container, false)
+ val recyclerView: RecyclerView =
+ ViewUtils.`$$`(view, R.id.recycler_view) as EasyRecyclerView
+ val tip = ViewUtils.`$$`(view, R.id.tip) as TextView
+ mViewTransition = ViewTransition(recyclerView, tip)
+ val fab = view.findViewById(R.id.fab)
+ val drawable = ContextCompat.getDrawable(requireActivity(), R.drawable.big_filter)
+ drawable!!.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
+ tip.setCompoundDrawables(null, drawable, null, null)
+ mAdapter.setHasStableIds(true)
+ recyclerView.adapter = mAdapter
+ recyclerView.clipToPadding = false
+ recyclerView.clipChildren = false
+ val decoration = LinearDividerItemDecoration(
+ LinearDividerItemDecoration.VERTICAL,
+ requireActivity().theme.resolveColor(R.attr.dividerColor),
+ LayoutUtils.dp2pix(requireActivity(), 1f)
+ )
+ decoration.setShowLastDivider(true)
+ recyclerView.addItemDecoration(decoration)
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+ recyclerView.setHasFixedSize(true)
+ val defaultItemAnimator = recyclerView.itemAnimator as DefaultItemAnimator?
+ defaultItemAnimator?.supportsChangeAnimations = false
+ fab.setOnClickListener { showAddFilterDialog() }
+ return view
}
- private void updateView(boolean animation) {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ updateView(false)
+ requireActivity().addMenuProvider(mMenuProvider)
+ }
+
+ private fun updateView(animation: Boolean) {
if (null == mViewTransition) {
- return;
+ return
}
-
- if (null == mFilterList || 0 == mFilterList.size()) {
- mViewTransition.showView(1, animation);
+ if (0 == mFilterList.size()) {
+ mViewTransition!!.showView(1, animation)
} else {
- mViewTransition.showView(0, animation);
+ mViewTransition!!.showView(0, animation)
}
}
- @Override
- public void onDestroyView() {
- super.onDestroyView();
-
- mViewTransition = null;
- mAdapter = null;
- mFilterList = null;
+ override fun onDestroyView() {
+ super.onDestroyView()
+ mViewTransition = null
+ requireActivity().removeMenuProvider(mMenuProvider)
}
- @Override
- public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.activity_filter, menu);
+ private fun showTipDialog() {
+ MaterialAlertDialogBuilder(requireActivity())
+ .setTitle(R.string.filter)
+ .setMessage(R.string.filter_tip)
+ .setPositiveButton(android.R.string.ok, null)
+ .show()
}
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- int itemId = item.getItemId();
- if (itemId == R.id.action_tip) {
- showTipDialog();
- return true;
- }
- return super.onOptionsItemSelected(item);
+ private fun showAddFilterDialog() {
+ val dialog = MaterialAlertDialogBuilder(requireActivity())
+ .setTitle(R.string.add_filter)
+ .setView(R.layout.dialog_add_filter)
+ .setPositiveButton(R.string.add, null)
+ .setNegativeButton(android.R.string.cancel, null)
+ .show()
+ AddFilterDialogHelper(dialog)
}
- private void showTipDialog() {
- new MaterialAlertDialogBuilder(requireActivity())
- .setTitle(R.string.filter)
- .setMessage(R.string.filter_tip)
- .setPositiveButton(android.R.string.ok, null)
- .show();
- }
-
- private void showAddFilterDialog() {
- AlertDialog dialog = new MaterialAlertDialogBuilder(requireActivity())
- .setTitle(R.string.add_filter)
- .setView(R.layout.dialog_add_filter)
- .setPositiveButton(R.string.add, null)
- .setNegativeButton(android.R.string.cancel, null)
- .show();
- AddFilterDialogHelper helper = new AddFilterDialogHelper();
- helper.setDialog(dialog);
- }
-
- private void showDeleteFilterDialog(final Filter filter) {
- String message = getString(R.string.delete_filter, filter.text);
- new MaterialAlertDialogBuilder(requireActivity())
- .setMessage(message)
- .setPositiveButton(R.string.delete, (dialog, which) -> {
- if (DialogInterface.BUTTON_POSITIVE != which || null == mFilterList) {
- return;
- }
- mFilterList.delete(filter);
- if (null != mAdapter) {
- mAdapter.notifyDataSetChanged();
- }
- updateView(true);
- })
- .setNegativeButton(android.R.string.cancel, null)
- .show();
- }
-
- @Override
- public int getFragmentTitle() {
- return R.string.filter;
- }
-
- private static class FilterHolder extends RecyclerView.ViewHolder {
-
- private final MaterialCheckBox checkbox;
- private final TextView text;
- private final ImageView delete;
-
- public FilterHolder(View itemView) {
- super(itemView);
- checkbox = itemView.findViewById(R.id.checkbox);
- text = itemView.findViewById(R.id.text);
- delete = itemView.findViewById(R.id.delete);
- }
- }
-
- private class AddFilterDialogHelper implements View.OnClickListener {
-
- @Nullable
- private AlertDialog mDialog;
- @Nullable
- private Spinner mSpinner;
- @Nullable
- private TextInputLayout mInputLayout;
- @Nullable
- private EditText mEditText;
-
- public void setDialog(AlertDialog dialog) {
- mDialog = dialog;
- mSpinner = (Spinner) ViewUtils.$$(dialog, R.id.spinner);
- mInputLayout = (TextInputLayout) ViewUtils.$$(dialog, R.id.text_input_layout);
- mEditText = mInputLayout.getEditText();
- View button = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
- if (null != button) {
- button.setOnClickListener(this);
+ private fun showDeleteFilterDialog(filter: Filter) {
+ val message = getString(R.string.delete_filter, filter.text)
+ MaterialAlertDialogBuilder(requireActivity())
+ .setMessage(message)
+ .setPositiveButton(R.string.delete) { _: DialogInterface?, which: Int ->
+ if (DialogInterface.BUTTON_POSITIVE != which) {
+ return@setPositiveButton
+ }
+ mFilterList.delete(filter)
+ mAdapter.notifyDataSetChanged()
+ updateView(true)
}
+ .setNegativeButton(android.R.string.cancel, null)
+ .show()
+ }
+
+ override fun getFragmentTitle(): Int {
+ return R.string.filter
+ }
+
+ private class FilterHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ val checkbox: MaterialCheckBox?
+ val text: TextView?
+ val delete: ImageView?
+
+ init {
+ checkbox = itemView.findViewById(R.id.checkbox)
+ text = itemView.findViewById(R.id.text)
+ delete = itemView.findViewById(R.id.delete)
+ }
+ }
+
+ private inner class AddFilterDialogHelper(dialog: AlertDialog) : View.OnClickListener {
+ private var mDialog: AlertDialog
+ private var mSpinner: TextInputLayout
+ private var mInputLayout: TextInputLayout
+ private var mEditText: EditText
+ private val mArray: Array =
+ context!!.resources.getStringArray(R.array.filter_entries)
+
+ init {
+ mDialog = dialog
+ mSpinner = ViewUtils.`$$`(dialog, R.id.spinner) as TextInputLayout
+ mInputLayout = ViewUtils.`$$`(dialog, R.id.text_input_layout) as TextInputLayout
+ mEditText = mInputLayout.editText!!
+ val button: View? = dialog.getButton(DialogInterface.BUTTON_POSITIVE)
+ button?.setOnClickListener(this)
}
- @Override
- public void onClick(View v) {
- if (null == mFilterList || null == mDialog || null == mSpinner ||
- null == mInputLayout || null == mEditText) {
- return;
+ override fun onClick(v: View) {
+ val text1 = mSpinner.editText!!.text.toString()
+ if (TextUtils.isEmpty(text1)) {
+ mSpinner.error = getString(R.string.text_is_empty)
+ return
+ } else {
+ mSpinner.error = null
}
-
- String text = mEditText.getText().toString().trim();
+ val text = mEditText.text.toString().trim { it <= ' ' }
if (TextUtils.isEmpty(text)) {
- mInputLayout.setError(getString(R.string.text_is_empty));
- return;
+ mInputLayout.error = getString(R.string.text_is_empty)
+ return
} else {
- mInputLayout.setError(null);
+ mInputLayout.error = null
}
- int mode = mSpinner.getSelectedItemPosition();
-
- Filter filter = new Filter();
- filter.mode = mode;
- filter.text = text;
+ val mode = mArray.indexOf(text1)
+ val filter = Filter()
+ filter.mode = mode
+ filter.text = text
if (!mFilterList.add(filter)) {
- mInputLayout.setError(getString(R.string.label_text_exist));
- return;
+ mInputLayout.error = getString(R.string.label_text_exist)
+ return
} else {
- mInputLayout.setError(null);
+ mInputLayout.error = null
}
-
- if (null != mAdapter) {
- mAdapter.notifyDataSetChanged();
- }
- updateView(true);
-
- mDialog.dismiss();
- mDialog = null;
- mSpinner = null;
- mInputLayout = null;
- mEditText = null;
+ mAdapter.notifyDataSetChanged()
+ updateView(true)
+ mDialog.dismiss()
}
}
- private class FilterAdapter extends RecyclerView.Adapter {
-
- private static final int TYPE_ITEM = 0;
- private static final int TYPE_HEADER = 1;
-
- @Override
- public int getItemViewType(int position) {
- if (null == mFilterList) {
- return TYPE_ITEM;
- }
-
- if (mFilterList.get(position).mode == FilterList.MODE_HEADER) {
- return TYPE_HEADER;
+ private inner class FilterAdapter : RecyclerView.Adapter() {
+ override fun getItemViewType(position: Int): Int {
+ return if (mFilterList[position].mode == MODE_HEADER) {
+ TYPE_HEADER
} else {
- return TYPE_ITEM;
+ TYPE_ITEM
}
}
- @NonNull
- @Override
- public FilterHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- int layoutId;
- switch (viewType) {
- default:
- case TYPE_ITEM:
- layoutId = R.layout.item_filter;
- break;
- case TYPE_HEADER:
- layoutId = R.layout.item_filter_header;
- break;
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FilterHolder {
+ val layoutId: Int = when (viewType) {
+ TYPE_ITEM -> R.layout.item_filter
+ TYPE_HEADER -> R.layout.item_filter_header
+ else -> R.layout.item_filter
}
-
- return new FilterHolder(getLayoutInflater().inflate(layoutId, parent, false));
+ return FilterHolder(layoutInflater.inflate(layoutId, parent, false))
}
- @Override
- public void onBindViewHolder(@NonNull FilterHolder holder, int position) {
- if (null == mFilterList) {
- return;
- }
-
- Filter filter = mFilterList.get(position);
- if (FilterList.MODE_HEADER == filter.mode) {
- holder.text.setText(filter.text);
+ override fun onBindViewHolder(holder: FilterHolder, position: Int) {
+ val filter = mFilterList[position]
+ if (MODE_HEADER == filter.mode) {
+ holder.text?.text = filter.text
} else {
- holder.checkbox.setText(filter.text);
- holder.checkbox.setChecked(filter.enable);
- holder.itemView.setOnClickListener(v -> {
- mFilterList.trigger(filter);
+ holder.checkbox?.text = filter.text
+ holder.checkbox?.isChecked = filter.enable
+ holder.itemView.setOnClickListener {
+ mFilterList.trigger(filter)
//for updating delete line on filter text
- if (mAdapter != null) {
- mAdapter.notifyItemChanged(position);
- }
- });
- holder.delete.setOnClickListener(v -> showDeleteFilterDialog(filter));
+ mAdapter.notifyItemChanged(position)
+ }
+ holder.delete?.setOnClickListener { showDeleteFilterDialog(filter) }
}
}
- @Override
- public int getItemCount() {
- return null != mFilterList ? mFilterList.size() : 0;
+ override fun getItemCount(): Int {
+ return mFilterList.size()
}
- @Override
- public long getItemId(int position) {
- if (mFilterList == null) {
- return 0;
- } else {
- Filter filter = mFilterList.get(position);
- if (filter.getId() != null) {
- return (filter.text.hashCode() >> filter.mode) + filter.getId();
- }
- return filter.text.hashCode() >> filter.mode;
+ override fun getItemId(position: Int): Long {
+ return run {
+ val filter = mFilterList[position]
+ if (filter.id != null) {
+ (filter.text.hashCode() shr filter.mode) + filter.id
+ } else (filter.text.hashCode() shr filter.mode).toLong()
}
}
}
- private class FilterList {
-
- public static final int MODE_HEADER = -1;
-
- private final EhFilter mEhFilter;
- private final List mTitleFilterList;
- private final List mUploaderFilterList;
- private final List mTagFilterList;
- private final List mTagNamespaceFilterList;
-
- private Filter mTitleHeader;
- private Filter mUploaderHeader;
- private Filter mTagHeader;
- private Filter mTagNamespaceHeader;
-
- public FilterList() {
- mEhFilter = EhFilter.getInstance();
- mTitleFilterList = mEhFilter.getTitleFilterList();
- mUploaderFilterList = mEhFilter.getUploaderFilterList();
- mTagFilterList = mEhFilter.getTagFilterList();
- mTagNamespaceFilterList = mEhFilter.getTagNamespaceFilterList();
+ private inner class FilterList {
+ private val mEhFilter: EhFilter = EhFilter.getInstance()
+ private val mTitleFilterList: List = mEhFilter.titleFilterList
+ private val mUploaderFilterList: List = mEhFilter.uploaderFilterList
+ private val mTagFilterList: List = mEhFilter.tagFilterList
+ private val mTagNamespaceFilterList: List = mEhFilter.tagNamespaceFilterList
+ private var mTitleHeader: Filter? = null
+ private var mUploaderHeader: Filter? = null
+ private var mTagHeader: Filter? = null
+ private var mTagNamespaceHeader: Filter? = null
+ fun size(): Int {
+ var count = 0
+ var size = mTitleFilterList.size
+ count += if (0 == size) 0 else size + 1
+ size = mUploaderFilterList.size
+ count += if (0 == size) 0 else size + 1
+ size = mTagFilterList.size
+ count += if (0 == size) 0 else size + 1
+ size = mTagNamespaceFilterList.size
+ count += if (0 == size) 0 else size + 1
+ return count
}
- public int size() {
- int count = 0;
- int size = mTitleFilterList.size();
- count += 0 == size ? 0 : size + 1;
- size = mUploaderFilterList.size();
- count += 0 == size ? 0 : size + 1;
- size = mTagFilterList.size();
- count += 0 == size ? 0 : size + 1;
- size = mTagNamespaceFilterList.size();
- count += 0 == size ? 0 : size + 1;
- return count;
- }
-
- private Filter getTitleHeader() {
- if (null == mTitleHeader) {
- mTitleHeader = new Filter();
- mTitleHeader.mode = MODE_HEADER;
- mTitleHeader.text = getString(R.string.filter_title);
+ private val titleHeader: Filter
+ get() {
+ if (null == mTitleHeader) {
+ mTitleHeader = Filter()
+ mTitleHeader!!.mode = MODE_HEADER
+ mTitleHeader!!.text = getString(R.string.filter_title)
+ }
+ return mTitleHeader!!
}
- return mTitleHeader;
- }
-
- private Filter getUploaderHeader() {
- if (null == mUploaderHeader) {
- mUploaderHeader = new Filter();
- mUploaderHeader.mode = MODE_HEADER;
- mUploaderHeader.text = getString(R.string.filter_uploader);
+ private val uploaderHeader: Filter
+ get() {
+ if (null == mUploaderHeader) {
+ mUploaderHeader = Filter()
+ mUploaderHeader!!.mode = MODE_HEADER
+ mUploaderHeader!!.text = getString(R.string.filter_uploader)
+ }
+ return mUploaderHeader!!
}
- return mUploaderHeader;
- }
-
- private Filter getTagHeader() {
- if (null == mTagHeader) {
- mTagHeader = new Filter();
- mTagHeader.mode = MODE_HEADER;
- mTagHeader.text = getString(R.string.filter_tag);
+ private val tagHeader: Filter
+ get() {
+ if (null == mTagHeader) {
+ mTagHeader = Filter()
+ mTagHeader!!.mode = MODE_HEADER
+ mTagHeader!!.text = getString(R.string.filter_tag)
+ }
+ return mTagHeader!!
}
- return mTagHeader;
- }
-
- private Filter getTagNamespaceHeader() {
- if (null == mTagNamespaceHeader) {
- mTagNamespaceHeader = new Filter();
- mTagNamespaceHeader.mode = MODE_HEADER;
- mTagNamespaceHeader.text = getString(R.string.filter_tag_namespace);
+ private val tagNamespaceHeader: Filter
+ get() {
+ if (null == mTagNamespaceHeader) {
+ mTagNamespaceHeader = Filter()
+ mTagNamespaceHeader!!.mode = MODE_HEADER
+ mTagNamespaceHeader!!.text = getString(R.string.filter_tag_namespace)
+ }
+ return mTagNamespaceHeader!!
}
- return mTagNamespaceHeader;
- }
- public Filter get(int index) {
- int size = mTitleFilterList.size();
+ operator fun get(index: Int): Filter {
+ var index1 = index
+ var size = mTitleFilterList.size
if (0 != size) {
- if (index == 0) {
- return getTitleHeader();
- } else if (index <= size) {
- return mTitleFilterList.get(index - 1);
+ index1 -= if (index1 == 0) {
+ return titleHeader
+ } else if (index1 <= size) {
+ return mTitleFilterList[index1 - 1]
} else {
- index -= size + 1;
+ size + 1
}
}
-
- size = mUploaderFilterList.size();
+ size = mUploaderFilterList.size
if (0 != size) {
- if (index == 0) {
- return getUploaderHeader();
- } else if (index <= size) {
- return mUploaderFilterList.get(index - 1);
+ index1 -= if (index1 == 0) {
+ return uploaderHeader
+ } else if (index1 <= size) {
+ return mUploaderFilterList[index1 - 1]
} else {
- index -= size + 1;
+ size + 1
}
}
-
- size = mTagFilterList.size();
+ size = mTagFilterList.size
if (0 != size) {
- if (index == 0) {
- return getTagHeader();
- } else if (index <= size) {
- return mTagFilterList.get(index - 1);
+ index1 -= if (index1 == 0) {
+ return tagHeader
+ } else if (index1 <= size) {
+ return mTagFilterList[index1 - 1]
} else {
- index -= size + 1;
+ size + 1
}
}
-
- size = mTagNamespaceFilterList.size();
+ size = mTagNamespaceFilterList.size
if (0 != size) {
- if (index == 0) {
- return getTagNamespaceHeader();
- } else if (index <= size) {
- return mTagNamespaceFilterList.get(index - 1);
+ if (index1 == 0) {
+ return tagNamespaceHeader
+ } else if (index1 <= size) {
+ return mTagNamespaceFilterList[index1 - 1]
}
}
-
- throw new IndexOutOfBoundsException();
+ throw IndexOutOfBoundsException()
}
- public boolean add(Filter filter) {
- return mEhFilter.addFilter(filter);
+ fun add(filter: Filter?): Boolean {
+ return mEhFilter.addFilter(filter)
}
- public void delete(Filter filter) {
- mEhFilter.deleteFilter(filter);
+ fun delete(filter: Filter?) {
+ mEhFilter.deleteFilter(filter)
}
- public void trigger(Filter filter) {
- mEhFilter.triggerFilter(filter);
+ fun trigger(filter: Filter?) {
+ mEhFilter.triggerFilter(filter)
}
}
-}
+
+ companion object {
+ private const val MODE_HEADER = -1
+ private const val TYPE_ITEM = 0
+ private const val TYPE_HEADER = 1
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_add_filter.xml b/app/src/main/res/layout/dialog_add_filter.xml
index 5231f07e9..910e0fe7a 100644
--- a/app/src/main/res/layout/dialog_add_filter.xml
+++ b/app/src/main/res/layout/dialog_add_filter.xml
@@ -15,17 +15,27 @@
-->
-
+ android:hint="@string/filter_label">
+
+
+
+
依赖库之版本
需要解锁
代理类型
+ 屏蔽项类型
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2b694ac98..b94268788 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -827,4 +827,5 @@
Library Version
Require Unlock
Proxy Type
+ Blocker Type