Moved purge/delete to its own preference file and operations to their own threads. Renamed extended => Manage Old Tasks

pull/14/head
Tim Su 15 years ago
parent 08580f36c1
commit bb815e145a

@ -215,6 +215,14 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="com.todoroo.astrid.core.OldTaskPreferences"
android:theme="@android:style/Theme"
android:label="@string/EPr_manage_header">
<intent-filter>
<action android:name="com.todoroo.astrid.SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- custom filters --> <!-- custom filters -->
<receiver android:name="com.todoroo.astrid.core.CustomFilterExposer"> <receiver android:name="com.todoroo.astrid.core.CustomFilterExposer">

@ -0,0 +1,137 @@
/**
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.core;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.TodorooPreferenceActivity;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.TaskService;
/**
* Displays the preference screen for users to edit their preferences
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class OldTaskPreferences extends TodorooPreferenceActivity {
@Autowired private TaskService taskService;
@Autowired private MetadataService metadataService;
@Override
public int getPreferenceResource() {
return R.xml.preferences_manage;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen screen = getPreferenceScreen();
DependencyInjectionService.getInstance().inject(this);
// Extended prefs
Preference extpreference_completed = screen.findPreference(getString(R.string.EPr_manage_delete_completed));
extpreference_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference p) {
showDeleteCompletedDialog();
return true;
}
});
Preference extpreference_purged = screen.findPreference(getString(R.string.EPr_manage_purge_deleted));
extpreference_purged.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference p) {
showPurgeDeletedDialog();
return true;
}
});
}
/** Show the dialog to delete completed tasks */
private void showDeleteCompletedDialog() {
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_delete_completed_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
runWithDialog(new Runnable() {
@Override
public void run() {
Task template = new Task();
template.setValue(Task.DELETION_DATE,
DateUtilities.now());
int result = taskService.update(
Task.COMPLETION_DATE.gt(0), template);
showResult(
R.string.EPr_manage_delete_completed_status,
result);
}
});
}
}, null);
}
/** Show the dialog to purge deleted tasks */
private void showPurgeDeletedDialog() {
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_purge_deleted_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
runWithDialog(new Runnable() {
@Override
public void run() {
int result = taskService.deleteWhere(Task.DELETION_DATE.gt(0));
metadataService.cleanup();
showResult(
R.string.EPr_manage_purge_deleted_status,
result);
}
});
}
}, null);
}
/** Run runnable with progress dialog */
protected void runWithDialog(final Runnable runnable) {
final ProgressDialog pd = DialogUtilities.progressDialog(this, getString(R.string.DLG_please_wait));
new Thread(new Runnable() {
@Override
public void run() {
try {
runnable.run();
} finally {
DialogUtilities.dismissDialog(OldTaskPreferences.this, pd);
}
}
}).start();
}
protected void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), null);
}
@Override
public void updatePreferences(Preference preference, Object value) {
// :)
}
}

