|
|
@ -26,7 +26,7 @@ import com.todoroo.astrid.service.MetadataService;
|
|
|
|
import com.todoroo.astrid.service.TaskService;
|
|
|
|
import com.todoroo.astrid.service.TaskService;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Displays the preference screen for users to edit their preferences
|
|
|
|
* Displays the preference screen for users to manage their old tasks and events
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @author Tim Su <tim@todoroo.com>
|
|
|
|
* @author Tim Su <tim@todoroo.com>
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -50,21 +50,37 @@ public class OldTaskPreferences extends TodorooPreferenceActivity {
|
|
|
|
DependencyInjectionService.getInstance().inject(this);
|
|
|
|
DependencyInjectionService.getInstance().inject(this);
|
|
|
|
|
|
|
|
|
|
|
|
// Extended prefs
|
|
|
|
// Extended prefs
|
|
|
|
Preference extpreference_completed = screen.findPreference(getString(R.string.EPr_manage_delete_completed));
|
|
|
|
Preference preference_delete_completed = screen.findPreference(getString(R.string.EPr_manage_delete_completed));
|
|
|
|
extpreference_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
preference_delete_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
showDeleteCompletedDialog();
|
|
|
|
showDeleteCompletedDialog();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Preference extpreference_purged = screen.findPreference(getString(R.string.EPr_manage_purge_deleted));
|
|
|
|
Preference preference_purge_deleted = screen.findPreference(getString(R.string.EPr_manage_purge_deleted));
|
|
|
|
extpreference_purged.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
preference_purge_deleted.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
showPurgeDeletedDialog();
|
|
|
|
showPurgeDeletedDialog();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Preference preference_delete_completed_events = screen.findPreference(getString(R.string.EPr_manage_delete_completed_gcal));
|
|
|
|
|
|
|
|
preference_delete_completed_events.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
|
|
|
|
showDeleteCompletedEventsDialog();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Preference preference_delete_all_events = screen.findPreference(getString(R.string.EPr_manage_delete_all_gcal));
|
|
|
|
|
|
|
|
preference_delete_all_events.setOnPreferenceClickListener(new OnPreferenceClickListener() {
|
|
|
|
|
|
|
|
public boolean onPreferenceClick(Preference p) {
|
|
|
|
|
|
|
|
showDeleteAllEventsDialog();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* (non-Javadoc)
|
|
|
|
/* (non-Javadoc)
|
|
|
@ -152,6 +168,88 @@ public class OldTaskPreferences extends TodorooPreferenceActivity {
|
|
|
|
}, null);
|
|
|
|
}, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Show the dialog to delete completed events */
|
|
|
|
|
|
|
|
private void showDeleteCompletedEventsDialog() {
|
|
|
|
|
|
|
|
DialogUtilities.okCancelDialog(
|
|
|
|
|
|
|
|
this,
|
|
|
|
|
|
|
|
getResources().getString(
|
|
|
|
|
|
|
|
R.string.EPr_manage_delete_completed_gcal_message),
|
|
|
|
|
|
|
|
new OnClickListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
|
|
|
runWithDialog(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
int deletedEventCount = 0;
|
|
|
|
|
|
|
|
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
|
|
|
|
|
|
|
|
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Task task = new Task();
|
|
|
|
|
|
|
|
int length = cursor.getCount();
|
|
|
|
|
|
|
|
for(int i = 0; i < length; i++) {
|
|
|
|
|
|
|
|
cursor.moveToNext();
|
|
|
|
|
|
|
|
task.readFromCursor(cursor);
|
|
|
|
|
|
|
|
if (GCalHelper.deleteTaskEvent(task))
|
|
|
|
|
|
|
|
deletedEventCount++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
cursor.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// mass update the CALENDAR_URI here,
|
|
|
|
|
|
|
|
// since the GCalHelper doesnt save it due to performance-reasons
|
|
|
|
|
|
|
|
Task template = new Task();
|
|
|
|
|
|
|
|
template.setValue(Task.CALENDAR_URI, "");
|
|
|
|
|
|
|
|
int result = taskService.update(
|
|
|
|
|
|
|
|
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()),
|
|
|
|
|
|
|
|
template);
|
|
|
|
|
|
|
|
showResult(R.string.EPr_manage_delete_completed_gcal_status, deletedEventCount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Show the dialog to delete all events */
|
|
|
|
|
|
|
|
private void showDeleteAllEventsDialog() {
|
|
|
|
|
|
|
|
DialogUtilities.okCancelDialog(
|
|
|
|
|
|
|
|
this,
|
|
|
|
|
|
|
|
getResources().getString(
|
|
|
|
|
|
|
|
R.string.EPr_manage_delete_all_gcal_message),
|
|
|
|
|
|
|
|
new OnClickListener() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
|
|
|
|
|
runWithDialog(new Runnable() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void run() {
|
|
|
|
|
|
|
|
int deletedEventCount = 0;
|
|
|
|
|
|
|
|
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
|
|
|
|
|
|
|
|
Task.CALENDAR_URI.isNotNull()));
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Task task = new Task();
|
|
|
|
|
|
|
|
int length = cursor.getCount();
|
|
|
|
|
|
|
|
for(int i = 0; i < length; i++) {
|
|
|
|
|
|
|
|
cursor.moveToNext();
|
|
|
|
|
|
|
|
task.readFromCursor(cursor);
|
|
|
|
|
|
|
|
if (GCalHelper.deleteTaskEvent(task))
|
|
|
|
|
|
|
|
deletedEventCount++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
cursor.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// mass update the CALENDAR_URI here,
|
|
|
|
|
|
|
|
// since the GCalHelper doesnt save it due to performance-reasons
|
|
|
|
|
|
|
|
Task template = new Task();
|
|
|
|
|
|
|
|
template.setValue(Task.CALENDAR_URI, "");
|
|
|
|
|
|
|
|
int result = taskService.update(
|
|
|
|
|
|
|
|
Task.CALENDAR_URI.isNotNull(),
|
|
|
|
|
|
|
|
template);
|
|
|
|
|
|
|
|
showResult(R.string.EPr_manage_delete_all_gcal_status, deletedEventCount);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** Run runnable with progress dialog */
|
|
|
|
/** Run runnable with progress dialog */
|
|
|
|
protected void runWithDialog(final Runnable runnable) {
|
|
|
|
protected void runWithDialog(final Runnable runnable) {
|
|
|
|
pd = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait));
|
|
|
|
pd = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait));
|
|
|
|