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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<string-array name="android_wear_capabilities">
|
<string-array name="android_wear_capabilities" tools:ignore="UnusedResources">
|
||||||
<item>data_layer_app_helper_device_phone</item>
|
<item>data_layer_app_helper_device_phone</item>
|
||||||
<item>horologist_phone</item>
|
<item>horologist_phone</item>
|
||||||
</string-array>
|
</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