mirror of https://github.com/tasks/tasks
Remove unused code and resources
parent
597075faf6
commit
e3edd4797a
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="android_wear_capabilities">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string-array name="android_wear_capabilities" tools:ignore="UnusedResources">
|
||||
<item>data_layer_app_helper_device_phone</item>
|
||||
<item>horologist_phone</item>
|
||||
</string-array>
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
package com.todoroo.astrid.core;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
|
||||
class CriterionDiffCallback extends DiffUtil.ItemCallback<CriterionInstance> {
|
||||
|
||||
@Override
|
||||
public boolean areItemsTheSame(
|
||||
@NonNull CriterionInstance oldItem, @NonNull CriterionInstance newItem) {
|
||||
return oldItem.getId().equals(newItem.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean areContentsTheSame(
|
||||
@NonNull CriterionInstance oldItem, @NonNull CriterionInstance newItem) {
|
||||
return oldItem.equals(newItem);
|
||||
}
|
||||
}
|
||||
@ -1,79 +0,0 @@
|
||||
package com.todoroo.astrid.core
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.tasks.R
|
||||
import org.tasks.databinding.CustomFilterRowBinding
|
||||
import org.tasks.extensions.formatNumber
|
||||
import org.tasks.preferences.ResourceResolver
|
||||
import java.util.*
|
||||
|
||||
class CriterionViewHolder(
|
||||
private val context: Context,
|
||||
itemView: View,
|
||||
private val locale: Locale,
|
||||
private val onClick: (String) -> Unit
|
||||
) : RecyclerView.ViewHolder(itemView) {
|
||||
|
||||
private val divider: View
|
||||
private val icon: ImageView
|
||||
private val name: TextView
|
||||
private val filterCount: TextView
|
||||
private val row: View
|
||||
|
||||
private lateinit var criterion: CriterionInstance
|
||||
|
||||
init {
|
||||
CustomFilterRowBinding.bind(itemView).let {
|
||||
divider = it.divider
|
||||
icon = it.icon
|
||||
name = it.name
|
||||
filterCount = it.filterCount
|
||||
row = it.row
|
||||
}
|
||||
row.setOnClickListener { onClick(criterion.id) }
|
||||
}
|
||||
|
||||
fun bind(criterion: CriterionInstance) {
|
||||
this.criterion = criterion
|
||||
val title: String = criterion.titleFromCriterion
|
||||
|
||||
icon.visibility = if (criterion.type == CriterionInstance.TYPE_UNIVERSE) {
|
||||
View.INVISIBLE
|
||||
} else {
|
||||
View.VISIBLE
|
||||
}
|
||||
|
||||
when (criterion.type) {
|
||||
CriterionInstance.TYPE_ADD -> {
|
||||
icon.setImageResource(R.drawable.ic_call_split_24px)
|
||||
divider.visibility = View.VISIBLE
|
||||
}
|
||||
CriterionInstance.TYPE_SUBTRACT -> {
|
||||
icon.setImageResource(R.drawable.ic_outline_not_interested_24px)
|
||||
divider.visibility = View.GONE
|
||||
}
|
||||
CriterionInstance.TYPE_INTERSECT -> {
|
||||
icon.setImageResource(R.drawable.ic_outline_add_24px)
|
||||
divider.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
name.text = title
|
||||
filterCount.text = locale.formatNumber(criterion.end)
|
||||
|
||||
row.isClickable = criterion.type != CriterionInstance.TYPE_UNIVERSE
|
||||
}
|
||||
|
||||
fun setMoving(moving: Boolean) {
|
||||
if (moving) {
|
||||
row.setBackgroundColor(ResourceResolver.getData(context, androidx.appcompat.R.attr.colorControlHighlight))
|
||||
} else {
|
||||
row.setBackgroundResource(ResourceResolver.getResourceId(context, androidx.appcompat.R.attr.selectableItemBackground))
|
||||
row.background.jumpToCurrentState()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,87 +0,0 @@
|
||||
package com.todoroo.astrid.core;
|
||||
|
||||
import static com.google.common.collect.Lists.transform;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.AsyncDifferConfig;
|
||||
import androidx.recyclerview.widget.AsyncListDiffer;
|
||||
import androidx.recyclerview.widget.ListUpdateCallback;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import org.tasks.R;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
|
||||
public class CustomFilterAdapter extends RecyclerView.Adapter<CriterionViewHolder> implements
|
||||
ListUpdateCallback {
|
||||
|
||||
private final Function1<String, Unit> onClick;
|
||||
private final Locale locale;
|
||||
private final AsyncListDiffer<CriterionInstance> differ;
|
||||
|
||||
public CustomFilterAdapter(
|
||||
List<CriterionInstance> objects, Locale locale, Function1<String, Unit> onClick) {
|
||||
this.locale = locale;
|
||||
this.onClick = onClick;
|
||||
differ = new AsyncListDiffer<>(this, new AsyncDifferConfig.Builder<>(new CriterionDiffCallback()).build());
|
||||
submitList(objects);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public CriterionViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
Context context = parent.getContext();
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.custom_filter_row, parent, false);
|
||||
return new CriterionViewHolder(context, view, locale, onClick);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull CriterionViewHolder holder, int position) {
|
||||
holder.bind(getItems().get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return getItems().size();
|
||||
}
|
||||
|
||||
public void submitList(List<CriterionInstance> criteria) {
|
||||
differ.submitList(ImmutableList.copyOf(transform(criteria, CriterionInstance::new)));
|
||||
}
|
||||
|
||||
private List<CriterionInstance> getItems() {
|
||||
return differ.getCurrentList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInserted(int position, int count) {
|
||||
notifyItemRangeInserted(position, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemoved(int position, int count) {
|
||||
notifyItemRangeRemoved(position, count);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMoved(int fromPosition, int toPosition) {
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChanged(int position, int count, @Nullable Object payload) {
|
||||
notifyItemRangeChanged(position, count);
|
||||
}
|
||||
}
|
||||
@ -1,69 +0,0 @@
|
||||
package com.todoroo.astrid.core
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import org.tasks.R
|
||||
|
||||
class CustomFilterItemTouchHelper(
|
||||
private val context: Context,
|
||||
private val onMove: (Int, Int) -> Unit,
|
||||
private val onDelete: (Int) -> Unit,
|
||||
private val onClear: () -> Unit) : ItemTouchHelper.Callback() {
|
||||
override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder): Int {
|
||||
return if (viewHolder.adapterPosition > 0) makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) else 0
|
||||
}
|
||||
|
||||
override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) {
|
||||
super.onSelectedChanged(viewHolder, actionState)
|
||||
|
||||
if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
|
||||
(viewHolder as CriterionViewHolder).setMoving(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onMove(
|
||||
recyclerView: RecyclerView, src: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
|
||||
val toPosition = target.adapterPosition
|
||||
if (toPosition == 0) {
|
||||
return false
|
||||
}
|
||||
onMove(src.adapterPosition, toPosition)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun getSwipeEscapeVelocity(defaultValue: Float): Float {
|
||||
return defaultValue * 3
|
||||
}
|
||||
|
||||
override fun getSwipeVelocityThreshold(defaultValue: Float): Float {
|
||||
return .6f
|
||||
}
|
||||
|
||||
override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
|
||||
val itemView = viewHolder.itemView
|
||||
val background = ColorDrawable(context.getColor(R.color.overdue))
|
||||
if (dX > 0) {
|
||||
background.setBounds(0, itemView.top, itemView.left + dX.toInt(), itemView.bottom)
|
||||
} else if (dX < 0) {
|
||||
background.setBounds(itemView.right + dX.toInt(), itemView.top, itemView.right, itemView.bottom)
|
||||
}
|
||||
background.draw(c)
|
||||
|
||||
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
|
||||
}
|
||||
|
||||
override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) {
|
||||
super.clearView(recyclerView, viewHolder)
|
||||
|
||||
(viewHolder as CriterionViewHolder).setMoving(false)
|
||||
|
||||
onClear()
|
||||
}
|
||||
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
onDelete(viewHolder.adapterPosition)
|
||||
}
|
||||
}
|
||||
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/window_background">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/row"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<View
|
||||
android:id="@+id/divider"
|
||||
style="@style/horizontal_divider"
|
||||
android:visibility="gone"
|
||||
android:layout_alignParentTop="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/filter_count"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:padding="@dimen/keyline_first"
|
||||
android:gravity="center_vertical|end" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
app:tint="@color/icon_tint_with_alpha"
|
||||
android:padding="@dimen/keyline_first"
|
||||
android:src="@drawable/ic_outline_add_24px"
|
||||
android:scaleType="center" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
style="@style/TextAppearance"
|
||||
android:layout_toEndOf="@id/icon"
|
||||
android:layout_toStartOf="@id/filter_count"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:padding="@dimen/keyline_first"
|
||||
android:gravity="start|center_vertical"
|
||||
android:textAlignment="viewStart"
|
||||
android:textSize="18sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</FrameLayout>
|
||||
Loading…
Reference in New Issue