Fixed double-detail-separator bug, fixed wrong criteria meaning new tasks didn't get details created

pull/14/head
Tim Su 14 years ago
parent ee303ab1f4
commit 5ea3fcd885

@ -422,22 +422,14 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
if(task.isCompleted()) if(task.isCompleted())
continue; continue;
if(task.getValue(Task.DETAILS_DATE) >= task.getValue(Task.MODIFICATION_DATE)) if(detailsAreRecentAndUpToDate(task))
continue; continue;
if(task.getValue(Task.DETAILS_DATE) < DateUtilities.now() - 3 * DateUtilities.ONE_DAY) addTaskToLoadingArray(task);
continue; requestNewDetails(task);
taskDetailLoader.put(task.getId(), new StringBuilder(task.getValue(Task.DETAILS)));
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId());
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_EXTENDED, false);
activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
if(TextUtils.isEmpty(task.getValue(Task.DETAILS))) { if(TextUtils.isEmpty(task.getValue(Task.DETAILS)))
task.setValue(Task.DETAILS, DETAIL_SEPARATOR); task.setValue(Task.DETAILS, DETAIL_SEPARATOR);
}
task.setValue(Task.DETAILS_DATE, DateUtilities.now()); task.setValue(Task.DETAILS_DATE, DateUtilities.now());
taskService.save(task); taskService.save(task);
} }
@ -445,6 +437,26 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
// suppress silently // suppress silently
} }
} }
private boolean detailsAreRecentAndUpToDate(Task task) {
return task.getValue(Task.DETAILS_DATE) > DateUtilities.now() - 3 * 5 &&
task.getValue(Task.DETAILS_DATE) >= task.getValue(Task.MODIFICATION_DATE);
}
private void addTaskToLoadingArray(Task task) {
StringBuilder detailStringBuilder = new StringBuilder();
if(TextUtils.isEmpty(task.getValue(Task.DETAILS)) || DETAIL_SEPARATOR.equals(task.getValue(Task.DETAILS)))
taskDetailLoader.put(task.getId(), detailStringBuilder);
else
taskDetailLoader.put(task.getId(), detailStringBuilder.append(task.getValue(Task.DETAILS)));
}
private void requestNewDetails(Task task) {
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_REQUEST_DETAILS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId());
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_EXTENDED, false);
activity.sendOrderedBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
}
} }
/** /**
@ -460,7 +472,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
synchronized(details) { synchronized(details) {
if(details.toString().contains(detail)) if(details.toString().contains(detail))
return; return;
if(details.length() > 0) if(details.length() > 0 && !details.toString().endsWith(DETAIL_SEPARATOR))
details.append(DETAIL_SEPARATOR); details.append(DETAIL_SEPARATOR);
details.append(detail); details.append(detail);
taskDetailContainer.setId(id); taskDetailContainer.setId(id);
@ -597,7 +609,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
@Override @Override
Intent createBroadcastIntent(Task task) { Intent createBroadcastIntent(Task task) {
// TODO performance hack hack // performance hack, get rid of me when task list performance is improved
if(task.getValue(Task.TIMER_START) == 0 && if(task.getValue(Task.TIMER_START) == 0 &&
task.getValue(Task.ELAPSED_SECONDS) == 0) task.getValue(Task.ELAPSED_SECONDS) == 0)
return null; return null;

Loading…
Cancel
Save