package com.todoroo.astrid.actfm;
import java.util.concurrent.atomic.AtomicReference;
import android.database.Cursor;
import android.graphics.Typeface;
import android.text.TextUtils;
import android.widget.TextView;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.adapter.TaskAdapter.OnCompletedTaskListener;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.WaitingOnMeDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.WaitingOnMe;
public class WaitingOnMeFragment extends TaskListFragment {
@Autowired
private WaitingOnMeDao waitingOnMeDao;
@Autowired
private TaskDao taskDao;
@Override
public Property<?>[] taskProperties() {
return AndroidUtilities.addToArray(Property.class, super.taskProperties(), WaitingOnMe.READ_AT, WaitingOnMe.ACKNOWLEDGED);
}
@Override
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return new WaitingOnMeTaskAdapter(this, getTaskRowResource(),
cursor, sqlQueryTemplate, false,
new OnCompletedTaskListener() {
@Override
public void onCompletedTask(Task item, boolean newState) {
if (newState == true)
onTaskCompleted(item);
}
});
}
private static class WaitingOnMeTaskAdapter extends TaskAdapter {
public WaitingOnMeTaskAdapter(TaskListFragment fragment, int resource,
Cursor c, AtomicReference<String> query, boolean autoRequery,
OnCompletedTaskListener onCompletedTaskListener) {
super(fragment, resource, c, query, autoRequery, onCompletedTaskListener);
}
@Override
protected void setTaskAppearance(ViewHolder viewHolder, Task task) {
super.setTaskAppearance(viewHolder, task);
TextView nameView = viewHolder.nameView;
if (task.getValue(WaitingOnMe.READ_AT) == 0 && task.getValue(WaitingOnMe.ACKNOWLEDGED) == 0)
nameView.setTypeface(null, Typeface.BOLD);
else
nameView.setTypeface(null, 0);
}
}
@Override
public void onTaskListItemClicked(long taskId, boolean editable) {
super.onTaskListItemClicked(taskId, editable);
String uuid = taskDao.uuidFromLocalId(taskId);
if (!TextUtils.isEmpty(uuid)) {
TodorooCursor<WaitingOnMe> womCursor = waitingOnMeDao.query(Query.select(WaitingOnMe.ID)
.where(Criterion.and(WaitingOnMe.TASK_UUID.eq(uuid), WaitingOnMe.READ_AT.eq(0))));
try {
if (womCursor.getCount() > 0) {
womCursor.moveToFirst();
WaitingOnMe wom = new WaitingOnMe(womCursor);
wom.setValue(WaitingOnMe.READ_AT, DateUtilities.now());
waitingOnMeDao.saveExisting(wom);
}
} finally {
womCursor.close();
}
}
}
}