@ -723,16 +723,16 @@
<item>Am Stichtag oder überfällig</item> <item>Am Stichtag oder überfällig</item>
</string-array> </string-array>
<string name="EPr_extended_header">Erweitert</string> <string name="EPr_manage_header">Erweitert</string>
<string name="EPr_extended_delete_completed">Alle erledigten Aufgaben löschen</string> <string name="EPr_manage_delete_completed">Alle erledigten Aufgaben löschen</string>
<string name="EPr_extended_delete_completed_message">Wollen Sie wirklich alle erledigten Aufgaben löschen?</string> <string name="EPr_manage_delete_completed_message">Wollen Sie wirklich alle erledigten Aufgaben löschen?</string>
<string name="EPr_extended_delete_completed_summary">Hiermit gelöschte Aufgaben können einzeln wiederhergestellt werden</string> <string name="EPr_manage_delete_completed_summary">Hiermit gelöschte Aufgaben können einzeln wiederhergestellt werden</string>
<string name="EPr_extended_delete_completed_status">Es wurden %d erledigte Aufgaben gelöscht!</string> <string name="EPr_manage_delete_completed_status">Es wurden %d erledigte Aufgaben gelöscht!</string>
<string name="EPr_extended_purge_deleted">Alle gelöschten Aufgaben endgültig entfernen</string> <string name="EPr_manage_purge_deleted">Alle gelöschten Aufgaben endgültig entfernen</string>
<string name="EPr_extended_purge_deleted_message">Wollen Sie wirklich alle gelöschten Aufgaben endgültig entfernen?\n <string name="EPr_manage_purge_deleted_message">Wollen Sie wirklich alle gelöschten Aufgaben endgültig entfernen?\n
Achtung: diese Aufgaben sind unwiederbringlich verloren, wenn Sie kein Backup gemacht haben!</string> Achtung: diese Aufgaben sind unwiederbringlich verloren, wenn Sie kein Backup gemacht haben!</string>
<string name="EPr_extended_purge_deleted_summary">Achtung: diese Aufgaben können nur mit der Backupfunktion wiederhergestellt werden!</string> <string name="EPr_manage_purge_deleted_summary">Achtung: diese Aufgaben können nur mit der Backupfunktion wiederhergestellt werden!</string>
<string name="EPr_extended_purge_deleted_status">Es wurden %d gelöschte Aufgaben endgültig entfernt!</string> <string name="EPr_manage_purge_deleted_status">Es wurden %d gelöschte Aufgaben endgültig entfernt!</string>
<!-- ==================================================== AddOnActivity == --> <!-- ==================================================== AddOnActivity == -->

@ -431,6 +431,20 @@
<item>At deadline or overdue</item> <item>At deadline or overdue</item>
</string-array> </string-array>
<!-- ========================================== Task Management Settings == -->
<!-- Preference Screen Header: Old Task Management -->
<string name="EPr_manage_header">Manage Old Tasks</string>
<string name="EPr_manage_delete_completed">Delete Completed Tasks</string>
<string name="EPr_manage_delete_completed_message">Do you really want to delete all your completed tasks?</string>
<string name="EPr_manage_delete_completed_summary">This deleted tasks can be undeleted individually</string>
<string name="EPr_manage_delete_completed_status">Deleted %d tasks!</string>
<string name="EPr_manage_purge_deleted">Purge Deleted Tasks</string>
<string name="EPr_manage_purge_deleted_message">Do you really want to purge all your deleted tasks?\n
Attention: these tasks will be lost forever, if you did not create a recent backup!</string>
<string name="EPr_manage_purge_deleted_status">Purged %d tasks!</string>
<string name="EPr_manage_purge_deleted_summary">Attention: these purged tasks can\'t be recovered without a backup!</string>
<!-- ==================================================== AddOnActivity == --> <!-- ==================================================== AddOnActivity == -->
<!-- Add Ons Activity Title --> <!-- Add Ons Activity Title -->
@ -496,16 +510,4 @@ Astrid is the much loved open-source todo list / task manager designed to help
you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget and more. you get stuff done. It features reminders, tags, sync, Locale plug-in, a widget and more.
</string> </string>
<!-- ============================================================= Extended Settings == -->
<string name="EPr_extended_header">Extended</string>
<string name="EPr_extended_delete_completed">Delete completed tasks</string>
<string name="EPr_extended_delete_completed_message">Do you really want to delete all your completed tasks?</string>
<string name="EPr_extended_delete_completed_summary">This deleted tasks can be undeleted individually</string>
<string name="EPr_extended_delete_completed_status">Deleted %d tasks!</string>
<string name="EPr_extended_purge_deleted">Purge deleted tasks</string>
<string name="EPr_extended_purge_deleted_message">Do you really want to purge all your deleted tasks?\n
Attention: these tasks will be lost forever, if you did not create a recent backup!</string>
<string name="EPr_extended_purge_deleted_status">Purged %d tasks!</string>
<string name="EPr_extended_purge_deleted_summary">Attention: these purged tasks can\'t be recovered without a backup!</string>
</resources> </resources>

