Fix expand/collapse issues

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

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

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

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

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

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

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

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

@ -212,19 +212,6 @@ public class ViewHolder extends RecyclerView.ViewHolder {
hidden.setVisibility(task.isHidden() ? View.VISIBLE : View.GONE); hidden.setVisibility(task.isHidden() ? View.VISIBLE : View.GONE);
setupTitleAndCheckbox(); setupTitleAndCheckbox();
setupDueDate(); 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)) { if (preferences.getBoolean(R.string.p_show_list_indicators, true)) {
setupLocation(); setupLocation();
setupTags(); 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() { private void setupTitleAndCheckbox() {
if (task.isCompleted()) { if (task.isCompleted()) {
nameView.setEnabled(false); nameView.setEnabled(false);
@ -313,6 +316,7 @@ public class ViewHolder extends RecyclerView.ViewHolder {
@OnClick(R.id.subtasks_chip) @OnClick(R.id.subtasks_chip)
void toggleSubtasks() { void toggleSubtasks() {
callback.toggleSubtasks(task, !task.isCollapsed()); callback.toggleSubtasks(task, !task.isCollapsed());
setupSubtasksChip();
} }
@OnClick(R.id.rowBody) @OnClick(R.id.rowBody)

Loading…
Cancel
Save