Move old task dialogs into activities

pull/253/head
Alex Baker 11 years ago
parent 034b71ec92
commit ddfa3c479d

@ -388,6 +388,26 @@
android:name="com.todoroo.astrid.core.OldTaskPreferences"
android:theme="@android:style/Theme"/>
<activity
android:name=".activities.ClearAllDataActivity"
android:theme="@style/ReminderDialog" />
<activity
android:name=".activities.PurgeDeletedActivity"
android:theme="@style/ReminderDialog" />
<activity
android:name=".activities.DeleteCompletedActivity"
android:theme="@style/ReminderDialog" />
<activity
android:name=".activities.DeleteCompletedEventsActivity"
android:theme="@style/ReminderDialog" />
<activity
android:name=".activities.DeleteAllCalendarEventsActivity"
android:theme="@style/ReminderDialog" />
<!-- backup -->
<activity

@ -5,293 +5,16 @@
*/
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.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.TodorooPreferenceActivity;
import android.preference.PreferenceActivity;
import org.tasks.R;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
/**
* Displays the preference screen for users to manage their old tasks and events
*
* @author Tim Su <tim@todoroo.com>
*
*/
public class OldTaskPreferences extends TodorooPreferenceActivity {
@Inject TaskDeleter taskDeleter;
@Inject TaskService taskService;
@Inject MetadataDao metadataDao;
@Inject Database database;
@Inject GCalHelper gcalHelper;
@Inject Preferences preferences;
ProgressDialog pd;
@Override
public int getPreferenceResource() {
return R.xml.preferences_oldtasks;
}
public class OldTaskPreferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceScreen screen = getPreferenceScreen();
// Extended prefs
Preference preference = screen.findPreference(getString(R.string.EPr_manage_delete_completed));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference p) {
showDeleteCompletedDialog();
return true;
}
});
preference = screen.findPreference(getString(R.string.EPr_manage_purge_deleted));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference p) {
showPurgeDeletedDialog();
return true;
}
});
preference = screen.findPreference(getString(R.string.EPr_manage_delete_completed_gcal));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference p) {
showDeleteCompletedEventsDialog();
return true;
}
});
preference = screen.findPreference(getString(R.string.EPr_manage_delete_all_gcal));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference p) {
showDeleteAllEventsDialog();
return true;
}
});
preference= screen.findPreference(getString(R.string.EPr_manage_clear_all));
preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference p) {
showClearDataDialog();
return true;
}
});
}
private void showClearDataDialog() {
DialogUtilities.okCancelDialog(
this,
getResources().getString(R.string.EPr_manage_clear_all_message),
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
deleteDatabase(database.getName());
preferences.reset();
System.exit(0);
}
},
null);
}
/* (non-Javadoc)
* @see android.app.Activity#onPause()
*/
@Override
protected void onPause() {
DialogUtilities.dismissDialog(this, pd);
super.onPause();
addPreferencesFromResource(R.xml.preferences_oldtasks);
}
/** 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) {
pd = DialogUtilities.runWithProgressDialog(OldTaskPreferences.this, new Runnable() {
@Override
public void run() {
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 {
int length = cursor.getCount();
for(int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(cursor);
gcalHelper.deleteTaskEvent(task);
}
} finally {
cursor.close();
}
Task template = new Task();
template.setDeletionDate(
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) {
pd = DialogUtilities.runWithProgressDialog(OldTaskPreferences.this, new Runnable() {
@Override
public void run() {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where(
Criterion.and(Task.DELETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
try {
int length = cursor.getCount();
for(int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(cursor);
gcalHelper.deleteTaskEvent(task);
}
} finally {
cursor.close();
}
int result = taskDeleter.purgeDeletedTasks();
metadataDao.removeDanglingMetadata();
showResult(R.string.EPr_manage_purge_deleted_status, result);
}
});
}
}, 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) {
pd = DialogUtilities.runWithProgressDialog(OldTaskPreferences.this, 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 {
int length = cursor.getCount();
for(int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(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.setCalendarUri(""); //$NON-NLS-1$
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) {
pd = DialogUtilities.runWithProgressDialog(OldTaskPreferences.this, 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 {
int length = cursor.getCount();
for(int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(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.setCalendarUri(""); //$NON-NLS-1$
taskService.update(
Task.CALENDAR_URI.isNotNull(),
template);
showResult(R.string.EPr_manage_delete_all_gcal_status, deletedEventCount);
}
});
}
}, null);
}
protected void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), null);
}
@Override
public void updatePreferences(Preference preference, Object value) {
// :)
}
}

@ -0,0 +1,44 @@
package org.tasks.activities;
import android.content.DialogInterface;
import android.os.Bundle;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.Database;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
public class ClearAllDataActivity extends InjectingActivity {
@Inject Database database;
@Inject Preferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this,
getResources().getString(R.string.EPr_manage_clear_all_message),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
deleteDatabase(database.getName());
preferences.reset();
System.exit(0);
}
},
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
}

@ -0,0 +1,88 @@
package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import javax.inject.Inject;
public class DeleteAllCalendarEventsActivity extends InjectingActivity {
@Inject TaskService taskService;
@Inject GCalHelper gcalHelper;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_delete_all_gcal_message),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteAllCalendarEventsActivity.this, 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 {
int length = cursor.getCount();
for (int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(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.setCalendarUri(""); //$NON-NLS-1$
taskService.update(
Task.CALENDAR_URI.isNotNull(),
template);
showResult(R.string.EPr_manage_delete_all_gcal_status, deletedEventCount);
}
});
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
@Override
protected void onPause() {
DialogUtilities.dismissDialog(this, pd);
super.onPause();
}
private void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
}

@ -0,0 +1,89 @@
package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import javax.inject.Inject;
public class DeleteCompletedActivity extends InjectingActivity {
@Inject TaskService taskService;
@Inject GCalHelper gcalHelper;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_delete_completed_message),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteCompletedActivity.this, new Runnable() {
@Override
public void run() {
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 {
int length = cursor.getCount();
for (int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(cursor);
gcalHelper.deleteTaskEvent(task);
}
} finally {
cursor.close();
}
Task template = new Task();
template.setDeletionDate(
DateUtilities.now());
int result = taskService.update(
Task.COMPLETION_DATE.gt(0), template);
showResult(
R.string.EPr_manage_delete_completed_status,
result);
}
});
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
@Override
protected void onPause() {
DialogUtilities.dismissDialog(this, pd);
super.onPause();
}
protected void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
}

@ -0,0 +1,90 @@
package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import javax.inject.Inject;
public class DeleteCompletedEventsActivity extends InjectingActivity {
@Inject TaskService taskService;
@Inject GCalHelper gcalHelper;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_delete_completed_gcal_message),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(DeleteCompletedEventsActivity.this, 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 {
int length = cursor.getCount();
for (int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(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.setCalendarUri(""); //$NON-NLS-1$
taskService.update(
Criterion.and(Task.COMPLETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull()),
template);
showResult(R.string.EPr_manage_delete_completed_gcal_status, deletedEventCount);
}
});
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
@Override
protected void onPause() {
DialogUtilities.dismissDialog(this, pd);
super.onPause();
}
private void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
}

@ -0,0 +1,87 @@
package org.tasks.activities;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskService;
import org.tasks.R;
import org.tasks.injection.InjectingActivity;
import javax.inject.Inject;
public class PurgeDeletedActivity extends InjectingActivity {
@Inject TaskService taskService;
@Inject TaskDeleter taskDeleter;
@Inject GCalHelper gcalHelper;
@Inject MetadataDao metadataDao;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DialogUtilities.okCancelDialog(
this,
getResources().getString(
R.string.EPr_manage_purge_deleted_message),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
pd = DialogUtilities.runWithProgressDialog(PurgeDeletedActivity.this, new Runnable() {
@Override
public void run() {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where(
Criterion.and(Task.DELETION_DATE.gt(0), Task.CALENDAR_URI.isNotNull())));
try {
int length = cursor.getCount();
for (int i = 0; i < length; i++) {
cursor.moveToNext();
Task task = new Task(cursor);
gcalHelper.deleteTaskEvent(task);
}
} finally {
cursor.close();
}
int result = taskDeleter.purgeDeletedTasks();
metadataDao.removeDanglingMetadata();
showResult(R.string.EPr_manage_purge_deleted_status, result);
}
});
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
@Override
protected void onPause() {
DialogUtilities.dismissDialog(this, pd);
super.onPause();
}
protected void showResult(int resourceText, int result) {
DialogUtilities.okDialog(this, getString(resourceText, result), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
}
}

@ -24,8 +24,13 @@ import com.todoroo.astrid.tags.DeleteTagActivity;
import com.todoroo.astrid.tags.RenameTagActivity;
import com.todoroo.astrid.widget.WidgetConfigActivity;
import org.tasks.activities.ClearAllDataActivity;
import org.tasks.activities.DeleteAllCalendarEventsActivity;
import org.tasks.activities.DeleteCompletedActivity;
import org.tasks.activities.DeleteCompletedEventsActivity;
import org.tasks.activities.ExportTaskActivity;
import org.tasks.activities.ImportTaskActivity;
import org.tasks.activities.PurgeDeletedActivity;
import org.tasks.preferences.MiscellaneousPreferences;
import org.tasks.reminders.SnoozeActivity;
import org.tasks.voice.VoiceCommandActivity;
@ -62,7 +67,12 @@ import dagger.Provides;
SnoozeActivity.class,
MiscellaneousPreferences.class,
ImportTaskActivity.class,
ExportTaskActivity.class
ExportTaskActivity.class,
ClearAllDataActivity.class,
PurgeDeletedActivity.class,
DeleteCompletedActivity.class,
DeleteCompletedEventsActivity.class,
DeleteAllCalendarEventsActivity.class
})
public class ActivityModule {

@ -1,33 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/EPr_manage_header">
<com.todoroo.astrid.ui.MultilinePreference
android:title="@string/EPr_manage_delete_completed"
android:key="@string/EPr_manage_delete_completed"
android:summary="@string/EPr_manage_delete_completed_summary"/>
android:key="@string/EPr_manage_delete_completed"
android:summary="@string/EPr_manage_delete_completed_summary"
android:title="@string/EPr_manage_delete_completed">
<intent
android:targetClass="org.tasks.activities.DeleteCompletedActivity"
android:targetPackage="org.tasks" />
</com.todoroo.astrid.ui.MultilinePreference>
<com.todoroo.astrid.ui.MultilinePreference
android:title="@string/EPr_manage_purge_deleted"
android:key="@string/EPr_manage_purge_deleted"
android:summary="@string/EPr_manage_purge_deleted_summary"/>
android:key="@string/EPr_manage_purge_deleted"
android:summary="@string/EPr_manage_purge_deleted_summary"
android:title="@string/EPr_manage_purge_deleted">
<intent
android:targetClass="org.tasks.activities.PurgeDeletedActivity"
android:targetPackage="org.tasks" />
</com.todoroo.astrid.ui.MultilinePreference>
<com.todoroo.astrid.ui.MultilinePreference
android:title="@string/EPr_manage_delete_completed_gcal"
android:key="@string/EPr_manage_delete_completed_gcal"/>
android:key="@string/EPr_manage_delete_completed_gcal"
android:title="@string/EPr_manage_delete_completed_gcal">
<intent
android:targetClass="org.tasks.activities.DeleteCompletedEventsActivity"
android:targetPackage="org.tasks" />
</com.todoroo.astrid.ui.MultilinePreference>
<com.todoroo.astrid.ui.MultilinePreference
android:title="@string/EPr_manage_delete_all_gcal"
android:key="@string/EPr_manage_delete_all_gcal"/>
android:key="@string/EPr_manage_delete_all_gcal"
android:title="@string/EPr_manage_delete_all_gcal">
<intent
android:targetClass="org.tasks.activities.DeleteAllCalendarEventsActivity"
android:targetPackage="org.tasks" />
</com.todoroo.astrid.ui.MultilinePreference>
<Preference
android:title="@string/EPr_manage_clear_all"
android:key="@string/EPr_manage_clear_all" />
android:key="@string/EPr_manage_clear_all"
android:title="@string/EPr_manage_clear_all">
<intent
android:targetClass="org.tasks.activities.ClearAllDataActivity"
android:targetPackage="org.tasks" />
</Preference>
</PreferenceScreen>

Loading…
Cancel
Save