Fix expand/collapse issues

* Don't allow in Google Tasks 'My Order'
* Broadcast refresh after toggling
gtask_related_email
Alex Baker 5 years ago
parent 0d109b5f4d
commit 7e4279bdb6

@ -605,6 +605,10 @@ public final class TaskListFragment extends InjectingFragment
return true;
}
public void broadcastRefresh() {
localBroadcastManager.broadcastRefresh();
}
public interface TaskListFragmentCallbackHandler {
void onTaskListItemClicked(Task task);

@ -55,6 +55,11 @@ public final class AstridTaskAdapter extends TaskAdapter {
return true;
}
@Override
public boolean supportsManualSorting() {
return true;
}
@Override
public void moved(int from, int to, int indent) {
TaskContainer source = getTask(from);

@ -19,6 +19,11 @@ public final class GoogleTaskAdapter extends GoogleTaskManualSortAdapter {
this.newTasksOnTop = newTasksOnTop;
}
@Override
public boolean supportsManualSorting() {
return false;
}
@Override
public void moved(int from, int to, int indent) {
TaskContainer task = getTask(from);

@ -65,6 +65,11 @@ public class GoogleTaskManualSortAdapter extends TaskAdapter {
return true;
}
@Override
public boolean supportsManualSorting() {
return true;
}
@Override
public void moved(int from, int to, int indent) {
TaskContainer task = getTask(from);

@ -85,6 +85,10 @@ public class TaskAdapter {
return false;
}
public boolean supportsManualSorting() {
return false;
}
public void moved(int from, int to, int indent) {}
public TaskContainer getTask(int position) {

@ -14,6 +14,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import androidx.annotation.IntDef;
import androidx.core.os.ParcelCompat;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
@ -239,6 +240,7 @@ public class Task implements Parcelable {
title = parcel.readString();
remoteId = parcel.readString();
transitoryData = parcel.readHashMap(ContentValues.class.getClassLoader());
collapsed = ParcelCompat.readBoolean(parcel);
}
/**
@ -657,6 +659,7 @@ public class Task implements Parcelable {
dest.writeString(title);
dest.writeString(remoteId);
dest.writeMap(transitoryData);
ParcelCompat.writeBoolean(dest, collapsed);
}
@Override
@ -671,8 +674,6 @@ public class Task implements Parcelable {
+ priority
+ ", dueDate="
+ dueDate
+ ", transitoryData="
+ transitoryData
+ ", hideUntil="
+ hideUntil
+ ", created="
@ -711,6 +712,10 @@ public class Task implements Parcelable {
+ ", remoteId='"
+ remoteId
+ '\''
+ ", collapsed="
+ collapsed
+ ", transitoryData="
+ transitoryData
+ '}';
}
@ -888,12 +893,15 @@ public class Task implements Parcelable {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
if (!(o instanceof Task)) {
return false;
}
Task task = (Task) o;
if (collapsed != task.collapsed) {
return false;
}
if (id != null ? !id.equals(task.id) : task.id != null) {
return false;
}
@ -964,7 +972,12 @@ public class Task implements Parcelable {
if (calendarUri != null ? !calendarUri.equals(task.calendarUri) : task.calendarUri != null) {
return false;
}
return remoteId != null ? remoteId.equals(task.remoteId) : task.remoteId == null;
if (remoteId != null ? !remoteId.equals(task.remoteId) : task.remoteId != null) {
return false;
}
return transitoryData != null
? transitoryData.equals(task.transitoryData)
: task.transitoryData == null;
}
@Override
@ -990,6 +1003,8 @@ 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 + (collapsed ? 1 : 0);
result = 31 * result + (transitoryData != null ? transitoryData.hashCode() : 0);
return result;
}

@ -92,6 +92,9 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
TaskContainer task = getItem(position);
if (task != null) {
holder.bindView(task, isRemoteList);
if (!adapter.supportsManualSorting()) {
holder.setupSubtasksChip();
}
holder.setMoving(false);
int indent = adapter.getIndent(task);
task.setIndent(indent);
@ -139,7 +142,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder>
@Override
public void toggleSubtasks(TaskContainer task, boolean collapsed) {
taskDao.setCollapsed(task.getId(), collapsed);
taskList.loadTaskListContent();
taskList.broadcastRefresh();
}
public void startActionMode() {

@ -212,19 +212,6 @@ public class ViewHolder extends RecyclerView.ViewHolder {
hidden.setVisibility(task.isHidden() ? View.VISIBLE : View.GONE);
setupTitleAndCheckbox();
setupDueDate();
if (task.hasChildren()) {
subtasksChip.setVisibility(View.VISIBLE);
subtasksChip.setText(
context
.getResources()
.getQuantityString(R.plurals.subtask_count, task.children, task.children));
subtasksChip.setChipIconResource(
task.isCollapsed()
? R.drawable.ic_keyboard_arrow_up_black_24dp
: R.drawable.ic_keyboard_arrow_down_black_24dp);
} else {
subtasksChip.setVisibility(View.GONE);
}
if (preferences.getBoolean(R.string.p_show_list_indicators, true)) {
setupLocation();
setupTags();
@ -243,6 +230,22 @@ public class ViewHolder extends RecyclerView.ViewHolder {
}
}
void setupSubtasksChip() {
if (task.hasChildren()) {
subtasksChip.setVisibility(View.VISIBLE);
subtasksChip.setText(
context
.getResources()
.getQuantityString(R.plurals.subtask_count, task.children, task.children));
subtasksChip.setChipIconResource(
task.isCollapsed()
? R.drawable.ic_keyboard_arrow_up_black_24dp
: R.drawable.ic_keyboard_arrow_down_black_24dp);
} else {
subtasksChip.setVisibility(View.GONE);
}
}
private void setupTitleAndCheckbox() {
if (task.isCompleted()) {
nameView.setEnabled(false);
@ -313,6 +316,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
@OnClick(R.id.subtasks_chip)
void toggleSubtasks() {
callback.toggleSubtasks(task, !task.isCollapsed());
setupSubtasksChip();
}
@OnClick(R.id.rowBody)

Loading…
Cancel
Save