|
|
|
@ -6,8 +6,6 @@ import java.util.Collections;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
import android.app.Activity;
|
|
|
|
@ -217,10 +215,10 @@ public class SubtasksFragmentHelper {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final Map<Long, ArrayList<Long>> chainedCompletions =
|
|
|
|
|
|
|
|
Collections.synchronizedMap(new HashMap<Long, ArrayList<Long>>());
|
|
|
|
|
|
|
|
|
|
|
|
private void setCompletedForItemAndSubtasks(final Task item, final boolean completedState) {
|
|
|
|
private void setCompletedForItemAndSubtasks(final Task item, final boolean completedState) {
|
|
|
|
final Map<Long, ArrayList<Long>> chainedCompletions =
|
|
|
|
|
|
|
|
Collections.synchronizedMap(new HashMap<Long, ArrayList<Long>>());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
final long itemId = item.getId();
|
|
|
|
final long itemId = item.getId();
|
|
|
|
|
|
|
|
|
|
|
|
@ -240,13 +238,8 @@ public class SubtasksFragmentHelper {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
new Thread() {
|
|
|
|
final int startIndent = item.getValue(SubtasksMetadata.INDENT);
|
|
|
|
@Override
|
|
|
|
final AtomicBoolean started = new AtomicBoolean(false);
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
final AtomicInteger startIndent = new AtomicInteger(
|
|
|
|
|
|
|
|
item.getValue(SubtasksMetadata.INDENT));
|
|
|
|
|
|
|
|
final AtomicLong startOrder= new AtomicLong(
|
|
|
|
|
|
|
|
item.getValue(SubtasksMetadata.ORDER));
|
|
|
|
|
|
|
|
final AtomicBoolean finished = new AtomicBoolean(false);
|
|
|
|
final AtomicBoolean finished = new AtomicBoolean(false);
|
|
|
|
final ArrayList<Long> chained = new ArrayList<Long>();
|
|
|
|
final ArrayList<Long> chained = new ArrayList<Long>();
|
|
|
|
chainedCompletions.put(itemId, chained);
|
|
|
|
chainedCompletions.put(itemId, chained);
|
|
|
|
@ -257,14 +250,15 @@ public class SubtasksFragmentHelper {
|
|
|
|
if(finished.get())
|
|
|
|
if(finished.get())
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
long order = metadata.containsNonNullValue(SubtasksMetadata.ORDER) ?
|
|
|
|
|
|
|
|
metadata.getValue(SubtasksMetadata.ORDER) : 0;
|
|
|
|
|
|
|
|
int indent = metadata.containsNonNullValue(SubtasksMetadata.INDENT) ?
|
|
|
|
int indent = metadata.containsNonNullValue(SubtasksMetadata.INDENT) ?
|
|
|
|
metadata.getValue(SubtasksMetadata.INDENT) : 0;
|
|
|
|
metadata.getValue(SubtasksMetadata.INDENT) : 0;
|
|
|
|
|
|
|
|
|
|
|
|
if(order < startOrder.get())
|
|
|
|
if(taskId == itemId){
|
|
|
|
|
|
|
|
started.set(true);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else if(!started.get())
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
else if(indent == startIndent.get()) {
|
|
|
|
else if(indent <= startIndent) {
|
|
|
|
finished.set(true);
|
|
|
|
finished.set(true);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -275,14 +269,8 @@ public class SubtasksFragmentHelper {
|
|
|
|
chained.add(taskId);
|
|
|
|
chained.add(taskId);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
getActivity().runOnUiThread(new Runnable() {
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
taskAdapter.notifyDataSetInvalidated();
|
|
|
|
taskAdapter.notifyDataSetInvalidated();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}.start();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setList(String list) {
|
|
|
|
public void setList(String list) {
|
|
|
|
this.list = list;
|
|
|
|
this.list = list;
|
|
|
|
|