Fixes caused by thread stuff.

pull/14/head
Tim Su 17 years ago
parent 40fc726657
commit 480a54bfa1

@ -36,6 +36,7 @@
<string name="repeat_days">Day(s)</string>
<string name="repeat_weeks">Week(s)</string>
<string name="repeat_months">Month(s)</string>
<string name="repeat_hours">Hour(s)</string>
<!-- Plurals -->
<plurals name="Ntasks">

@ -77,6 +77,10 @@ abstract public class SubActivity {
return false;
}
void onSaveInstanceState(Bundle outState) {
//
}
// --- pass-through to activity methods
public Resources getResources() {

@ -279,7 +279,7 @@ public class TaskListAdapter extends ArrayAdapter<TaskModelForList> {
String cachedResult = task.getCachedLabel(KEY_NAME);
if(cachedResult == null) {
String nameValue = task.getName();
if(task.getHiddenUntil() != null && task.getHiddenUntil().after(new Date())) {
if(task.getHiddenUntil() != null && task.getHiddenUntil().getTime() > System.currentTimeMillis()) {
nameValue = "(" + r.getString(R.string.taskList_hiddenPrefix) + ") " + nameValue;
task.putCachedLabel(KEY_HIDDEN, CACHE_TRUE);
}

@ -129,7 +129,8 @@ public class TaskListSubActivity extends SubActivity {
private HashMap<TaskModelForList, LinkedList<TagModelForView>> taskTags;
private Long selectedTaskId = null;
private TaskModelForList selectedTask = null;
private Handler handler;
private Handler handler = null;
private Thread loadingThread = null;
// display filters
private static boolean filterShowHidden = false;
@ -137,6 +138,7 @@ public class TaskListSubActivity extends SubActivity {
private static SortMode sortMode = SortMode.AUTO;
private static boolean sortReverse = false;
private TagModelForView filterTag = null;
private boolean suppressReload = false;
/* ======================================================================
* ======================================================= initialization
@ -167,7 +169,7 @@ public class TaskListSubActivity extends SubActivity {
setupUIComponents();
// time to go!
new Thread(new Runnable() {
loadingThread = new Thread(new Runnable() {
@Override
public void run() {
loadTaskListSort();
@ -185,13 +187,16 @@ public class TaskListSubActivity extends SubActivity {
if(variables.containsKey(NOTIF_REPEAT_TOKEN))
repeatInterval = variables.getLong(NOTIF_REPEAT_TOKEN);
flags = variables.getInt(NOTIF_FLAGS_TOKEN);
suppressReload = true;
showNotificationAlert(selectedTask,
repeatInterval, flags);
}
});
}
loadingThread = null;
}
}).start();
});
loadingThread.start();
}
@ -295,7 +300,7 @@ public class TaskListSubActivity extends SubActivity {
Date definite = task.getDefiniteDueDate();
Date preferred = task.getPreferredDueDate();
if(definite != null && preferred != null) {
if(preferred.before(new Date()))
if(preferred.getTime() < System.currentTimeMillis())
return definite.getTime();
return preferred.getTime();
} else if(definite != null)
@ -403,7 +408,7 @@ public class TaskListSubActivity extends SubActivity {
}
/** Fill in the Task List with our tasks */
private void fillData() {
private synchronized void fillData() {
// get a cursor to the task list
Cursor tasksCursor;
if(filterTag != null) {
@ -519,63 +524,73 @@ public class TaskListSubActivity extends SubActivity {
loadingText.setVisibility(View.GONE);
}
});
}
/** Set up the adapter for our task list */
private void setUpListUI() {
// set up our adapter
TaskListAdapter tasks = new TaskListAdapter(getParent(),
R.layout.task_list_row, taskArray, new TaskListAdapterHooks() {
@Override
public TagController tagController() {
return getTagController();
}
class TaskListHooks implements TaskListAdapterHooks {
@Override
public List<TagModelForView> getTagsFor(
TaskModelForList task) {
return taskTags.get(task);
}
private HashMap<TaskModelForList, LinkedList<TagModelForView>> myTaskTags;
private List<TaskModelForList> myTaskArray;
@Override
public List<TaskModelForList> getTaskArray() {
return taskArray;
}
public TaskListHooks() {
this.myTaskTags = taskTags;
this.myTaskArray = taskArray;
}
@Override
public TaskController taskController() {
return getTaskController();
}
@Override
public TagController tagController() {
return getTagController();
}
@Override
public void performItemClick(View v, int position) {
listView.performItemClick(v, position, 0);
}
@Override
public List<TagModelForView> getTagsFor(
TaskModelForList task) {
return myTaskTags.get(task);
}
public void onCreatedTaskListView(View v, TaskModelForList task) {
v.setOnTouchListener(getGestureListener());
}
@Override
public List<TaskModelForList> getTaskArray() {
return myTaskArray;
}
@Override
public void editItem(TaskModelForList task) {
editTask(task);
}
@Override
public TaskController taskController() {
return getTaskController();
}
@Override
public void toggleTimerOnItem(TaskModelForList task) {
toggleTimer(task);
}
@Override
public void performItemClick(View v, int position) {
listView.performItemClick(v, position, 0);
}
@Override
public void setSelectedItem(TaskIdentifier taskId) {
if(taskId == null) {
selectedTaskId = null;
selectedTask = null;
} else
selectedTaskId = taskId.getId();
}
});
public void onCreatedTaskListView(View v, TaskModelForList task) {
v.setOnTouchListener(getGestureListener());
}
@Override
public void editItem(TaskModelForList task) {
editTask(task);
}
@Override
public void toggleTimerOnItem(TaskModelForList task) {
toggleTimer(task);
}
@Override
public void setSelectedItem(TaskIdentifier taskId) {
if(taskId == null) {
selectedTaskId = null;
selectedTask = null;
} else
selectedTaskId = taskId.getId();
}
}
/** Set up the adapter for our task list */
private void setUpListUI() {
// set up our adapter
TaskListAdapter tasks = new TaskListAdapter(getParent(),
R.layout.task_list_row, taskArray, new TaskListHooks());
listView.setAdapter(tasks);
listView.setItemsCanFocus(true);
@ -660,21 +675,24 @@ public class TaskListSubActivity extends SubActivity {
return false;
}
@Override
protected void onSaveInstanceState(Bundle outState) {
if(loadingThread != null)
loadingThread.stop();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == Constants.RESULT_SYNCHRONIZE) {
Synchronizer.synchronize(getParent(), false, new SynchronizerListener() {
@Override
public void onSynchronizerFinished(int numServicesSynced) {
if(numServicesSynced == 0)
if(numServicesSynced == 0) {
DialogUtilities.okDialog(getParent(), getResources().getString(
R.string.sync_no_synchronizers), null);
new Thread(new Runnable() {
@Override
public void run() {
fillData();
}
});
return;
}
fillData();
}
});
} else if(requestCode == ACTIVITY_TAGS)
@ -685,6 +703,11 @@ public class TaskListSubActivity extends SubActivity {
public void onWindowFocusChanged(boolean hasFocus) {
// refresh, since stuff might have changed...
if(hasFocus) {
if(suppressReload) {
suppressReload = false;
return;
}
fillData();
}
}
@ -772,6 +795,19 @@ public class TaskListSubActivity extends SubActivity {
sortMode = SortMode.values()[sortId - 1];
}
/** Compute date after postponing tasks */
private Date computePostponeDate(Date input, long postponeMillis,
boolean shiftFromTodayIfPast) {
if(input != null) {
if(shiftFromTodayIfPast && input.getTime() < System.currentTimeMillis())
input = new Date();
input = new Date(input.getTime() +
postponeMillis);
}
return input;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
final TaskModelForList task;
@ -839,18 +875,13 @@ public class TaskListSubActivity extends SubActivity {
public void onNumbersPicked(int[] values) {
long postponeMillis = (values[0] * 24 + values[1]) *
3600L * 1000;
Date preferred = task.getPreferredDueDate();
if(preferred != null) {
preferred = new Date(preferred.getTime() +
postponeMillis);
task.setPreferredDueDate(preferred);
}
Date definite = task.getDefiniteDueDate();
if(definite != null) {
definite = new Date(definite.getTime() +
postponeMillis);
task.setDefiniteDueDate(definite);
}
task.setPreferredDueDate(computePostponeDate(
task.getPreferredDueDate(), postponeMillis, true));
task.setDefiniteDueDate(computePostponeDate(
task.getDefiniteDueDate(), postponeMillis, true));
task.setHiddenUntil(computePostponeDate(
task.getHiddenUntil(), postponeMillis, false));
getTaskController().saveTask(task);
fillData();
}

@ -45,6 +45,12 @@ public enum RepeatInterval {
input.setMonth(input.getMonth() + number);
}
},
HOURS(R.string.repeat_hours) {
@Override
public void offsetDateBy(Date input, int number) {
input.setHours(input.getHours() + number);
}
},
;

@ -382,7 +382,7 @@ public abstract class AbstractTaskModel extends AbstractModel {
protected boolean isHidden() {
if(getHiddenUntil() == null)
return false;
return getHiddenUntil().after(new Date());
return getHiddenUntil().getTime() > System.currentTimeMillis();
}
protected Date getCreationDate() {
@ -522,7 +522,7 @@ public abstract class AbstractTaskModel extends AbstractModel {
protected void putDate(String fieldName, Date date) {
if(date == null)
putIfChangedFromDatabase(fieldName, (Long)null);
putIfChangedFromDatabase(fieldName, 0);
else
putIfChangedFromDatabase(fieldName, date.getTime());
}

@ -259,7 +259,7 @@ public class TaskController extends AbstractController {
// task timer was updated, update notification bar
if(values.containsKey(AbstractTaskModel.TIMER_START)) {
// show notification bar if timer was started
if(values.get(AbstractTaskModel.TIMER_START) != null) {
if(values.getAsLong(AbstractTaskModel.TIMER_START) != 0) {
Notifications.showTimingNotification(context,
task.getTaskIdentifier(), task.getName());
} else {

@ -243,4 +243,9 @@ public class TaskModelForList extends AbstractTaskModel {
public void setImportance(Importance importance) {
super.setImportance(importance);
}
@Override
public void setHiddenUntil(Date hiddenUntil) {
super.setHiddenUntil(hiddenUntil);
}
}

Loading…
Cancel
Save