@ -50,15 +50,5 @@
android:key="@string/p_statistics" android:key="@string/p_statistics"
android:title="@string/EPr_statistics_title" android:title="@string/EPr_statistics_title"
android:defaultValue="true" /> android:defaultValue="true" />
<PreferenceCategory
android:title="@string/EPr_extended_header">
<PreferenceScreen
android:title="@string/EPr_extended_delete_completed"
android:key="@string/EPr_extended_delete_completed" android:summary="@string/EPr_extended_delete_completed_summary"/>
<PreferenceScreen
android:title="@string/EPr_extended_purge_deleted"
android:key="@string/EPr_extended_purge_deleted" android:summary="@string/EPr_extended_purge_deleted_summary"/>
</PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/EPr_manage_header">
<PreferenceScreen
android:title="@string/EPr_manage_delete_completed"
android:key="@string/EPr_manage_delete_completed"
android:summary="@string/EPr_manage_delete_completed_summary"/>
<PreferenceScreen
android:title="@string/EPr_manage_purge_deleted"
android:key="@string/EPr_manage_purge_deleted"
android:summary="@string/EPr_manage_purge_deleted_summary"/>
</PreferenceScreen>

@ -32,7 +32,6 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.andlib.utility.TodorooPreferenceActivity; import com.todoroo.andlib.utility.TodorooPreferenceActivity;
@ -41,7 +40,6 @@ import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.MetadataHelper; import com.todoroo.astrid.helper.MetadataHelper;
import com.todoroo.astrid.service.AddOnService; import com.todoroo.astrid.service.AddOnService;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.ui.ContactListAdapter; import com.todoroo.astrid.ui.ContactListAdapter;
@ -64,7 +62,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
// --- instance variables // --- instance variables
@Autowired private TaskService taskService; @Autowired private TaskService taskService;
@Autowired private MetadataService metadataService;
@Autowired private AddOnService addOnService; @Autowired private AddOnService addOnService;
@Autowired @Autowired
@ -105,26 +102,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
} }
}); });
// PreferenceGroup extended = (PreferenceGroup) screen.findPreference(r.getString(R.string.EPr_extended_header));
// extended.setOrder(screen.getPreferenceCount());
// Extended prefs
Preference extpreference_completed = screen.findPreference(r.getString(R.string.EPr_extended_delete_completed));
extpreference_completed.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference p) {
showDeleteCompletedDialog();
return true;
}
});
Preference extpreference_purged = screen.findPreference(r.getString(R.string.EPr_extended_purge_deleted));
extpreference_purged.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference p) {
showPurgeDeletedDialog();
return true;
}
});
addDebugPreferences(); addDebugPreferences();
addPreferenceListeners(); addPreferenceListeners();
@ -141,61 +118,6 @@ public class EditPreferences extends TodorooPreferenceActivity {
About.showAbout(this, version); About.showAbout(this, version);
} }
/** Show the dialog to delete completed tasks */
private void showDeleteCompletedDialog () {
DialogUtilities.okCancelDialog(this,
getResources().getString(R.string.EPr_extended_delete_completed_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Task template = new Task();
template.setValue(Task.DELETION_DATE, DateUtilities.now());
int result = taskService.update(Task.COMPLETION_DATE.gt(0), template);
DialogUtilities.okDialog(EditPreferences.this,
getResources().getString(R.string.EPr_extended_delete_completed_status, result),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
},
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
/** Show the dialog to purge deleted tasks */
private void showPurgeDeletedDialog () {
DialogUtilities.okCancelDialog(this,
getResources().getString(R.string.EPr_extended_purge_deleted_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int result = taskService.deleteWhere(Task.DELETION_DATE.gt(0));
metadataService.cleanup();
DialogUtilities.okDialog(EditPreferences.this,
getResources().getString(R.string.EPr_extended_purge_deleted_status, result),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
},
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
}
private void addPluginPreferences(PreferenceScreen screen) { private void addPluginPreferences(PreferenceScreen screen) {
Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS); Intent queryIntent = new Intent(AstridApiConstants.ACTION_SETTINGS);
PackageManager pm = getPackageManager(); PackageManager pm = getPackageManager();

Loading…
Cancel
Save