Detect indent changes in tags and filters

synthesis
Alex Baker 6 years ago
parent 8406a15836
commit 52f258d99b

@ -65,13 +65,13 @@ class OrderedMetadataListFragmentHelper {
@Override
public int getIndent(Task task) {
return task.getGoogleTaskIndent();
return task.getIndent();
}
@Override
public boolean canIndent(int position, Task task) {
Task parent = taskAdapter.getTask(position - 1);
return parent != null && getIndent(task) <= parent.getGoogleTaskIndent();
return parent != null && getIndent(task) <= parent.getIndent();
}
@Override
@ -134,7 +134,7 @@ class OrderedMetadataListFragmentHelper {
}
final ArrayList<Long> chained = new ArrayList<>();
final int parentIndent = item.getGoogleTaskIndent();
final int parentIndent = item.getIndent();
updater.applyToChildren(list, itemId, node -> {
Task childTask = taskDao.fetch(node.taskId);
if(!TextUtils.isEmpty(childTask.getRecurrence())) {

@ -208,7 +208,7 @@ public class Task implements Parcelable {
public static final int IMPORTANCE_NONE = 3;
@Ignore
private transient int googleTaskIndent;
private transient int indent;
@Ignore
private transient String tags;
@ -336,7 +336,7 @@ public class Task implements Parcelable {
calendarUri = _cursor.getString(_cursorIndexOfCalendarUri);
remoteId = _cursor.getString(_cursorIndexOfRemoteId);
if (_cursorIndexOfIndent >= 0) {
googleTaskIndent = _cursor.getInt(_cursorIndexOfIndent);
indent = _cursor.getInt(_cursorIndexOfIndent);
}
if (_cursorIndexOfTags >= 0) {
tags = _cursor.getString(_cursorIndexOfTags);
@ -394,7 +394,7 @@ public class Task implements Parcelable {
title = parcel.readString();
remoteId = parcel.readString();
transitoryData = parcel.readHashMap(ContentValues.class.getClassLoader());
googleTaskIndent = parcel.readInt();
indent = parcel.readInt();
}
public long getId() {
@ -852,7 +852,7 @@ public class Task implements Parcelable {
dest.writeString(title);
dest.writeString(remoteId);
dest.writeMap(transitoryData);
dest.writeInt(googleTaskIndent);
dest.writeInt(indent);
}
@Override
@ -883,8 +883,12 @@ public class Task implements Parcelable {
'}';
}
public int getGoogleTaskIndent() {
return googleTaskIndent;
public int getIndent() {
return indent;
}
public void setIndent(int indent) {
this.indent = indent;
}
public boolean insignificantChange(Task task) {
@ -985,7 +989,6 @@ public class Task implements Parcelable {
Task task = (Task) o;
if (googleTaskIndent != task.googleTaskIndent) return false;
if (hasFiles != task.hasFiles) return false;
if (id != null ? !id.equals(task.id) : task.id != null) return false;
if (title != null ? !title.equals(task.title) : task.title != null) return false;
@ -1049,7 +1052,7 @@ public class Task implements Parcelable {
result = 31 * result + (repeatUntil != null ? repeatUntil.hashCode() : 0);
result = 31 * result + (calendarUri != null ? calendarUri.hashCode() : 0);
result = 31 * result + (remoteId != null ? remoteId.hashCode() : 0);
result = 31 * result + googleTaskIndent;
result = 31 * result + indent;
result = 31 * result + (tags != null ? tags.hashCode() : 0);
result = 31 * result + (hasFiles ? 1 : 0);
return result;

@ -0,0 +1,25 @@
package org.tasks.tasklist;
import android.support.annotation.NonNull;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task;
public class DiffCallback extends android.support.v7.recyclerview.extensions.DiffCallback<Task> {
private final TaskAdapter adapter;
public DiffCallback(TaskAdapter adapter) {
this.adapter = adapter;
}
@Override
public boolean areItemsTheSame(@NonNull Task oldItem, @NonNull Task newItem) {
return oldItem.getId() == newItem.getId();
}
@Override
public boolean areContentsTheSame(@NonNull Task oldItem, @NonNull Task newItem) {
return oldItem.equals(newItem) && oldItem.getIndent() == adapter.getIndent(newItem);
}
}

@ -5,8 +5,6 @@ import android.arch.paging.PagedList;
import android.arch.paging.PagedListAdapterHelper;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.recyclerview.extensions.DiffCallback;
import android.support.v7.recyclerview.extensions.ListAdapterConfig;
import android.support.v7.util.ListUpdateCallback;
import android.support.v7.view.ActionMode;
@ -40,18 +38,6 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
private static final String EXTRA_SELECTED_TASK_IDS = "extra_selected_task_ids";
private static final DiffCallback<Task> DIFF_CALLBACK = new DiffCallback<Task>() {
@Override
public boolean areItemsTheSame(@NonNull Task oldItem, @NonNull Task newItem) {
return oldItem.getId() == newItem.getId();
}
@Override
public boolean areContentsTheSame(@NonNull Task oldItem, @NonNull Task newItem) {
return oldItem.equals(newItem);
}
};
private final Activity activity;
private final TaskAdapter adapter;
private final ViewHolderFactory viewHolderFactory;
@ -61,6 +47,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
private final Tracker tracker;
private final DialogBuilder dialogBuilder;
private final ItemTouchHelper itemTouchHelper;
private final PagedListAdapterHelper<Task> adapterHelper;
private ActionMode mode = null;
private boolean dragging;
@ -80,10 +67,9 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
this.tracker = tracker;
this.dialogBuilder = dialogBuilder;
itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback());
adapterHelper = new PagedListAdapterHelper<>(this, new ListAdapterConfig.Builder<Task>().setDiffCallback(new DiffCallback(adapter)).build());
}
private PagedListAdapterHelper<Task> adapterHelper = new PagedListAdapterHelper<>(this, new ListAdapterConfig.Builder<Task>().setDiffCallback(DIFF_CALLBACK).build());
public void applyToRecyclerView(RecyclerView recyclerView) {
recyclerView.setAdapter(this);
itemTouchHelper.attachToRecyclerView(recyclerView);
@ -119,7 +105,9 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
if (task != null) {
holder.bindView(task);
holder.setMoving(false);
holder.setIndent(adapter.getIndent(task));
int indent = adapter.getIndent(task);
task.setIndent(indent);
holder.setIndent(indent);
holder.setSelected(adapter.isSelected(task));
}
}

Loading…
Cancel
Save