pull/437/head
Alex Baker 9 years ago
parent 173e0ac8ad
commit d46ef1b901

@ -187,8 +187,7 @@ abstract public class TranslationTests extends AndroidTestCase {
} }
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
Locale locale = r.getConfiguration().locale; Locale locale = r.getConfiguration().locale;
for(int i = 0; i < strings.length; i++) { for(int i = 0; i < strings.length; i++) {
try { try {
@ -209,7 +208,6 @@ abstract public class TranslationTests extends AndroidTestCase {
locale.toString(), name, e.getMessage())); locale.toString(), name, e.getMessage()));
} }
} }
}
}); });
assertTrue(failures.toString(), errorCount(failures) == 0); assertTrue(failures.toString(), errorCount(failures) == 0);
@ -225,8 +223,7 @@ abstract public class TranslationTests extends AndroidTestCase {
final int[] dateStrings = getDateFormatStrings(); final int[] dateStrings = getDateFormatStrings();
final DateTime date = newDateTime(); final DateTime date = newDateTime();
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
Locale locale = r.getConfiguration().locale; Locale locale = r.getConfiguration().locale;
for (int dateString : dateStrings) { for (int dateString : dateStrings) {
try { try {
@ -244,7 +241,6 @@ abstract public class TranslationTests extends AndroidTestCase {
locale.toString(), name, e.getMessage())); locale.toString(), name, e.getMessage()));
} }
} }
}
}); });
assertEquals(failures.toString(), 0, errorCount(failures)); assertEquals(failures.toString(), 0, errorCount(failures));
@ -271,8 +267,7 @@ abstract public class TranslationTests extends AndroidTestCase {
} }
} }
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
for(int i = 0; i < arrays.length; i++) { for(int i = 0; i < arrays.length; i++) {
if(sizes[i] == -1) if(sizes[i] == -1)
continue; continue;
@ -294,7 +289,6 @@ abstract public class TranslationTests extends AndroidTestCase {
name, locale.toString(), size, sizes[i])); name, locale.toString(), size, sizes[i]));
} }
} }
}
}); });
assertEquals(failures.toString(), 0, errorCount(failures)); assertEquals(failures.toString(), 0, errorCount(failures));
} }

@ -59,8 +59,7 @@ public class DateUtilitiesTest extends AndroidTestCase {
} }
public void testTimeString() { public void testTimeString() {
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
DateTime d = newDateTime(); DateTime d = newDateTime();
DateUtilities.is24HourOverride = false; DateUtilities.is24HourOverride = false;
@ -74,20 +73,17 @@ public class DateUtilitiesTest extends AndroidTestCase {
d = d.withHourOfDay(i); d = d.withHourOfDay(i);
getTimeString(getContext(), d); getTimeString(getContext(), d);
} }
}
}); });
} }
public void testDateString() { public void testDateString() {
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
DateTime d = newDateTime(); DateTime d = newDateTime();
for (int i = 0; i < 12; i++) { for (int i = 0; i < 12; i++) {
d = d.withMonthOfYear(i); d = d.withMonthOfYear(i);
getDateString(d); getDateString(d);
} }
}
}); });
} }

@ -53,12 +53,10 @@ public class AstridTranslationTest extends TranslationTests {
final Resources r = getContext().getResources(); final Resources r = getContext().getResources();
final StringBuilder failures = new StringBuilder(); final StringBuilder failures = new StringBuilder();
forEachLocale(new Runnable() { forEachLocale(() -> {
public void run() {
contains(r, R.string.CFC_tag_text, failures, "?"); contains(r, R.string.CFC_tag_text, failures, "?");
contains(r, R.string.CFC_title_contains_text, failures, "?"); contains(r, R.string.CFC_title_contains_text, failures, "?");
contains(r, R.string.CFC_dueBefore_text, failures, "?"); contains(r, R.string.CFC_dueBefore_text, failures, "?");
}
}); });
assertEquals(failures.toString(), 0, assertEquals(failures.toString(), 0,

@ -22,10 +22,7 @@ public class GtaskListMaker {
return make(instantiator, properties); return make(instantiator, properties);
} }
private static final Instantiator<GtasksList> instantiator = new Instantiator<GtasksList>() { private static final Instantiator<GtasksList> instantiator = lookup -> new GtasksList(new StoreObject() {{
@Override
public GtasksList instantiate(final PropertyLookup<GtasksList> lookup) {
return new GtasksList(new StoreObject() {{
setType(GtasksList.TYPE); setType(GtasksList.TYPE);
setValue(StoreObject.ID, lookup.valueOf(GtaskListMaker.ID, 1L)); setValue(StoreObject.ID, lookup.valueOf(GtaskListMaker.ID, 1L));
setValue(StoreObject.ITEM, lookup.valueOf(REMOTE_ID, "1")); setValue(StoreObject.ITEM, lookup.valueOf(REMOTE_ID, "1"));
@ -34,5 +31,3 @@ public class GtaskListMaker {
setValue(StoreObject.VALUE3, String.valueOf(lookup.valueOf(LAST_SYNC, 0L))); setValue(StoreObject.VALUE3, String.valueOf(lookup.valueOf(LAST_SYNC, 0L)));
}}); }});
} }
};
}

@ -24,9 +24,7 @@ public class TaskMaker {
return make(instantiator, properties); return make(instantiator, properties);
} }
private static final Instantiator<Task> instantiator = new Instantiator<Task>() { private static final Instantiator<Task> instantiator = lookup -> {
@Override
public Task instantiate(PropertyLookup<Task> lookup) {
Task task = new Task(); Task task = new Task();
DateTime dueDate = lookup.valueOf(DUE_DATE, (DateTime) null); DateTime dueDate = lookup.valueOf(DUE_DATE, (DateTime) null);
@ -55,6 +53,5 @@ public class TaskMaker {
} }
return task; return task;
}
}; };
} }

@ -19,13 +19,8 @@ public class RemoteGtaskListMaker {
return make(instantiator, properties); return make(instantiator, properties);
} }
private static final Instantiator<TaskList> instantiator = new Instantiator<TaskList>() { private static final Instantiator<TaskList> instantiator = lookup -> new TaskList()
@Override
public TaskList instantiate(final PropertyLookup<TaskList> lookup) {
return new TaskList()
.setId(lookup.valueOf(REMOTE_ID, "1")) .setId(lookup.valueOf(REMOTE_ID, "1"))
.setTitle(lookup.valueOf(NAME, "Default")) .setTitle(lookup.valueOf(NAME, "Default"))
.setUpdated(new DateTime(currentTimeMillis())); .setUpdated(new DateTime(currentTimeMillis()));
} }
};
}

@ -654,8 +654,7 @@ public class IabHelper {
checkNotDisposed(); checkNotDisposed();
checkSetupDone("queryInventory"); checkSetupDone("queryInventory");
flagStartAsync("refresh inventory"); flagStartAsync("refresh inventory");
executor.execute(new Runnable() { executor.execute(() -> {
public void run() {
IabResult result = new IabResult(BILLING_RESPONSE_RESULT_OK, "Inventory refresh successful."); IabResult result = new IabResult(BILLING_RESPONSE_RESULT_OK, "Inventory refresh successful.");
Inventory inv = null; Inventory inv = null;
try { try {
@ -670,12 +669,7 @@ public class IabHelper {
final IabResult result_f = result; final IabResult result_f = result;
final Inventory inv_f = inv; final Inventory inv_f = inv;
if (!mDisposed && listener != null) { if (!mDisposed && listener != null) {
handler.post(new Runnable() { handler.post(() -> listener.onQueryInventoryFinished(result_f, inv_f));
public void run() {
listener.onQueryInventoryFinished(result_f, inv_f);
}
});
}
} }
}); });
} }
@ -1011,8 +1005,7 @@ public class IabHelper {
final OnConsumeMultiFinishedListener multiListener) { final OnConsumeMultiFinishedListener multiListener) {
final Handler handler = new Handler(); final Handler handler = new Handler();
flagStartAsync("consume"); flagStartAsync("consume");
executor.execute(new Runnable() { executor.execute(() -> {
public void run() {
final List<IabResult> results = new ArrayList<IabResult>(); final List<IabResult> results = new ArrayList<IabResult>();
for (Purchase purchase : purchases) { for (Purchase purchase : purchases) {
try { try {
@ -1026,19 +1019,10 @@ public class IabHelper {
flagEndAsync(); flagEndAsync();
if (!mDisposed && singleListener != null) { if (!mDisposed && singleListener != null) {
handler.post(new Runnable() { handler.post(() -> singleListener.onConsumeFinished(purchases.get(0), results.get(0)));
public void run() {
singleListener.onConsumeFinished(purchases.get(0), results.get(0));
}
});
} }
if (!mDisposed && multiListener != null) { if (!mDisposed && multiListener != null) {
handler.post(new Runnable() { handler.post(() -> multiListener.onConsumeMultiFinished(purchases, results));
public void run() {
multiListener.onConsumeMultiFinished(purchases, results);
}
});
}
} }
}); });
} }

@ -46,12 +46,7 @@ public class GtasksFilterExposer {
for (GtasksList list : gtasksListService.getLists()) { for (GtasksList list : gtasksListService.getLists()) {
listFilters.add(filterFromList(list)); listFilters.add(filterFromList(list));
} }
Collections.sort(listFilters, new Comparator<Filter>() { Collections.sort(listFilters, (filter, t1) -> filter.listingTitle.compareTo(t1.listingTitle));
@Override
public int compare(Filter filter, Filter t1) {
return filter.listingTitle.compareTo(t1.listingTitle);
}
});
return listFilters; return listFilters;
} }

@ -55,9 +55,7 @@ public class GtasksPreferences extends InjectingPreferenceActivity implements Go
final CheckBoxPreference gtaskPreference = (CheckBoxPreference) findPreference(getString(R.string.sync_gtasks)); final CheckBoxPreference gtaskPreference = (CheckBoxPreference) findPreference(getString(R.string.sync_gtasks));
gtaskPreference.setChecked(syncAdapterHelper.isEnabled()); gtaskPreference.setChecked(syncAdapterHelper.isEnabled());
gtaskPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { gtaskPreference.setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ((boolean) newValue) { if ((boolean) newValue) {
if (!playServicesAvailability.refreshAndCheck()) { if (!playServicesAvailability.refreshAndCheck()) {
playServicesAvailability.resolve(GtasksPreferences.this); playServicesAvailability.resolve(GtasksPreferences.this);
@ -71,47 +69,34 @@ public class GtasksPreferences extends InjectingPreferenceActivity implements Go
gtasksPreferenceService.stopOngoing(); gtasksPreferenceService.stopOngoing();
return true; return true;
} }
}
}); });
if (gtasksPreferenceService.getLastSyncDate() > 0) { if (gtasksPreferenceService.getLastSyncDate() > 0) {
gtaskPreference.setSummary(getString(R.string.sync_status_success, gtaskPreference.setSummary(getString(R.string.sync_status_success,
DateUtilities.getDateStringWithTime(GtasksPreferences.this, DateUtilities.getDateStringWithTime(GtasksPreferences.this,
gtasksPreferenceService.getLastSyncDate()))); gtasksPreferenceService.getLastSyncDate())));
} }
findPreference(getString(R.string.gtasks_GPr_interval_key)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(R.string.gtasks_GPr_interval_key)).setOnPreferenceChangeListener((preference, o) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
syncAdapterHelper.setSynchronizationInterval(Integer.parseInt((String) o)); syncAdapterHelper.setSynchronizationInterval(Integer.parseInt((String) o));
return true; return true;
}
}); });
findPreference(getString(R.string.sync_SPr_forget_key)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.sync_SPr_forget_key)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
dialogBuilder.newMessageDialog(R.string.sync_forget_confirm) dialogBuilder.newMessageDialog(R.string.sync_forget_confirm)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
gtasksPreferenceService.clearLastSyncDate(); gtasksPreferenceService.clearLastSyncDate();
gtasksPreferenceService.setUserName(null); gtasksPreferenceService.setUserName(null);
metadataDao.deleteWhere(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY)); metadataDao.deleteWhere(Metadata.KEY.eq(GtasksMetadata.METADATA_KEY));
syncAdapterHelper.enableSynchronization(false); syncAdapterHelper.enableSynchronization(false);
tracker.reportEvent(Tracking.Events.GTASK_LOGOUT); tracker.reportEvent(Tracking.Events.GTASK_LOGOUT);
gtaskPreference.setChecked(false); gtaskPreference.setChecked(false);
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
return true; return true;
}
}); });
getPref(R.string.p_gtasks_default_list).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { getPref(R.string.p_gtasks_default_list).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
new NativeGoogleTaskListPicker() new NativeGoogleTaskListPicker()
.show(getFragmentManager(), FRAG_TAG_GOOGLE_TASK_LIST_SELECTION); .show(getFragmentManager(), FRAG_TAG_GOOGLE_TASK_LIST_SELECTION);
return false; return false;
}
}); });
updateDefaultGoogleTaskList(); updateDefaultGoogleTaskList();
} }

@ -110,9 +110,7 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<GtasksList
GtasksMetadata.LIST_ID.eq(listId), GtasksMetadata.LIST_ID.eq(listId),
GtasksMetadata.PARENT_TASK.eq(parent))) GtasksMetadata.PARENT_TASK.eq(parent)))
.orderBy(Order.asc(Functions.cast(GtasksMetadata.GTASKS_ORDER, "INTEGER"))); .orderBy(Order.asc(Functions.cast(GtasksMetadata.GTASKS_ORDER, "INTEGER")));
metadataDao.query(query, new Callback<Metadata>() { metadataDao.query(query, curr -> {
@Override
public void apply(Metadata curr) {
if (!alreadyChecked.contains(curr.getTask())) { if (!alreadyChecked.contains(curr.getTask())) {
curr.setValue(GtasksMetadata.INDENT, indentLevel); curr.setValue(GtasksMetadata.INDENT, indentLevel);
curr.setValue(GtasksMetadata.ORDER, order.getAndIncrement()); curr.setValue(GtasksMetadata.ORDER, order.getAndIncrement());
@ -122,7 +120,6 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<GtasksList
orderAndIndentHelper(listId, order, curr.getTask(), indentLevel + 1, alreadyChecked); orderAndIndentHelper(listId, order, curr.getTask(), indentLevel + 1, alreadyChecked);
} }
} }
}
); );
} }
@ -130,9 +127,7 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<GtasksList
final AtomicLong previousTask = new AtomicLong(Task.NO_ID); final AtomicLong previousTask = new AtomicLong(Task.NO_ID);
final AtomicInteger previousIndent = new AtomicInteger(-1); final AtomicInteger previousIndent = new AtomicInteger(-1);
iterateThroughList(list, new OrderedListIterator() { iterateThroughList(list, (taskId, metadata) -> {
@Override
public void processTask(long taskId, Metadata metadata) {
int indent = metadata.getValue(GtasksMetadata.INDENT); int indent = metadata.getValue(GtasksMetadata.INDENT);
try { try {
@ -166,7 +161,6 @@ public class GtasksTaskListUpdater extends OrderedMetadataListUpdater<GtasksList
if(!TextUtils.isEmpty(metadata.getValue(GtasksMetadata.ID))) { if(!TextUtils.isEmpty(metadata.getValue(GtasksMetadata.ID))) {
localToRemoteIdMap.put(taskId, metadata.getValue(GtasksMetadata.ID)); localToRemoteIdMap.put(taskId, metadata.getValue(GtasksMetadata.ID));
} }
}
}); });
} }
} }

@ -199,12 +199,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor,
sqlQueryTemplate, dialogBuilder, checkBoxes, tagService, themeCache); sqlQueryTemplate, dialogBuilder, checkBoxes, tagService, themeCache);
taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { taskAdapter.addOnCompletedTaskListener(this::setCompletedForItemAndSubtasks);
@Override
public void onCompletedTask(Task item, boolean newState) {
setCompletedForItemAndSubtasks(item, newState);
}
});
return taskAdapter; return taskAdapter;
} }
@ -253,9 +248,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
final ArrayList<Long> chained = new ArrayList<>(); final ArrayList<Long> chained = new ArrayList<>();
final int parentIndent = item.getValue(updater.indentProperty()); final int parentIndent = item.getValue(updater.indentProperty());
updater.applyToChildren(list, itemId, new OrderedMetadataListUpdater.OrderedListNodeVisitor() { updater.applyToChildren(list, itemId, node -> {
@Override
public void visitNode(OrderedMetadataListUpdater.Node node) {
Task childTask = taskService.fetchById(node.taskId, Task.RECURRENCE); Task childTask = taskService.fetchById(node.taskId, Task.RECURRENCE);
if(!TextUtils.isEmpty(childTask.getRecurrence())) { if(!TextUtils.isEmpty(childTask.getRecurrence())) {
Metadata metadata = updater.getTaskMetadata(node.taskId); Metadata metadata = updater.getTaskMetadata(node.taskId);
@ -269,7 +262,6 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
model.clear(); model.clear();
chained.add(node.taskId); chained.add(node.taskId);
}
}); });
if(chained.size() > 0) { if(chained.size() > 0) {

@ -68,9 +68,7 @@ abstract public class OrderedMetadataListUpdater<LIST> {
final AtomicLong previousTask = new AtomicLong(Task.NO_ID); final AtomicLong previousTask = new AtomicLong(Task.NO_ID);
final AtomicLong globalOrder = new AtomicLong(-1); final AtomicLong globalOrder = new AtomicLong(-1);
iterateThroughList(list, new OrderedListIterator() { iterateThroughList(list, (taskId, metadata) -> {
@Override
public void processTask(long taskId, Metadata metadata) {
if(!metadata.isSaved()) { if(!metadata.isSaved()) {
metadata = createEmptyMetadata(list, taskId); metadata = createEmptyMetadata(list, taskId);
} }
@ -113,8 +111,6 @@ abstract public class OrderedMetadataListUpdater<LIST> {
if(!metadata.isSaved()) { if(!metadata.isSaved()) {
saveAndUpdateModifiedDate(metadata); saveAndUpdateModifiedDate(metadata);
} }
}
}); });
onMovedOrIndented(getTaskMetadata(targetTaskId)); onMovedOrIndented(getTaskMetadata(targetTaskId));
} }
@ -129,9 +125,7 @@ abstract public class OrderedMetadataListUpdater<LIST> {
final AtomicLong lastPotentialParent = new AtomicLong(Task.NO_ID); final AtomicLong lastPotentialParent = new AtomicLong(Task.NO_ID);
final AtomicBoolean computedParent = new AtomicBoolean(false); final AtomicBoolean computedParent = new AtomicBoolean(false);
iterateThroughList(list, new OrderedListIterator() { iterateThroughList(list, (taskId, metadata) -> {
@Override
public void processTask(long taskId, Metadata metadata) {
if (targetTask.get() == taskId) { if (targetTask.get() == taskId) {
computedParent.set(true); computedParent.set(true);
} }
@ -140,7 +134,6 @@ abstract public class OrderedMetadataListUpdater<LIST> {
if (!computedParent.get() && indent == desiredParentIndent.get()) { if (!computedParent.get() && indent == desiredParentIndent.get()) {
lastPotentialParent.set(taskId); lastPotentialParent.set(taskId);
} }
}
}); });
if (lastPotentialParent.get() == Task.NO_ID) { if (lastPotentialParent.get() == Task.NO_ID) {
@ -254,9 +247,7 @@ abstract public class OrderedMetadataListUpdater<LIST> {
final AtomicInteger previoustIndent = new AtomicInteger(-1); final AtomicInteger previoustIndent = new AtomicInteger(-1);
final AtomicReference<Node> currentNode = new AtomicReference<>(root); final AtomicReference<Node> currentNode = new AtomicReference<>(root);
iterateThroughList(list, new OrderedListIterator() { iterateThroughList(list, (taskId, metadata) -> {
@Override
public void processTask(long taskId, Metadata metadata) {
int indent = metadata.getValue(indentProperty()); int indent = metadata.getValue(indentProperty());
int previousIndentValue = previoustIndent.get(); int previousIndentValue = previoustIndent.get();
@ -282,7 +273,6 @@ abstract public class OrderedMetadataListUpdater<LIST> {
} }
previoustIndent.set(indent); previoustIndent.set(indent);
}
}); });
return root; return root;
} }

@ -88,12 +88,7 @@ public class GtasksLoginActivity extends InjectingAppCompatActivity implements A
@Override @Override
public void authenticationFailed(final String message) { public void authenticationFailed(final String message) {
runOnUiThread(new Runnable() { runOnUiThread(() -> Toast.makeText(GtasksLoginActivity.this, message, Toast.LENGTH_LONG).show());
@Override
public void run() {
Toast.makeText(GtasksLoginActivity.this, message, Toast.LENGTH_LONG).show();
}
});
DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd); DialogUtilities.dismissDialog(GtasksLoginActivity.this, pd);
} }
}); });

@ -173,15 +173,12 @@ public class GtasksSyncService {
startAtCriterion)). startAtCriterion)).
orderBy(order); orderBy(order);
metadataDao.query(query, new Callback<Metadata>() { metadataDao.query(query, entry -> {
@Override
public void apply(Metadata entry) {
long taskId = entry.getValue(Metadata.TASK); long taskId = entry.getValue(Metadata.TASK);
Metadata metadata = metadataDao.getFirstActiveByTaskAndKey(taskId, GtasksMetadata.METADATA_KEY); Metadata metadata = metadataDao.getFirstActiveByTaskAndKey(taskId, GtasksMetadata.METADATA_KEY);
if(metadata != null) { if(metadata != null) {
iterator.processTask(taskId, metadata); iterator.processTask(taskId, metadata);
} }
}
}); });
} }
@ -210,9 +207,7 @@ public class GtasksSyncService {
final AtomicInteger indentToMatch = new AtomicInteger(gtasksMetadata.getValue(GtasksMetadata.INDENT)); final AtomicInteger indentToMatch = new AtomicInteger(gtasksMetadata.getValue(GtasksMetadata.INDENT));
final AtomicLong parentToMatch = new AtomicLong(gtasksMetadata.getValue(GtasksMetadata.PARENT_TASK)); final AtomicLong parentToMatch = new AtomicLong(gtasksMetadata.getValue(GtasksMetadata.PARENT_TASK));
final AtomicReference<String> sibling = new AtomicReference<>(); final AtomicReference<String> sibling = new AtomicReference<>();
OrderedMetadataListUpdater.OrderedListIterator iterator = new OrderedMetadataListUpdater.OrderedListIterator() { OrderedMetadataListUpdater.OrderedListIterator iterator = (taskId, metadata) -> {
@Override
public void processTask(long taskId, Metadata metadata) {
Task t = taskDao.fetch(taskId, Task.TITLE, Task.DELETION_DATE); Task t = taskDao.fetch(taskId, Task.TITLE, Task.DELETION_DATE);
if (t == null || t.isDeleted()) { if (t == null || t.isDeleted()) {
return; return;
@ -225,7 +220,6 @@ public class GtasksSyncService {
sibling.set(metadata.getValue(GtasksMetadata.ID)); sibling.set(metadata.getValue(GtasksMetadata.ID));
} }
} }
}
}; };
iterateThroughList(listId, iterator, gtasksMetadata.getValue(GtasksMetadata.ORDER), true); iterateThroughList(listId, iterator, gtasksMetadata.getValue(GtasksMetadata.ORDER), true);

@ -40,16 +40,13 @@ public class SyncV2Service {
public void clearCompleted(final GtasksList list, final SyncResultCallback callback) { public void clearCompleted(final GtasksList list, final SyncResultCallback callback) {
if (syncAdapterHelper.isEnabled()) { if (syncAdapterHelper.isEnabled()) {
syncExecutor.execute(callback, new Runnable() { syncExecutor.execute(callback, () -> {
@Override
public void run() {
callback.started(); callback.started();
try { try {
gtasksSyncService.clearCompleted(list.getRemoteId()); gtasksSyncService.clearCompleted(list.getRemoteId());
} finally { } finally {
callback.finished(); callback.finished();
} }
}
}); });
} }
} }

@ -50,12 +50,7 @@ public class AccountManager {
} }
public List<String> getAccounts() { public List<String> getAccounts() {
return transform(getAccountList(), new Function<Account, String>() { return transform(getAccountList(), account -> account.name);
@Override
public String apply(Account account) {
return account.name;
}
});
} }
public boolean hasAccount(final String name) { public boolean hasAccount(final String name) {
@ -71,9 +66,7 @@ public class AccountManager {
if (account == null) { if (account == null) {
handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName)); handler.authenticationFailed(activity.getString(R.string.gtasks_error_accountNotFound, accountName));
} else { } else {
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
try { try {
GoogleAuthUtil.getToken(activity, account, "oauth2:" + TasksScopes.TASKS, null); GoogleAuthUtil.getToken(activity, account, "oauth2:" + TasksScopes.TASKS, null);
handler.authenticationSuccessful(accountName); handler.authenticationSuccessful(accountName);
@ -84,7 +77,6 @@ public class AccountManager {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
handler.authenticationFailed(context.getString(R.string.gtasks_GLA_errorIOAuth)); handler.authenticationFailed(context.getString(R.string.gtasks_GLA_errorIOAuth));
} }
}
}).start(); }).start();
} }
} }
@ -100,11 +92,6 @@ public class AccountManager {
return null; return null;
} }
return tryFind(getAccountList(), new Predicate<Account>() { return tryFind(getAccountList(), account -> name.equalsIgnoreCase(account.name)).orNull();
@Override
public boolean apply(Account account) {
return name.equalsIgnoreCase(account.name);
}
}).orNull();
} }
} }

@ -25,12 +25,7 @@ public class NativeGoogleTaskListPicker extends InjectingNativeDialogFragment {
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
return createDialog(dialogBuilder, gtasksListService, new GoogleTaskListSelectionHandler() { return createDialog(dialogBuilder, gtasksListService, list -> handler.selectedList(list));
@Override
public void selectedList(GtasksList list) {
handler.selectedList(list);
}
});
} }
@Override @Override

@ -30,12 +30,7 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
return createDialog(dialogBuilder, gtasksListService, new GoogleTaskListSelectionHandler() { return createDialog(dialogBuilder, gtasksListService, list -> handler.selectedList(list));
@Override
public void selectedList(GtasksList list) {
handler.selectedList(list);
}
});
} }
@Override @Override
@ -47,26 +42,13 @@ public class SupportGoogleTaskListPicker extends InjectingDialogFragment {
public static AlertDialog createDialog(DialogBuilder dialogBuilder, GtasksListService gtasksListService, final GoogleTaskListSelectionHandler handler) { public static AlertDialog createDialog(DialogBuilder dialogBuilder, GtasksListService gtasksListService, final GoogleTaskListSelectionHandler handler) {
final List<GtasksList> lists = gtasksListService.getLists(); final List<GtasksList> lists = gtasksListService.getLists();
List<String> listNames = transform(lists, new Function<GtasksList, String>() { List<String> listNames = transform(lists, GtasksList::getName);
@Override
public String apply(GtasksList gtasksList) {
return gtasksList.getName();
}
});
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setItems(listNames, new DialogInterface.OnClickListener() { .setItems(listNames, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.selectedList(lists.get(which)); handler.selectedList(lists.get(which));
dialog.dismiss(); dialog.dismiss();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}) })
.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
.show(); .show();
} }

@ -34,9 +34,7 @@ public class Tracker {
tracker = analytics.newTracker(R.xml.google_analytics); tracker = analytics.newTracker(R.xml.google_analytics);
tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE)); tracker.setAppVersion(Integer.toString(BuildConfig.VERSION_CODE));
final StandardExceptionParser standardExceptionParser = new StandardExceptionParser(context, null); final StandardExceptionParser standardExceptionParser = new StandardExceptionParser(context, null);
exceptionParser = new ExceptionParser() { exceptionParser = (thread, throwable) -> {
@Override
public String getDescription(String thread, Throwable throwable) {
StringBuilder stack = new StringBuilder() StringBuilder stack = new StringBuilder()
.append(standardExceptionParser.getDescription(thread, throwable)) .append(standardExceptionParser.getDescription(thread, throwable))
.append("\n") .append("\n")
@ -47,7 +45,6 @@ public class Tracker {
.append("\n"); .append("\n");
} }
return stack.toString(); return stack.toString();
}
}; };
ExceptionReporter reporter = new ExceptionReporter( ExceptionReporter reporter = new ExceptionReporter(
tracker, tracker,

@ -52,23 +52,18 @@ public class InventoryHelper implements IabBroadcastReceiver.IabBroadcastListene
} }
private IabHelper.OnIabSetupFinishedListener getSetupListener(final IabHelper helper) { private IabHelper.OnIabSetupFinishedListener getSetupListener(final IabHelper helper) {
return new IabHelper.OnIabSetupFinishedListener() { return result -> {
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) { if (result.isSuccess()) {
helper.queryInventoryAsync(getQueryListener(helper)); helper.queryInventoryAsync(getQueryListener(helper));
} else { } else {
Timber.e("setup failed: %s", result.getMessage()); Timber.e("setup failed: %s", result.getMessage());
helper.dispose(); helper.dispose();
} }
}
}; };
} }
private IabHelper.QueryInventoryFinishedListener getQueryListener(final IabHelper helper) { private IabHelper.QueryInventoryFinishedListener getQueryListener(final IabHelper helper) {
return new IabHelper.QueryInventoryFinishedListener() { return (result, inv) -> {
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inv) {
if (result.isSuccess()) { if (result.isSuccess()) {
inventory = inv; inventory = inv;
checkPurchase(R.string.sku_tasker, R.string.p_purchased_tasker); checkPurchase(R.string.sku_tasker, R.string.p_purchased_tasker);
@ -80,7 +75,6 @@ public class InventoryHelper implements IabBroadcastReceiver.IabBroadcastListene
Timber.e("query inventory failed: %s", result.getMessage()); Timber.e("query inventory failed: %s", result.getMessage());
} }
helper.dispose(); helper.dispose();
}
}; };
} }

@ -66,18 +66,8 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener {
if (activity.getString(R.string.sku_tasker).equals(sku) && isAppInstalled(activity, "org.tasks.locale")) { if (activity.getString(R.string.sku_tasker).equals(sku) && isAppInstalled(activity, "org.tasks.locale")) {
dialogBuilder.newMessageDialog(R.string.tasker_message) dialogBuilder.newMessageDialog(R.string.tasker_message)
.setCancelable(false) .setCancelable(false)
.setPositiveButton(R.string.buy, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.buy, (dialog, which) -> launchPurchaseFlow(activity, sku, pref, requestCode, callback))
@Override .setNegativeButton(android.R.string.cancel, (dialog, which) -> callback.purchaseCompleted(false, sku))
public void onClick(DialogInterface dialog, int which) {
launchPurchaseFlow(activity, sku, pref, requestCode, callback);
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
callback.purchaseCompleted(false, sku);
}
})
.show(); .show();
return false; return false;
} else { } else {
@ -107,15 +97,11 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener {
} }
final IabHelper iabHelper = new IabHelper(context, context.getString(R.string.gp_key), executor); final IabHelper iabHelper = new IabHelper(context, context.getString(R.string.gp_key), executor);
iabHelper.enableDebugLogging(true); iabHelper.enableDebugLogging(true);
iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { iabHelper.startSetup(result -> {
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) { if (result.isSuccess()) {
iabHelper.consumeAsync(purchases, new IabHelper.OnConsumeMultiFinishedListener() { iabHelper.consumeAsync(purchases, (purchases1, results) -> {
@Override for (int i = 0; i < purchases1.size() ; i++) {
public void onConsumeMultiFinished(List<Purchase> purchases, List<IabResult> results) { Purchase purchase = purchases1.get(i);
for (int i = 0 ; i < purchases.size() ; i++) {
Purchase purchase = purchases.get(i);
IabResult iabResult = results.get(i); IabResult iabResult = results.get(i);
if (iabResult.isSuccess()) { if (iabResult.isSuccess()) {
if (purchase.equals(tasker)) { if (purchase.equals(tasker)) {
@ -137,13 +123,11 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener {
} }
} }
iabHelper.dispose(); iabHelper.dispose();
}
}); });
} else { } else {
Timber.e("setup failed: %s", result.getMessage()); Timber.e("setup failed: %s", result.getMessage());
iabHelper.dispose(); iabHelper.dispose();
} }
}
}); });
} }
} }
@ -157,32 +141,27 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener {
iabHelper = new IabHelper(context, context.getString(R.string.gp_key), executor); iabHelper = new IabHelper(context, context.getString(R.string.gp_key), executor);
iabHelper.enableDebugLogging(BuildConfig.DEBUG); iabHelper.enableDebugLogging(BuildConfig.DEBUG);
Timber.d("%s: startSetup", iabHelper); Timber.d("%s: startSetup", iabHelper);
iabHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { iabHelper.startSetup(result -> {
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) { if (result.isSuccess()) {
try { try {
Timber.d("%s: launchPurchaseFlow for %s", iabHelper, sku); Timber.d("%s: launchPurchaseFlow for %s", iabHelper, sku);
iabHelper.launchPurchaseFlow(activity, sku, requestCode, new IabHelper.OnIabPurchaseFinishedListener() { iabHelper.launchPurchaseFlow(activity, sku, requestCode, (result1, info) -> {
@Override Timber.d(result1.toString());
public void onIabPurchaseFinished(IabResult result, Purchase info) { tracker.reportIabResult(result1, sku);
Timber.d(result.toString()); if (result1.isSuccess()) {
tracker.reportIabResult(result, sku);
if (result.isSuccess()) {
if (!Strings.isNullOrEmpty(pref)) { if (!Strings.isNullOrEmpty(pref)) {
preferences.setBoolean(pref, true); preferences.setBoolean(pref, true);
broadcaster.refresh(); broadcaster.refresh();
} }
inventory.refreshInventory(); inventory.refreshInventory();
} else if (result.getResponse() != IabHelper.BILLING_RESPONSE_RESULT_USER_CANCELED && } else if (result1.getResponse() != IabHelper.BILLING_RESPONSE_RESULT_USER_CANCELED &&
result.getResponse() != IabHelper.IABHELPER_USER_CANCELLED) { result1.getResponse() != IabHelper.IABHELPER_USER_CANCELLED) {
Toast.makeText(activity, result.getMessage(), Toast.LENGTH_LONG).show(); Toast.makeText(activity, result1.getMessage(), Toast.LENGTH_LONG).show();
} }
if (activityResultCallback != null) { if (activityResultCallback != null) {
activityResultCallback.purchaseCompleted(result.isSuccess(), sku); activityResultCallback.purchaseCompleted(result1.isSuccess(), sku);
} }
disposeIabHelper(); disposeIabHelper();
}
}); });
} catch (IllegalStateException e) { } catch (IllegalStateException e) {
tracker.reportException(e); tracker.reportException(e);
@ -196,7 +175,6 @@ public class PurchaseHelper implements IabHelper.OnIabSetupFinishedListener {
callback.purchaseCompleted(false, sku); callback.purchaseCompleted(false, sku);
disposeIabHelper(); disposeIabHelper();
} }
}
}); });
} }

@ -44,14 +44,11 @@ public class DashClockSettings extends InjectingPreferenceActivity implements Pu
addPreferencesFromResource(R.xml.preferences_dashclock); addPreferencesFromResource(R.xml.preferences_dashclock);
findPreference(getString(R.string.p_dashclock_filter)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.p_dashclock_filter)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(DashClockSettings.this, FilterSelectionActivity.class) {{ startActivityForResult(new Intent(DashClockSettings.this, FilterSelectionActivity.class) {{
putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true); putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
}}, REQUEST_SELECT_FILTER); }}, REQUEST_SELECT_FILTER);
return false; return false;
}
}); });
refreshPreferences(); refreshPreferences();

@ -39,20 +39,14 @@ public class AccountSelectionDialog extends InjectingDialogFragment {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setTitle(R.string.choose_google_account) .setTitle(R.string.choose_google_account)
.setItems(accounts, new DialogInterface.OnClickListener() { .setItems(accounts, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.accountSelected(accounts.get(which)); handler.accountSelected(accounts.get(which));
dialog.dismiss(); dialog.dismiss();
}
}) })
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
if (handler != null) { if (handler != null) {
handler.onCancel(); handler.onCancel();
} }
}
}) })
.show(); .show();
} }

@ -409,9 +409,7 @@ public class GoogleTaskSyncAdapter extends InjectingAbstractThreadedSyncAdapter
newMetadataValues.add(metadatum.getMergedValues()); newMetadataValues.add(metadatum.getMergedValues());
} }
metadataDao.byTaskAndKey(taskId, metadataKey, new Callback<Metadata>() { metadataDao.byTaskAndKey(taskId, metadataKey, item -> {
@Override
public void apply(Metadata item) {
long id = item.getId(); long id = item.getId();
// clear item id when matching with incoming values // clear item id when matching with incoming values
@ -423,7 +421,6 @@ public class GoogleTaskSyncAdapter extends InjectingAbstractThreadedSyncAdapter
// not matched. cut it // not matched. cut it
metadataDao.delete(id); metadataDao.delete(id);
} }
}
}); });
// everything that remains shall be written // everything that remains shall be written

@ -66,28 +66,17 @@ public final class TaskerSettingsActivity extends AbstractFragmentPluginAppCompa
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_close_24dp)); toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_close_24dp));
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(view -> {
@Override
public void onClick(View view) {
if (equalBundles(getResultBundle(), previousBundle)) { if (equalBundles(getResultBundle(), previousBundle)) {
cancel(); cancel();
} else { } else {
dialogBuilder.newMessageDialog(R.string.discard_changes) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> cancel())
@Override .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
public void onClick(DialogInterface dialog, int which) {
cancel();
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}) })
.show(); .show();
} }
}
}); });
toolbar.inflateMenu(R.menu.tasker_menu); toolbar.inflateMenu(R.menu.tasker_menu);
MenuColorizer.colorToolbar(this, toolbar); MenuColorizer.colorToolbar(this, toolbar);

@ -48,18 +48,14 @@ public class GeofenceApi {
return; return;
} }
newClient(new GoogleApi.GoogleApiClientConnectionHandler() { newClient(client -> {
@Override
public void onConnect(final GoogleApiClient client) {
@SuppressWarnings("ResourceType") @SuppressWarnings("ResourceType")
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
PendingResult<Status> result = LocationServices.GeofencingApi.addGeofences( PendingResult<Status> result = LocationServices.GeofencingApi.addGeofences(
client, client,
getRequests(geofences), getRequests(geofences),
PendingIntent.getService(context, 0, new Intent(context, GeofenceTransitionsIntentService.class), PendingIntent.FLAG_UPDATE_CURRENT)); PendingIntent.getService(context, 0, new Intent(context, GeofenceTransitionsIntentService.class), PendingIntent.FLAG_UPDATE_CURRENT));
result.setResultCallback(new ResultCallback<Status>() { result.setResultCallback(status -> {
@Override
public void onResult(Status status) {
if (status.isSuccess()) { if (status.isSuccess()) {
Timber.i("Registered %s", geofences); Timber.i("Registered %s", geofences);
} else { } else {
@ -67,9 +63,7 @@ public class GeofenceApi {
} }
client.disconnect(); client.disconnect();
}
}); });
}
}); });
} }
@ -82,20 +76,10 @@ public class GeofenceApi {
return; return;
} }
final List<String> ids = newArrayList(transform(geofences, new Function<Geofence, String>() { final List<String> ids = newArrayList(transform(geofences, geofence -> Long.toString(geofence.getMetadataId())));
@Override
public String apply(Geofence geofence) {
return Long.toString(geofence.getMetadataId());
}
}));
newClient(new GoogleApi.GoogleApiClientConnectionHandler() { newClient(client -> LocationServices.GeofencingApi.removeGeofences(client, ids)
@Override .setResultCallback(status -> {
public void onConnect(final GoogleApiClient client) {
LocationServices.GeofencingApi.removeGeofences(client, ids)
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) { if (status.isSuccess()) {
Timber.i("Removed %s", geofences); Timber.i("Removed %s", geofences);
} else { } else {
@ -103,10 +87,7 @@ public class GeofenceApi {
} }
client.disconnect(); client.disconnect();
} }));
});
}
});
} }
private void newClient(final GoogleApi.GoogleApiClientConnectionHandler handler) { private void newClient(final GoogleApi.GoogleApiClientConnectionHandler handler) {
@ -114,12 +95,7 @@ public class GeofenceApi {
} }
private List<com.google.android.gms.location.Geofence> getRequests(List<Geofence> geofences) { private List<com.google.android.gms.location.Geofence> getRequests(List<Geofence> geofences) {
return newArrayList(transform(geofences, new Function<Geofence, com.google.android.gms.location.Geofence>() { return newArrayList(transform(geofences, this::toGoogleGeofence));
@Override
public com.google.android.gms.location.Geofence apply(Geofence geofence) {
return toGoogleGeofence(geofence);
}
}));
} }
private com.google.android.gms.location.Geofence toGoogleGeofence(Geofence geofence) { private com.google.android.gms.location.Geofence toGoogleGeofence(Geofence geofence) {

@ -33,12 +33,7 @@ public class GoogleApi implements GoogleApiClient.ConnectionCallbacks {
} }
public void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler) { public void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler) {
connect(googleApiClientConnectionHandler, new GoogleApiClient.OnConnectionFailedListener() { connect(googleApiClientConnectionHandler, connectionResult -> Timber.e("onConnectionFailed(%s)", connectionResult));
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Timber.e("onConnectionFailed(%s)", connectionResult);
}
});
} }
private void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler, GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener) { private void connect(final GoogleApiClientConnectionHandler googleApiClientConnectionHandler, GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener) {

@ -54,12 +54,7 @@ public class DatabaseDao<TYPE extends AbstractModel> {
public List<TYPE> toList(Query query) { public List<TYPE> toList(Query query) {
final List<TYPE> result = new ArrayList<>(); final List<TYPE> result = new ArrayList<>();
query(new Callback<TYPE>() { query(result::add, query);
@Override
public void apply(TYPE entry) {
result.add(entry);
}
}, query);
return result; return result;
} }

@ -47,13 +47,10 @@ public class AndroidUtilities {
public static void suppressVirtualKeyboard(final TextView editor) { public static void suppressVirtualKeyboard(final TextView editor) {
final int inputType = editor.getInputType(); final int inputType = editor.getInputType();
editor.setInputType(InputType.TYPE_NULL); editor.setInputType(InputType.TYPE_NULL);
editor.setOnTouchListener(new OnTouchListener() { editor.setOnTouchListener((v, event) -> {
@Override
public boolean onTouch(View v, MotionEvent event) {
editor.setInputType(inputType); editor.setInputType(inputType);
editor.setOnTouchListener(null); editor.setOnTouchListener(null);
return false; return false;
}
}); });
} }
@ -178,9 +175,7 @@ public class AndroidUtilities {
} }
ContentValues result = new ContentValues(); ContentValues result = new ContentValues();
fromSerialized(string, result, new SerializedPut<ContentValues>() { fromSerialized(string, result, (object, key, type, value) -> {
@Override
public void put(ContentValues object, String key, char type, String value) throws NumberFormatException {
switch(type) { switch(type) {
case 'i': case 'i':
object.put(key, Integer.parseInt(value)); object.put(key, Integer.parseInt(value));
@ -198,7 +193,6 @@ public class AndroidUtilities {
object.put(key, Boolean.parseBoolean(value)); object.put(key, Boolean.parseBoolean(value));
break; break;
} }
}
}); });
return result; return result;
} }
@ -212,9 +206,7 @@ public class AndroidUtilities {
} }
Bundle result = new Bundle(); Bundle result = new Bundle();
fromSerialized(string, result, new SerializedPut<Bundle>() { fromSerialized(string, result, (object, key, type, value) -> {
@Override
public void put(Bundle object, String key, char type, String value) throws NumberFormatException {
switch(type) { switch(type) {
case 'i': case 'i':
object.putInt(key, Integer.parseInt(value)); object.putInt(key, Integer.parseInt(value));
@ -232,7 +224,6 @@ public class AndroidUtilities {
object.putBoolean(key, Boolean.parseBoolean(value)); object.putBoolean(key, Boolean.parseBoolean(value));
break; break;
} }
}
}); });
return result; return result;
} }
@ -328,12 +319,7 @@ public class AndroidUtilities {
* Sort files by date so the newest file is on top * Sort files by date so the newest file is on top
*/ */
public static void sortFilesByDateDesc(File[] files) { public static void sortFilesByDateDesc(File[] files) {
Arrays.sort(files, new Comparator<File>() { Arrays.sort(files, (o1, o2) -> Long.valueOf(o2.lastModified()).compareTo(o1.lastModified()));
@Override
public int compare(File o1, File o2) {
return Long.valueOf(o2.lastModified()).compareTo(o1.lastModified());
}
});
} }
/** /**

@ -21,15 +21,12 @@ public class DialogUtilities {
if(dialog == null) { if(dialog == null) {
return; return;
} }
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(() -> {
@Override
public void run() {
try { try {
dialog.dismiss(); dialog.dismiss();
} catch(Exception e) { } catch(Exception e) {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
} }
}
}); });
} }
} }

@ -61,15 +61,12 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity imp
toolbar.setNavigationIcon(getResources().getDrawable( toolbar.setNavigationIcon(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)); backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
toolbar.setTitle(filter.listingTitle); toolbar.setTitle(filter.listingTitle);
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> {
@Override
public void onClick(View v) {
if (backButtonSavesTask) { if (backButtonSavesTask) {
discard(); discard();
} else { } else {
save(); save();
} }
}
}); });
toolbar.inflateMenu(R.menu.tag_settings_activity); toolbar.inflateMenu(R.menu.tag_settings_activity);
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
@ -120,13 +117,10 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity imp
private void deleteTag() { private void deleteTag() {
dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, filter.listingTitle) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, filter.listingTitle)
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.delete, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
storeObjectDao.delete(filter.getId()); storeObjectDao.delete(filter.getId());
setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_FILTER_DELETED).putExtra(TOKEN_FILTER, filter)); setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_FILTER_DELETED).putExtra(TOKEN_FILTER, filter));
finish(); finish();
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
@ -138,12 +132,7 @@ public class FilterSettingsActivity extends ThemedInjectingAppCompatActivity imp
finish(); finish();
} else { } else {
dialogBuilder.newMessageDialog(R.string.discard_changes) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.discard, (dialog, which) -> finish())
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }

@ -100,15 +100,12 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
toolbar.setTitle(isNewTag ? getString(R.string.new_tag) : tagData.getName()); toolbar.setTitle(isNewTag ? getString(R.string.new_tag) : tagData.getName());
toolbar.setNavigationIcon(getResources().getDrawable( toolbar.setNavigationIcon(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)); backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> {
@Override
public void onClick(View v) {
if (backButtonSavesTask) { if (backButtonSavesTask) {
discard(); discard();
} else { } else {
save(); save();
} }
}
}); });
toolbar.inflateMenu(R.menu.tag_settings_activity); toolbar.inflateMenu(R.menu.tag_settings_activity);
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
@ -237,9 +234,7 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
private void deleteTag() { private void deleteTag() {
dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, tagData.getName()) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, tagData.getName())
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.delete, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
if (tagData != null) { if (tagData != null) {
String uuid = tagData.getUuid(); String uuid = tagData.getUuid();
metadataDao.deleteWhere(Criterion.and(MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid))); metadataDao.deleteWhere(Criterion.and(MetadataDao.MetadataCriteria.withKey(TaskToTagMetadata.KEY), TaskToTagMetadata.TAG_UUID.eq(uuid)));
@ -247,7 +242,6 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED).putExtra(EXTRA_TAG_UUID, uuid)); setResult(RESULT_OK, new Intent(AstridApiConstants.BROADCAST_EVENT_TAG_DELETED).putExtra(EXTRA_TAG_UUID, uuid));
} }
finish(); finish();
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
@ -258,12 +252,7 @@ public class TagSettingsActivity extends ThemedInjectingAppCompatActivity implem
finish(); finish();
} else { } else {
dialogBuilder.newMessageDialog(R.string.discard_changes) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.discard, (dialog, which) -> finish())
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }

@ -65,12 +65,7 @@ public class BeastModePreferences extends ThemedInjectingAppCompatActivity imple
ButterKnife.bind(this); ButterKnife.bind(this);
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp)); toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> finish());
@Override
public void onClick(View v) {
finish();
}
});
toolbar.inflateMenu(R.menu.beast_mode); toolbar.inflateMenu(R.menu.beast_mode);
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
MenuColorizer.colorToolbar(this, toolbar); MenuColorizer.colorToolbar(this, toolbar);
@ -90,19 +85,11 @@ public class BeastModePreferences extends ThemedInjectingAppCompatActivity imple
} }
}; };
touchList.setAdapter(adapter); touchList.setAdapter(adapter);
touchList.setOnTouchListener(new OnTouchListener() { touchList.setOnTouchListener((v, event) -> false);
@Override touchList.setDropListener((from, to) -> {
public boolean onTouch(View v, MotionEvent event) {
return false;
}
});
touchList.setDropListener(new DropListener() {
@Override
public void drop(int from, int to) {
String s = items.remove(from); String s = items.remove(from);
items.add(to, s); items.add(to, s);
adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged();
}
}); });
} }

@ -127,15 +127,12 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
final boolean backButtonSavesTask = preferences.backButtonSavesTask(); final boolean backButtonSavesTask = preferences.backButtonSavesTask();
toolbar.setNavigationIcon(getResources().getDrawable( toolbar.setNavigationIcon(getResources().getDrawable(
backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp)); backButtonSavesTask ? R.drawable.ic_close_24dp : R.drawable.ic_save_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> {
@Override
public void onClick(View v) {
if (backButtonSavesTask) { if (backButtonSavesTask) {
discardButtonClick(); discardButtonClick();
} else { } else {
save(); save();
} }
}
}); });
toolbar.inflateMenu(R.menu.task_edit_fragment); toolbar.inflateMenu(R.menu.task_edit_fragment);
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
@ -274,12 +271,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
if (hasChanges(taskEditControlSetFragmentManager.getFragmentsInPersistOrder(getChildFragmentManager()))) { if (hasChanges(taskEditControlSetFragmentManager.getFragmentsInPersistOrder(getChildFragmentManager()))) {
dialogBuilder.newMessageDialog(R.string.discard_confirmation) dialogBuilder.newMessageDialog(R.string.discard_confirmation)
.setPositiveButton(R.string.keep_editing, null) .setPositiveButton(R.string.keep_editing, null)
.setNegativeButton(R.string.discard, new DialogInterface.OnClickListener() { .setNegativeButton(R.string.discard, (dialog, which) -> discard())
@Override
public void onClick(DialogInterface dialog, int which) {
discard();
}
})
.show(); .show();
} else { } else {
discard(); discard();
@ -297,13 +289,10 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
protected void deleteButtonClick() { protected void deleteButtonClick() {
dialogBuilder.newMessageDialog(R.string.DLG_delete_this_task_question) dialogBuilder.newMessageDialog(R.string.DLG_delete_this_task_question)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model); TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model);
taskDeleter.delete(model); taskDeleter.delete(model);
callback.taskEditFinished(); callback.taskEditFinished();
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();

@ -225,14 +225,9 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
if (syncAdapterHelper.shouldShowBackgroundSyncWarning() && !preferences.getBoolean(R.string.p_sync_warning_shown, false)) { if (syncAdapterHelper.shouldShowBackgroundSyncWarning() && !preferences.getBoolean(R.string.p_sync_warning_shown, false)) {
if (taskListFragment != null) { if (taskListFragment != null) {
taskListFragment.makeSnackbar(R.string.master_sync_warning) taskListFragment.makeSnackbar(R.string.master_sync_warning)
.setAction(R.string.TLA_menu_settings, new View.OnClickListener() { .setAction(R.string.TLA_menu_settings, view -> startActivity(new Intent(Settings.ACTION_SYNC_SETTINGS) {{
@Override
public void onClick(View view) {
startActivity(new Intent(Settings.ACTION_SYNC_SETTINGS) {{
setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}}); }}))
}
})
.setCallback(new Snackbar.Callback() { .setCallback(new Snackbar.Callback() {
@Override @Override
public void onShown(Snackbar snackbar) { public void onShown(Snackbar snackbar) {

@ -175,12 +175,9 @@ public class TaskListFragment extends InjectingListFragment implements
public void setSyncOngoing(final boolean ongoing) { public void setSyncOngoing(final boolean ongoing) {
Activity activity = getActivity(); Activity activity = getActivity();
if (activity != null) { if (activity != null) {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(() -> {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(ongoing); swipeRefreshLayout.setRefreshing(ongoing);
emptyView.setRefreshing(ongoing); emptyView.setRefreshing(ongoing);
}
}); });
} }
} }
@ -252,12 +249,7 @@ public class TaskListFragment extends InjectingListFragment implements
toolbar.setTitle(filter.listingTitle); toolbar.setTitle(filter.listingTitle);
toolbar.setNavigationIcon(R.drawable.ic_menu_24dp); toolbar.setNavigationIcon(R.drawable.ic_menu_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> callbacks.onNavigationIconClicked());
@Override
public void onClick(View v) {
callbacks.onNavigationIconClicked();
}
});
inflateMenu(toolbar); inflateMenu(toolbar);
setupMenu(toolbar.getMenu()); setupMenu(toolbar.getMenu());
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
@ -390,9 +382,7 @@ public class TaskListFragment extends InjectingListFragment implements
registerForContextMenu(listView); registerForContextMenu(listView);
// set listener for quick-changing task priority // set listener for quick-changing task priority
listView.setOnKeyListener(new OnKeyListener() { listView.setOnKeyListener((view, keyCode, event) -> {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_UP || view == null) { if (event.getAction() != KeyEvent.ACTION_UP || view == null) {
return false; return false;
} }
@ -422,7 +412,6 @@ public class TaskListFragment extends InjectingListFragment implements
} }
return false; return false;
}
}); });
filter.setFilterQueryOverride(null); filter.setFilterQueryOverride(null);
@ -440,10 +429,7 @@ public class TaskListFragment extends InjectingListFragment implements
return; return;
} }
listView.setOnItemClickListener(new OnItemClickListener() { listView.setOnItemClickListener((parent, view, position, id) -> {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (taskAdapter != null) { if (taskAdapter != null) {
TodorooCursor<Task> cursor = (TodorooCursor<Task>) taskAdapter.getItem(position); TodorooCursor<Task> cursor = (TodorooCursor<Task>) taskAdapter.getItem(position);
Task task = new Task(cursor); Task task = new Task(cursor);
@ -453,7 +439,6 @@ public class TaskListFragment extends InjectingListFragment implements
onTaskListItemClicked(id); onTaskListItemClicked(id);
} }
}
}); });
} }
@ -541,10 +526,7 @@ public class TaskListFragment extends InjectingListFragment implements
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return new TaskAdapter(context, preferences, taskAttachmentDao, taskService, this, cursor, sqlQueryTemplate, return new TaskAdapter(context, preferences, taskAttachmentDao, taskService, this, cursor, sqlQueryTemplate,
new OnCompletedTaskListener() { (item, newState) -> {
@Override
public void onCompletedTask(Task item, boolean newState) {
}
}, dialogBuilder, checkBoxes, tagService, themeCache); }, dialogBuilder, checkBoxes, tagService, themeCache);
} }
@ -657,13 +639,10 @@ public class TaskListFragment extends InjectingListFragment implements
/** Show a dialog box and delete the task specified */ /** Show a dialog box and delete the task specified */
private void deleteTask(final Task task) { private void deleteTask(final Task task) {
dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, task.getTitle()) dialogBuilder.newMessageDialog(R.string.delete_tag_confirmation, task.getTitle())
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
onTaskDelete(task); onTaskDelete(task);
taskDeleter.delete(task); taskDeleter.delete(task);
loadTaskListContent(); loadTaskListContent();
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
@ -695,15 +674,12 @@ public class TaskListFragment extends InjectingListFragment implements
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
Callback<String> quickAddTask = new Callback<String>() { Callback<String> quickAddTask = title -> {
@Override
public void apply(String title) {
Task task = addTask(title); Task task = addTask(title);
taskCreator.addToCalendar(task); taskCreator.addToCalendar(task);
onTaskListItemClicked(task.getId()); onTaskListItemClicked(task.getId());
loadTaskListContent(); loadTaskListContent();
onTaskCreated(task.getId(), task.getUUID()); onTaskCreated(task.getId(), task.getUUID());
}
}; };
voiceInputAssistant.handleActivityResult(data, quickAddTask); voiceInputAssistant.handleActivityResult(data, quickAddTask);
} }

@ -95,21 +95,11 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
@Override @Override
public void notifyDataSetChanged() { public void notifyDataSetChanged() {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(FilterAdapter.super::notifyDataSetChanged);
@Override
public void run() {
FilterAdapter.super.notifyDataSetChanged();
}
});
} }
public void refreshFilterCount() { public void refreshFilterCount() {
filterCounter.refreshFilterCounts(new Runnable() { filterCounter.refreshFilterCounts(this::notifyDataSetChanged);
@Override
public void run() {
notifyDataSetChanged();
}
});
} }
/** /**
@ -286,12 +276,7 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
notifyDataSetChanged(); notifyDataSetChanged();
filterCounter.refreshFilterCounts(new Runnable() { filterCounter.refreshFilterCounts(this::notifyDataSetChanged);
@Override
public void run() {
notifyDataSetChanged();
}
});
} }
/** /**

@ -369,20 +369,15 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
final ViewHolder viewHolder = (ViewHolder)container.getTag(); final ViewHolder viewHolder = (ViewHolder)container.getTag();
// check box listener // check box listener
OnTouchListener otl = new OnTouchListener() { OnTouchListener otl = (v, event) -> {
@Override
public boolean onTouch(View v, MotionEvent event) {
lastTouchYRawY = new Pair<>(event.getY(), event.getRawY()); lastTouchYRawY = new Pair<>(event.getY(), event.getRawY());
return false; return false;
}
}; };
viewHolder.completeBox.setOnTouchListener(otl); viewHolder.completeBox.setOnTouchListener(otl);
viewHolder.completeBox.setOnClickListener(completeBoxListener); viewHolder.completeBox.setOnClickListener(completeBoxListener);
if (viewHolder.taskActionContainer != null) { if (viewHolder.taskActionContainer != null) {
viewHolder.taskActionContainer.setOnClickListener(new OnClickListener() { viewHolder.taskActionContainer.setOnClickListener(v -> {
@Override
public void onClick(View v) {
TaskAction action = (TaskAction) viewHolder.taskActionIcon.getTag(); TaskAction action = (TaskAction) viewHolder.taskActionIcon.getTag();
if (action instanceof NotesAction) { if (action instanceof NotesAction) {
showEditNotesDialog(viewHolder.task); showEditNotesDialog(viewHolder.task);
@ -396,7 +391,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
} }
} }
}
}); });
} }
} }
@ -443,9 +437,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
} }
} }
protected final View.OnClickListener completeBoxListener = new View.OnClickListener() { protected final View.OnClickListener completeBoxListener = v -> {
@Override
public void onClick(View v) {
int[] location = new int[2]; int[] location = new int[2];
v.getLocationOnScreen(location); v.getLocationOnScreen(location);
ViewHolder viewHolder = getTagFromCheckBox(v); ViewHolder viewHolder = getTagFromCheckBox(v);
@ -461,7 +453,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
// set check box to actual action item state // set check box to actual action item state
setTaskAppearance(viewHolder, task); setTaskAppearance(viewHolder, task);
}
}; };
private ViewHolder getTagFromCheckBox(View v) { private ViewHolder getTagFromCheckBox(View v) {
@ -512,12 +503,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
checkBoxView.invalidate(); checkBoxView.invalidate();
} }
private final Function<String, TagData> uuidToTag = new Function<String, TagData>() { private final Function<String, TagData> uuidToTag = tagMap::get;
@Override
public TagData apply(String input) {
return tagMap.get(input);
}
};
private final Ordering<TagData> orderByName = new Ordering<TagData>() { private final Ordering<TagData> orderByName = new Ordering<TagData>() {
@Override @Override
@ -542,9 +528,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
}; };
private Function<TagData, SpannableString> tagToString(final float maxLength) { private Function<TagData, SpannableString> tagToString(final float maxLength) {
return new Function<TagData, SpannableString>() { return tagData -> {
@Override
public SpannableString apply(TagData tagData) {
String tagName = tagData.getName(); String tagName = tagData.getName();
tagName = tagName.substring(0, Math.min(tagName.length(), (int) maxLength)); tagName = tagName.substring(0, Math.min(tagName.length(), (int) maxLength));
SpannableString string = new SpannableString(SPACE + tagName + SPACE); SpannableString string = new SpannableString(SPACE + tagName + SPACE);
@ -553,7 +537,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
string.setSpan(new BackgroundColorSpan(color.getPrimaryColor()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); string.setSpan(new BackgroundColorSpan(color.getPrimaryColor()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
string.setSpan(new ForegroundColorSpan(color.getActionBarTint()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); string.setSpan(new ForegroundColorSpan(color.getActionBarTint()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return string; return string;
}
}; };
} }
@ -648,12 +631,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
this.onCompletedTaskListener = newListener; this.onCompletedTaskListener = newListener;
} else { } else {
final OnCompletedTaskListener old = this.onCompletedTaskListener; final OnCompletedTaskListener old = this.onCompletedTaskListener;
this.onCompletedTaskListener = new OnCompletedTaskListener() { this.onCompletedTaskListener = (item, newState) -> {
@Override
public void onCompletedTask(Task item, boolean newState) {
old.onCompletedTask(item, newState); old.onCompletedTask(item, newState);
newListener.onCompletedTask(item, newState); newListener.onCompletedTask(item, newState);
}
}; };
} }
} }

@ -79,13 +79,10 @@ public class AlarmService {
metadata.add(item); metadata.add(item);
} }
boolean changed = synchronizeMetadata(taskId, metadata, new SynchronizeMetadataCallback() { boolean changed = synchronizeMetadata(taskId, metadata, m -> {
@Override
public void beforeDeleteMetadata(Metadata m) {
// Cancel the alarm before the metadata is deleted // Cancel the alarm before the metadata is deleted
PendingIntent pendingIntent = pendingIntentForAlarm(m, taskId); PendingIntent pendingIntent = pendingIntentForAlarm(m, taskId);
alarmManager.cancel(pendingIntent); alarmManager.cancel(pendingIntent);
}
}); });
if(changed) { if(changed) {
@ -113,24 +110,14 @@ public class AlarmService {
* Schedules all alarms * Schedules all alarms
*/ */
public void scheduleAllAlarms() { public void scheduleAllAlarms() {
getActiveAlarms(new Callback<Metadata>() { getActiveAlarms(this::scheduleAlarm);
@Override
public void apply(Metadata alarm) {
scheduleAlarm(alarm);
}
});
} }
/** /**
* Schedules alarms for a single task * Schedules alarms for a single task
*/ */
private void scheduleAlarms(long taskId) { private void scheduleAlarms(long taskId) {
getActiveAlarmsForTask(taskId, new Callback<Metadata>() { getActiveAlarmsForTask(taskId, this::scheduleAlarm);
@Override
public void apply(Metadata alarm) {
scheduleAlarm(alarm);
}
});
} }
private PendingIntent pendingIntentForAlarm(Metadata alarm, long taskId) { private PendingIntent pendingIntentForAlarm(Metadata alarm, long taskId) {
@ -181,9 +168,7 @@ public class AlarmService {
newMetadataValues.add(values); newMetadataValues.add(values);
} }
metadataDao.byTaskAndKey(taskId, AlarmFields.METADATA_KEY, new Callback<Metadata>() { metadataDao.byTaskAndKey(taskId, AlarmFields.METADATA_KEY, item -> {
@Override
public void apply(Metadata item) {
long id = item.getId(); long id = item.getId();
// clear item id when matching with incoming values // clear item id when matching with incoming values
@ -202,7 +187,6 @@ public class AlarmService {
metadataDao.delete(id); metadataDao.delete(id);
dirty[0] = true; dirty[0] = true;
} }
}
}); });
// everything that remains shall be written // everything that remains shall be written

@ -43,12 +43,7 @@ public class AlarmTaskRepeatListener extends InjectingBroadcastReceiver {
} }
final Set<Long> alarms = new LinkedHashSet<>(); final Set<Long> alarms = new LinkedHashSet<>();
alarmService.getAlarms(taskId, new Callback<Metadata>() { alarmService.getAlarms(taskId, metadata -> alarms.add(metadata.getValue(AlarmFields.TIME) + (newDueDate - oldDueDate)));
@Override
public void apply(Metadata metadata) {
alarms.add(metadata.getValue(AlarmFields.TIME) + (newDueDate - oldDueDate));
}
});
if (!alarms.isEmpty()) { if (!alarms.isEmpty()) {
alarmService.synchronizeAlarms(taskId, alarms); alarmService.synchronizeAlarms(taskId, alarms);
} }

@ -79,12 +79,9 @@ public class TasksXmlExporter {
} }
private void setProgress(final int taskNumber, final int total) { private void setProgress(final int taskNumber, final int total) {
post(new Runnable() { post(() -> {
@Override
public void run() {
progressDialog.setMax(total); progressDialog.setMax(total);
progressDialog.setProgress(taskNumber); progressDialog.setProgress(taskNumber);
}
}); });
} }
@ -109,9 +106,7 @@ public class TasksXmlExporter {
this.progressDialog = new ProgressDialog(context); this.progressDialog = new ProgressDialog(context);
} }
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
try { try {
String output = setupFile(backupDirectory, String output = setupFile(backupDirectory,
exportType); exportType);
@ -129,16 +124,12 @@ public class TasksXmlExporter {
} catch (IOException e) { } catch (IOException e) {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
} finally { } finally {
post(new Runnable() { post(() -> {
@Override
public void run() {
if(progressDialog.isShowing() && context instanceof Activity) { if(progressDialog.isShowing() && context instanceof Activity) {
DialogUtilities.dismissDialog((Activity) context, progressDialog); DialogUtilities.dismissDialog((Activity) context, progressDialog);
} }
}
}); });
} }
}
}).start(); }).start();
} }
@ -169,9 +160,7 @@ public class TasksXmlExporter {
} }
private void serializeTagDatas() { private void serializeTagDatas() {
tagDataDao.allTags(new Callback<TagData>() { tagDataDao.allTags(tag -> {
@Override
public void apply(TagData tag) {
try { try {
xml.startTag(null, BackupConstants.TAGDATA_TAG); xml.startTag(null, BackupConstants.TAGDATA_TAG);
serializeModel(tag, TagData.PROPERTIES, TagData.ID); serializeModel(tag, TagData.PROPERTIES, TagData.ID);
@ -179,7 +168,6 @@ public class TasksXmlExporter {
} catch(IOException e) { } catch(IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
}
}); });
} }
@ -207,9 +195,7 @@ public class TasksXmlExporter {
} }
private synchronized void serializeMetadata(Task task) { private synchronized void serializeMetadata(Task task) {
metadataDao.byTask(task.getId(), new Callback<Metadata>() { metadataDao.byTask(task.getId(), metadata -> {
@Override
public void apply(Metadata metadata) {
try { try {
xml.startTag(null, BackupConstants.METADATA_TAG); xml.startTag(null, BackupConstants.METADATA_TAG);
serializeModel(metadata, Metadata.PROPERTIES, Metadata.ID, Metadata.TASK); serializeModel(metadata, Metadata.PROPERTIES, Metadata.ID, Metadata.TASK);
@ -217,7 +203,6 @@ public class TasksXmlExporter {
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
}
}); });
} }
@ -308,9 +293,7 @@ public class TasksXmlExporter {
} }
private void onFinishExport(final String outputFile) { private void onFinishExport(final String outputFile) {
post(new Runnable() { post(() -> {
@Override
public void run() {
if(exportCount == 0) { if(exportCount == 0) {
Toast.makeText(context, context.getString(R.string.export_toast_no_tasks), Toast.LENGTH_LONG).show(); Toast.makeText(context, context.getString(R.string.export_toast_no_tasks), Toast.LENGTH_LONG).show();
} else { } else {
@ -319,7 +302,6 @@ public class TasksXmlExporter {
exportCount), outputFile); exportCount), outputFile);
Toast.makeText(context, text, Toast.LENGTH_LONG).show(); Toast.makeText(context, text, Toast.LENGTH_LONG).show();
} }
}
}); });
} }

@ -59,12 +59,7 @@ public class TasksXmlImporter {
private String input; private String input;
private void setProgressMessage(final String message) { private void setProgressMessage(final String message) {
handler.post(new Runnable() { handler.post(() -> progressDialog.setMessage(message));
@Override
public void run() {
progressDialog.setMessage(message);
}
});
} }
@Inject @Inject
@ -83,15 +78,12 @@ public class TasksXmlImporter {
handler = new Handler(); handler = new Handler();
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
try { try {
performImport(); performImport();
} catch (IOException | XmlPullParserException e) { } catch (IOException | XmlPullParserException e) {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
} }
}
}).start(); }).start();
} }
@ -126,14 +118,11 @@ public class TasksXmlImporter {
} finally { } finally {
Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH); Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
activity.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ); activity.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
handler.post(new Runnable() { handler.post(() -> {
@Override
public void run() {
if(progressDialog.isShowing()) { if(progressDialog.isShowing()) {
DialogUtilities.dismissDialog(activity, progressDialog); DialogUtilities.dismissDialog(activity, progressDialog);
showSummary(); showSummary();
} }
}
}); });
} }
} }
@ -148,12 +137,7 @@ public class TasksXmlImporter {
r.getQuantityString(R.plurals.Ntasks, importCount, importCount), r.getQuantityString(R.plurals.Ntasks, importCount, importCount),
r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount), r.getQuantityString(R.plurals.Ntasks, skipCount, skipCount),
r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount))) r.getQuantityString(R.plurals.Ntasks, errorCount, errorCount)))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, id) -> dialog.dismiss())
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
})
.show(); .show();
} }

@ -151,12 +151,7 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity imple
toolbar.setTitle(R.string.FLA_new_filter); toolbar.setTitle(R.string.FLA_new_filter);
toolbar.inflateMenu(R.menu.menu_custom_filter_activity); toolbar.inflateMenu(R.menu.menu_custom_filter_activity);
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(view -> discard());
@Override
public void onClick(View view) {
discard();
}
});
MenuColorizer.colorToolbar(this, toolbar); MenuColorizer.colorToolbar(this, toolbar);
listView = (ListView) findViewById(android.R.id.list); listView = (ListView) findViewById(android.R.id.list);
@ -186,17 +181,9 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity imple
} }
private void setUpListeners() { private void setUpListeners() {
findViewById(R.id.add).setOnClickListener(new View.OnClickListener() { findViewById(R.id.add).setOnClickListener(v -> listView.showContextMenu());
@Override
public void onClick(View v) {
listView.showContextMenu();
}
});
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { listView.setOnCreateContextMenuListener((menu, v, menuInfo) -> {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
if(menu.hasVisibleItems()) { if(menu.hasVisibleItems()) {
/* If it has items already, then the user did not click on the "Add Criteria" button, but instead /* If it has items already, then the user did not click on the "Add Criteria" button, but instead
long held on a row in the list view, which caused CustomFilterAdapter.onCreateContextMenu long held on a row in the list view, which caused CustomFilterAdapter.onCreateContextMenu
@ -210,7 +197,6 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity imple
menu.add(CustomFilterActivity.MENU_GROUP_FILTER, i, 0, item.name); menu.add(CustomFilterActivity.MENU_GROUP_FILTER, i, 0, item.name);
i++; i++;
} }
}
}); });
} }
@ -367,12 +353,7 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity imple
finish(); finish();
} else { } else {
dialogBuilder.newMessageDialog(R.string.discard_changes) dialogBuilder.newMessageDialog(R.string.discard_changes)
.setPositiveButton(R.string.discard, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.discard, (dialog, which) -> finish())
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
@ -385,12 +366,9 @@ public class CustomFilterActivity extends ThemedInjectingAppCompatActivity imple
CustomFilterCriterion criterion = filterCriteriaProvider.getAll().get(item.getItemId()); CustomFilterCriterion criterion = filterCriteriaProvider.getAll().get(item.getItemId());
final CriterionInstance instance = new CriterionInstance(); final CriterionInstance instance = new CriterionInstance();
instance.criterion = criterion; instance.criterion = criterion;
adapter.showOptionsFor(instance, new Runnable() { adapter.showOptionsFor(instance, () -> {
@Override
public void run() {
adapter.add(instance); adapter.add(instance);
updateList(); updateList();
}
}); });
return true; return true;
} }

@ -60,12 +60,9 @@ public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> {
return; return;
} }
showOptionsFor(viewHolder.item, new Runnable() { showOptionsFor(viewHolder.item, () -> {
@Override
public void run() {
activity.updateList(); activity.updateList();
notifyDataSetInvalidated(); notifyDataSetInvalidated();
}
}); });
} }
}; };
@ -110,14 +107,11 @@ public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> {
if(item.criterion instanceof MultipleSelectCriterion) { if(item.criterion instanceof MultipleSelectCriterion) {
MultipleSelectCriterion multiSelectCriterion = (MultipleSelectCriterion) item.criterion; MultipleSelectCriterion multiSelectCriterion = (MultipleSelectCriterion) item.criterion;
final String[] titles = multiSelectCriterion.entryTitles; final String[] titles = multiSelectCriterion.entryTitles;
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { DialogInterface.OnClickListener listener = (click, which) -> {
@Override
public void onClick(DialogInterface click, int which) {
item.selectedIndex = which; item.selectedIndex = which;
if(onComplete != null) { if(onComplete != null) {
onComplete.run(); onComplete.run();
} }
}
}; };
dialog.setItems(titles, listener); dialog.setItems(titles, listener);
} else if(item.criterion instanceof TextInputCriterion) { } else if(item.criterion instanceof TextInputCriterion) {
@ -131,14 +125,11 @@ public class CustomFilterAdapter extends ArrayAdapter<CriterionInstance> {
FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT)); FrameLayout.LayoutParams.WRAP_CONTENT));
dialog.setView(frameLayout). dialog.setView(frameLayout).
setPositiveButton(android.R.string.ok, new OnClickListener() { setPositiveButton(android.R.string.ok, (dialogInterface, which) -> {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
item.selectedText = editText.getText().toString(); item.selectedText = editText.getText().toString();
if(onComplete != null) { if(onComplete != null) {
onComplete.run(); onComplete.run();
} }
}
}); });
} }

@ -36,12 +36,7 @@ public final class CustomFilterExposer {
} }
public List<Filter> getFilters() { public List<Filter> getFilters() {
return newArrayList(transform(storeObjectDao.getSavedFilters(), new Function<StoreObject, Filter>() { return newArrayList(transform(storeObjectDao.getSavedFilters(), this::load));
@Override
public Filter apply(StoreObject input) {
return load(input);
}
}));
} }
public Filter getFilter(long id) { public Filter getFilter(long id) {

@ -46,14 +46,11 @@ public class DefaultsPreferences extends InjectingPreferenceActivity {
addPreferencesFromResource(R.xml.preferences_defaults); addPreferencesFromResource(R.xml.preferences_defaults);
defaultCalendarPref = findPreference(getString(R.string.gcal_p_default)); defaultCalendarPref = findPreference(getString(R.string.gcal_p_default));
defaultCalendarPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { defaultCalendarPref.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
if (permissionRequester.requestCalendarPermissions()) { if (permissionRequester.requestCalendarPermissions()) {
startCalendarSelectionActivity(); startCalendarSelectionActivity();
} }
return false; return false;
}
}); });
setCalendarSummary(preferences.getStringValue(R.string.gcal_p_default)); setCalendarSummary(preferences.getStringValue(R.string.gcal_p_default));
} }

@ -5,9 +5,7 @@
*/ */
package com.todoroo.astrid.core; package com.todoroo.astrid.core;
import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
@ -45,61 +43,40 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
addPreferencesFromResource(R.xml.preferences_oldtasks); addPreferencesFromResource(R.xml.preferences_oldtasks);
findPreference(getString(R.string.EPr_manage_purge_deleted)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_manage_purge_deleted)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
purgeDeletedTasks(); purgeDeletedTasks();
return false; return false;
}
}); });
findPreference(getString(R.string.EPr_manage_delete_completed)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_manage_delete_completed)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
deleteCompletedTasks(); deleteCompletedTasks();
return false; return false;
}
}); });
findPreference(getString(R.string.EPr_manage_delete_completed_gcal)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_manage_delete_completed_gcal)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
deleteCompletedEvents(); deleteCompletedEvents();
return false; return false;
}
}); });
findPreference(getString(R.string.EPr_manage_delete_all_gcal)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_manage_delete_all_gcal)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
deleteAllCalendarEvents(); deleteAllCalendarEvents();
return false; return false;
}
}); });
findPreference(getString(R.string.EPr_reset_preferences)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_reset_preferences)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
resetPreferences(); resetPreferences();
return false; return false;
}
}); });
findPreference(getString(R.string.EPr_delete_task_data)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.EPr_delete_task_data)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
deleteTaskData(); deleteTaskData();
return false; return false;
}
}); });
} }
private void deleteCompletedTasks() { private void deleteCompletedTasks() {
dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_message) dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override
public void onClick(DialogInterface dialog, int which) {
new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override @Override
protected Integer doInBackground(Void... params) { protected Integer doInBackground(Void... params) {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.CALENDAR_URI).where(
@ -123,19 +100,14 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
protected int getResultResource() { protected int getResultResource() {
return R.string.EPr_manage_delete_completed_status; return R.string.EPr_manage_delete_completed_status;
} }
}.execute(); }.execute())
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
private void purgeDeletedTasks() { private void purgeDeletedTasks() {
dialogBuilder.newMessageDialog(R.string.EPr_manage_purge_deleted_message) dialogBuilder.newMessageDialog(R.string.EPr_manage_purge_deleted_message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override
public void onClick(DialogInterface dialog, int which) {
new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override @Override
protected Integer doInBackground(Void... params) { protected Integer doInBackground(Void... params) {
TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where( TodorooCursor<Task> cursor = taskService.query(Query.select(Task.ID, Task.TITLE, Task.CALENDAR_URI).where(
@ -159,19 +131,14 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
protected int getResultResource() { protected int getResultResource() {
return R.string.EPr_manage_purge_deleted_status; return R.string.EPr_manage_purge_deleted_status;
} }
}.execute(); }.execute())
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
private void deleteCompletedEvents() { private void deleteCompletedEvents() {
dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_gcal_message) dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_completed_gcal_message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override
public void onClick(DialogInterface dialog, int which) {
new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override @Override
protected Integer doInBackground(Void... params) { protected Integer doInBackground(Void... params) {
@ -204,19 +171,14 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
protected int getResultResource() { protected int getResultResource() {
return R.string.EPr_manage_delete_completed_gcal_status; return R.string.EPr_manage_delete_completed_gcal_status;
} }
}.execute(); }.execute())
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
private void deleteAllCalendarEvents() { private void deleteAllCalendarEvents() {
dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_all_gcal_message) dialogBuilder.newMessageDialog(R.string.EPr_manage_delete_all_gcal_message)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog, which) -> new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override
public void onClick(DialogInterface dialog, int which) {
new ProgressDialogAsyncTask(OldTaskPreferences.this, dialogBuilder) {
@Override @Override
protected Integer doInBackground(Void... params) { protected Integer doInBackground(Void... params) {
int deletedEventCount = 0; int deletedEventCount = 0;
@ -246,21 +208,16 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
protected int getResultResource() { protected int getResultResource() {
return R.string.EPr_manage_delete_all_gcal_status; return R.string.EPr_manage_delete_all_gcal_status;
} }
}.execute(); }.execute())
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
private void resetPreferences() { private void resetPreferences() {
dialogBuilder.newMessageDialog(R.string.EPr_reset_preferences_warning) dialogBuilder.newMessageDialog(R.string.EPr_reset_preferences_warning)
.setPositiveButton(R.string.EPr_reset_preferences, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.EPr_reset_preferences, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
preferences.reset(); preferences.reset();
System.exit(0); System.exit(0);
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
@ -268,12 +225,9 @@ public class OldTaskPreferences extends InjectingPreferenceActivity {
private void deleteTaskData() { private void deleteTaskData() {
dialogBuilder.newMessageDialog(R.string.EPr_delete_task_data_warning) dialogBuilder.newMessageDialog(R.string.EPr_delete_task_data_warning)
.setPositiveButton(R.string.EPr_delete_task_data, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.EPr_delete_task_data, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
deleteDatabase(database.getName()); deleteDatabase(database.getName());
System.exit(0); System.exit(0);
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();

@ -55,12 +55,7 @@ public class StoreObjectDao {
} }
public List<GtasksList> getGtasksLists() { public List<GtasksList> getGtasksLists() {
return newArrayList(transform(getByType(GtasksList.TYPE), new Function<StoreObject, GtasksList>() { return newArrayList(transform(getByType(GtasksList.TYPE), GtasksList::new));
@Override
public GtasksList apply(StoreObject input) {
return new GtasksList(input);
}
}));
} }
public boolean persist(StoreObject storeObject) { public boolean persist(StoreObject storeObject) {

@ -78,12 +78,9 @@ public class FilesControlSet extends TaskEditControlFragment {
} }
final List<TaskAttachment> files = new ArrayList<>(); final List<TaskAttachment> files = new ArrayList<>();
taskAttachmentDao.getAttachments(taskUuid, new Callback<TaskAttachment>() { taskAttachmentDao.getAttachments(taskUuid, attachment -> {
@Override
public void apply(TaskAttachment attachment) {
files.add(attachment); files.add(attachment);
addAttachment(attachment); addAttachment(attachment);
}
}); });
validateFiles(files); validateFiles(files);
return view; return view;
@ -151,32 +148,19 @@ public class FilesControlSet extends TaskEditControlFragment {
TextView nameView = (TextView) fileRow.findViewById(R.id.file_text); TextView nameView = (TextView) fileRow.findViewById(R.id.file_text);
String name = LEFT_TO_RIGHT_MARK + taskAttachment.getName(); String name = LEFT_TO_RIGHT_MARK + taskAttachment.getName();
nameView.setText(name); nameView.setText(name);
nameView.setOnClickListener(new OnClickListener() { nameView.setOnClickListener(v -> showFile(taskAttachment));
@Override
public void onClick(View v) {
showFile(taskAttachment);
}
});
View clearFile = fileRow.findViewById(R.id.clear); View clearFile = fileRow.findViewById(R.id.clear);
clearFile.setOnClickListener(new OnClickListener() { clearFile.setOnClickListener(v -> dialogBuilder.newMessageDialog(R.string.premium_remove_file_confirm)
@Override .setPositiveButton(android.R.string.ok, (dialog, which) -> {
public void onClick(View v) {
dialogBuilder.newMessageDialog(R.string.premium_remove_file_confirm)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
taskAttachmentDao.delete(taskAttachment.getId()); taskAttachmentDao.delete(taskAttachment.getId());
if (taskAttachment.containsNonNullValue(TaskAttachment.FILE_PATH)) { if (taskAttachment.containsNonNullValue(TaskAttachment.FILE_PATH)) {
File f = new File(taskAttachment.getFilePath()); File f = new File(taskAttachment.getFilePath());
f.delete(); f.delete();
} }
attachmentContainer.removeView(fileRow); attachmentContainer.removeView(fileRow);
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show());
}
});
} }
private void validateFiles(List<TaskAttachment> files) { private void validateFiles(List<TaskAttachment> files) {
@ -226,12 +210,7 @@ public class FilesControlSet extends TaskEditControlFragment {
final String filePath = m.getFilePath(); final String filePath = m.getFilePath();
if (fileType.startsWith(TaskAttachment.FILE_TYPE_AUDIO)) { if (fileType.startsWith(TaskAttachment.FILE_TYPE_AUDIO)) {
play(m.getFilePath(), new PlaybackExceptionHandler() { play(m.getFilePath(), () -> showFromIntent(filePath, fileType));
@Override
public void playbackFailed() {
showFromIntent(filePath, fileType);
}
});
} else if (fileType.startsWith(TaskAttachment.FILE_TYPE_IMAGE)) { } else if (fileType.startsWith(TaskAttachment.FILE_TYPE_IMAGE)) {
try { try {
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(Intent.ACTION_VIEW);

@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import com.google.common.base.Predicate;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
@ -104,11 +103,6 @@ public class CalendarAlarmReceiver extends InjectingBroadcastReceiver {
return false; return false;
} }
final List<String> myAccounts = accountManager.getAccounts(); final List<String> myAccounts = accountManager.getAccounts();
return any(attendees, new Predicate<AndroidCalendarEventAttendee>() { return any(attendees, attendee -> myAccounts.contains(attendee.getEmail()));
@Override
public boolean apply(AndroidCalendarEventAttendee attendee) {
return myAccounts.contains(attendee.getEmail());
}
});
} }
} }

@ -54,12 +54,7 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
private View dismissButton; private View dismissButton;
private View ignoreSettingsButton; private View ignoreSettingsButton;
private final OnClickListener dismissListener = new OnClickListener() { private final OnClickListener dismissListener = v -> finish();
@Override
public void onClick(View v) {
finish();
}
};
private final OnClickListener ignoreListener = new OnClickListener() { private final OnClickListener ignoreListener = new OnClickListener() {
@Override @Override
@ -69,19 +64,11 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
ignorePresses++; ignorePresses++;
if (ignorePresses == IGNORE_PROMPT_COUNT) { if (ignorePresses == IGNORE_PROMPT_COUNT) {
dialogBuilder.newMessageDialog(R.string.CRA_ignore_body) dialogBuilder.newMessageDialog(R.string.CRA_ignore_body)
.setPositiveButton(R.string.CRA_ignore_all, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.CRA_ignore_all, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
preferences.setBoolean(R.string.p_calendar_reminders, false); preferences.setBoolean(R.string.p_calendar_reminders, false);
dismissListener.onClick(v); dismissListener.onClick(v);
}
})
.setNegativeButton(R.string.CRA_ignore_this, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismissListener.onClick(v);
}
}) })
.setNegativeButton(R.string.CRA_ignore_this, (dialog, which) -> dismissListener.onClick(v))
.show(); .show();
} else { } else {
dismissListener.onClick(v); dismissListener.onClick(v);
@ -143,30 +130,17 @@ public class CalendarReminderActivity extends ThemedInjectingAppCompatActivity {
ignoreButton.setOnClickListener(ignoreListener); ignoreButton.setOnClickListener(ignoreListener);
dismissButton.setOnClickListener(dismissListener); dismissButton.setOnClickListener(dismissListener);
ignoreSettingsButton.setOnClickListener(new OnClickListener() { ignoreSettingsButton.setOnClickListener(v -> {
@Override
public void onClick(View v) {
Intent editPreferences = new Intent(CalendarReminderActivity.this, BasicPreferences.class); Intent editPreferences = new Intent(CalendarReminderActivity.this, BasicPreferences.class);
startActivity(editPreferences); startActivity(editPreferences);
dismissListener.onClick(v); dismissListener.onClick(v);
}
}); });
if (!fromPostpone) { if (!fromPostpone) {
postponeButton.setOnClickListener(new OnClickListener() { postponeButton.setOnClickListener(v -> postpone());
@Override
public void onClick(View v) {
postpone();
}
});
} }
createListButton.setOnClickListener(new OnClickListener() { createListButton.setOnClickListener(v -> createNewList(getString(R.string.CRA_default_list_name, eventName)));
@Override
public void onClick(View v) {
createNewList(getString(R.string.CRA_default_list_name, eventName));
}
});
} }
private void createNewList(final String name) { private void createNewList(final String name) {

@ -72,23 +72,11 @@ public class CommentsController {
items.clear(); items.clear();
commentsContainer.removeAllViews(); commentsContainer.removeAllViews();
metadataDao.byTaskAndKey(task.getId(), NoteMetadata.METADATA_KEY, new Callback<Metadata>() { metadataDao.byTaskAndKey(task.getId(), NoteMetadata.METADATA_KEY, metadata -> items.add(NoteOrUpdate.fromMetadata(metadata)));
@Override
public void apply(Metadata metadata) {
items.add(NoteOrUpdate.fromMetadata(metadata));
}
});
userActivityDao.getCommentsForTask(task.getUuid(), new Callback<UserActivity>() { userActivityDao.getCommentsForTask(task.getUuid(), update -> items.add(NoteOrUpdate.fromUpdate(update)));
@Override
public void apply(UserActivity update) {
items.add(NoteOrUpdate.fromUpdate(update));
}
});
Collections.sort(items, new Comparator<NoteOrUpdate>() { Collections.sort(items, (a, b) -> {
@Override
public int compare(NoteOrUpdate a, NoteOrUpdate b) {
if (a.createdAt < b.createdAt) { if (a.createdAt < b.createdAt) {
return 1; return 1;
} else if (a.createdAt == b.createdAt) { } else if (a.createdAt == b.createdAt) {
@ -96,7 +84,6 @@ public class CommentsController {
} else { } else {
return -1; return -1;
} }
}
}); });
for (int i = 0; i < Math.min(items.size(), commentItems); i++) { for (int i = 0; i < Math.min(items.size(), commentItems); i++) {
@ -109,13 +96,10 @@ public class CommentsController {
loadMore.setText(R.string.TEA_load_more); loadMore.setText(R.string.TEA_load_more);
loadMore.setTextColor(activity.getResources().getColor(R.color.task_edit_deadline_gray)); loadMore.setTextColor(activity.getResources().getColor(R.color.task_edit_deadline_gray));
loadMore.setBackgroundColor(Color.alpha(0)); loadMore.setBackgroundColor(Color.alpha(0));
loadMore.setOnClickListener(new View.OnClickListener() { loadMore.setOnClickListener(v -> {
@Override
public void onClick(View v) {
// Perform action on click // Perform action on click
commentItems += 10; commentItems += 10;
reloadView(); reloadView();
}
}); });
commentsContainer.addView(loadMore); commentsContainer.addView(loadMore);
} }
@ -155,14 +139,9 @@ public class CommentsController {
String path = getPathFromUri(activity, updateBitmap); String path = getPathFromUri(activity, updateBitmap);
commentPictureView.setImageBitmap(sampleBitmap(path, commentPictureView.getLayoutParams().width, commentPictureView.getLayoutParams().height)); commentPictureView.setImageBitmap(sampleBitmap(path, commentPictureView.getLayoutParams().width, commentPictureView.getLayoutParams().height));
view.setOnClickListener(new View.OnClickListener() { view.setOnClickListener(v -> activity.startActivity(new Intent(Intent.ACTION_VIEW) {{
@Override
public void onClick(View v) {
activity.startActivity(new Intent(Intent.ACTION_VIEW) {{
setDataAndType(updateBitmap, "image/*"); setDataAndType(updateBitmap, "image/*");
}}); }}));
}
});
} else { } else {
commentPictureView.setVisibility(View.GONE); commentPictureView.setVisibility(View.GONE);
} }

@ -72,12 +72,7 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
R.string.p_geofence_responsiveness); R.string.p_geofence_responsiveness);
fieldMissedCalls = (CheckBoxPreference) findPreference(getString(R.string.p_field_missed_calls)); fieldMissedCalls = (CheckBoxPreference) findPreference(getString(R.string.p_field_missed_calls));
fieldMissedCalls.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { fieldMissedCalls.setOnPreferenceChangeListener((preference, newValue) -> newValue != null && (!(boolean) newValue || permissionRequestor.requestMissedCallPermissions()));
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return newValue != null && (!(boolean) newValue || permissionRequestor.requestMissedCallPermissions());
}
});
fieldMissedCalls.setChecked(fieldMissedCalls.isChecked() && permissionChecker.canAccessMissedCallPermissions()); fieldMissedCalls.setChecked(fieldMissedCalls.isChecked() && permissionChecker.canAccessMissedCallPermissions());
initializeRingtonePreference(); initializeRingtonePreference();
@ -85,14 +80,11 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
initializeTimePreference(getQuietStartPreference(), REQUEST_QUIET_START); initializeTimePreference(getQuietStartPreference(), REQUEST_QUIET_START);
initializeTimePreference(getQuietEndPreference(), REQUEST_QUIET_END); initializeTimePreference(getQuietEndPreference(), REQUEST_QUIET_END);
findPreference(getString(R.string.p_led_color)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.p_led_color)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(ReminderPreferences.this, ColorPickerActivity.class) {{ startActivityForResult(new Intent(ReminderPreferences.this, ColorPickerActivity.class) {{
putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.LED); putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.LED);
}}, REQUEST_LED_PICKER); }}, REQUEST_LED_PICKER);
return false; return false;
}
}); });
requires(atLeastJellybean(), R.string.p_rmd_notif_actions_enabled, R.string.p_notification_priority); requires(atLeastJellybean(), R.string.p_rmd_notif_actions_enabled, R.string.p_notification_priority);
@ -104,24 +96,18 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
private void rescheduleNotificationsOnChange(int... resIds) { private void rescheduleNotificationsOnChange(int... resIds) {
for (int resId : resIds) { for (int resId : resIds) {
findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(resId)).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
startService(new Intent(ReminderPreferences.this, ReminderSchedulerIntentService.class)); startService(new Intent(ReminderPreferences.this, ReminderSchedulerIntentService.class));
return true; return true;
}
}); });
} }
} }
private void resetGeofencesOnChange(int... resIds) { private void resetGeofencesOnChange(int... resIds) {
for (int resId : resIds) { for (int resId : resIds) {
findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(resId)).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
startService(new Intent(ReminderPreferences.this, GeofenceSchedulingIntentService.class)); startService(new Intent(ReminderPreferences.this, GeofenceSchedulingIntentService.class));
return true; return true;
}
}); });
} }
} }
@ -141,22 +127,17 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
} }
private void initializeTimePreference(final TimePreference preference, final int requestCode) { private void initializeTimePreference(final TimePreference preference, final int requestCode) {
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { preference.setOnPreferenceClickListener(ignored -> {
@Override
public boolean onPreferenceClick(Preference ignored) {
final DateTime current = new DateTime().withMillisOfDay(preference.getMillisOfDay()); final DateTime current = new DateTime().withMillisOfDay(preference.getMillisOfDay());
startActivityForResult(new Intent(ReminderPreferences.this, TimePickerActivity.class) {{ startActivityForResult(new Intent(ReminderPreferences.this, TimePickerActivity.class) {{
putExtra(TimePickerActivity.EXTRA_TIMESTAMP, current.getMillis()); putExtra(TimePickerActivity.EXTRA_TIMESTAMP, current.getMillis());
}}, requestCode); }}, requestCode);
return true; return true;
}
}); });
} }
private void initializeRingtonePreference() { private void initializeRingtonePreference() {
Preference.OnPreferenceChangeListener ringtoneChangedListener = new Preference.OnPreferenceChangeListener() { Preference.OnPreferenceChangeListener ringtoneChangedListener = (preference, value) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
if ("".equals(value)) { if ("".equals(value)) {
preference.setSummary(R.string.silent); preference.setSummary(R.string.silent);
} else { } else {
@ -166,7 +147,6 @@ public class ReminderPreferences extends InjectingPreferenceActivity {
preference.setSummary(ringtone == null ? "" : ringtone.getTitle(ReminderPreferences.this)); preference.setSummary(ringtone == null ? "" : ringtone.getTitle(ReminderPreferences.this));
} }
return true; return true;
}
}; };
String ringtoneKey = getString(R.string.p_rmd_ringtone); String ringtoneKey = getString(R.string.p_rmd_ringtone);

@ -165,12 +165,7 @@ public class RepeatControlSet extends TaskEditControlFragment {
for(int i = 0; i < 7; i++) { for(int i = 0; i < 7; i++) {
final int index = i; final int index = i;
CheckBox checkBox = (CheckBox) daysOfWeekContainer.getChildAt(i); CheckBox checkBox = (CheckBox) daysOfWeekContainer.getChildAt(i);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { checkBox.setOnCheckedChangeListener((buttonView, isChecked1) -> RepeatControlSet.this.isChecked[index] = isChecked1);
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
RepeatControlSet.this.isChecked[index] = isChecked;
}
});
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
checkBox.setText(dfs.getShortWeekdays()[dayOfWeek].substring(0, 1)); checkBox.setText(dfs.getShortWeekdays()[dayOfWeek].substring(0, 1));
daysOfWeek[i] = checkBox; daysOfWeek[i] = checkBox;
@ -179,12 +174,7 @@ public class RepeatControlSet extends TaskEditControlFragment {
} }
// set up listeners // set up listeners
value.setOnClickListener(new View.OnClickListener() { value.setOnClickListener(v -> repeatValueClick());
@Override
public void onClick(View v) {
repeatValueClick();
}
});
setRepeatValue(1); setRepeatValue(1);
interval.setOnItemSelectedListener(new OnItemSelectedListener() { interval.setOnItemSelectedListener(new OnItemSelectedListener() {
@ -316,22 +306,14 @@ public class RepeatControlSet extends TaskEditControlFragment {
private AlertDialog buildDialog() { private AlertDialog buildDialog() {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setView(dialogView) .setView(dialogView)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog12, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
doRepeat = true; doRepeat = true;
callback.repeatChanged(doRepeat); callback.repeatChanged(doRepeat);
refreshDisplayView(); refreshDisplayView();
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
refreshDisplayView();
}
}) })
.setOnCancelListener(dialog1 -> refreshDisplayView())
.create(); .create();
} }
@ -438,12 +420,7 @@ public class RepeatControlSet extends TaskEditControlFragment {
dialogValue = 1; dialogValue = 1;
} }
NumberPickerDialog dialog = new NumberPickerDialog(theme.getThemedDialog(getActivity()), new OnNumberPickedListener() { NumberPickerDialog dialog = new NumberPickerDialog(theme.getThemedDialog(getActivity()), this::setRepeatValue, getResources().getString(R.string.repeat_interval_prompt),
@Override
public void onNumberPicked(int number) {
setRepeatValue(number);
}
}, getResources().getString(R.string.repeat_interval_prompt),
dialogValue, 1, 1, 365); dialogValue, 1, 1, 365);
theme.applyToContext(dialog.getContext()); theme.applyToContext(dialog.getContext());
dialog.show(); dialog.show();

@ -169,13 +169,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
} }
} }
private static Comparator<WeekdayNum> weekdayCompare = new Comparator<WeekdayNum>() { private static Comparator<WeekdayNum> weekdayCompare = (object1, object2) -> object1.wday.javaDayNum - object2.wday.javaDayNum;
@Override
public int compare(WeekdayNum object1, WeekdayNum object2) {
return object1.wday.javaDayNum - object2.wday.javaDayNum;
}
};
private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, DateTime date) { private static WeekdayNum findNextWeekday(List<WeekdayNum> byDay, DateTime date) {
WeekdayNum next = byDay.get(0); WeekdayNum next = byDay.get(0);

@ -76,11 +76,8 @@ public class StartupService {
} }
// perform startup activities in a background thread // perform startup activities in a background thread
new Thread(new Runnable() { new Thread(() -> {
@Override
public void run() {
taskDeleter.deleteTasksWithEmptyTitles(null); taskDeleter.deleteTasksWithEmptyTitles(null);
}
}).start(); }).start();
if (lastVersion == 0) { if (lastVersion == 0) {

@ -187,12 +187,7 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor,
sqlQueryTemplate, dialogBuilder, checkBoxes, tagService, themeCache); sqlQueryTemplate, dialogBuilder, checkBoxes, tagService, themeCache);
taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { taskAdapter.addOnCompletedTaskListener(this::setCompletedForItemAndSubtasks);
@Override
public void onCompletedTask(Task item, boolean newState) {
setCompletedForItemAndSubtasks(item, newState);
}
});
return taskAdapter; return taskAdapter;
} }
@ -238,15 +233,12 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
} }
final ArrayList<String> chained = new ArrayList<>(); final ArrayList<String> chained = new ArrayList<>();
updater.applyToDescendants(itemId, new AstridOrderedListUpdater.OrderedListNodeVisitor() { updater.applyToDescendants(itemId, node -> {
@Override
public void visitNode(AstridOrderedListUpdater.Node node) {
String uuid = node.uuid; String uuid = node.uuid;
model.setCompletionDate(completionDate); model.setCompletionDate(completionDate);
taskService.update(Task.UUID.eq(uuid), model); taskService.update(Task.UUID.eq(uuid), model);
model.clear(); model.clear();
chained.add(node.uuid); chained.add(node.uuid);
}
}); });
if(chained.size() > 0) { if(chained.size() > 0) {

@ -65,12 +65,7 @@ public abstract class AstridOrderedListUpdater<LIST> {
public void initializeFromSerializedTree(LIST list, Filter filter, String serializedTree) { public void initializeFromSerializedTree(LIST list, Filter filter, String serializedTree) {
idToNode.clear(); idToNode.clear();
treeRoot = buildTreeModel(serializedTree, new JSONTreeModelBuilder() { treeRoot = buildTreeModel(serializedTree, node -> idToNode.put(node.uuid, node));
@Override
public void afterAddNode(Node node) {
idToNode.put(node.uuid, node);
}
});
verifyTreeModel(list, filter); verifyTreeModel(list, filter);
} }

@ -156,9 +156,7 @@ public class SubtasksHelper {
} }
private static void remapLocalTreeToRemote(Node root, HashMap<Long, String> idMap) { private static void remapLocalTreeToRemote(Node root, HashMap<Long, String> idMap) {
remapTree(root, idMap, new TreeRemapHelper<Long>() { remapTree(root, idMap, uuid -> {
@Override
public Long getKeyFromOldUuid(String uuid) {
Long localId = -1L; Long localId = -1L;
try { try {
localId = Long.parseLong(uuid); localId = Long.parseLong(uuid);
@ -166,7 +164,6 @@ public class SubtasksHelper {
Timber.e(e, e.getMessage()); Timber.e(e, e.getMessage());
} }
return localId; return localId;
}
}); });
} }

@ -72,14 +72,11 @@ public final class TagService {
MetadataCriteria.withKey(TaskToTagMetadata.KEY))). MetadataCriteria.withKey(TaskToTagMetadata.KEY))).
orderBy(order).groupBy(TaskToTagMetadata.TAG_NAME); orderBy(order).groupBy(TaskToTagMetadata.TAG_NAME);
final List<TagData> array = new ArrayList<>(); final List<TagData> array = new ArrayList<>();
metadataDao.query(query, new Callback<Metadata>() { metadataDao.query(query, metadata -> {
@Override
public void apply(Metadata metadata) {
TagData tag = tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID)); TagData tag = tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID));
if (tag != null) { if (tag != null) {
array.add(tag); array.add(tag);
} }
}
}); });
return array.toArray(new TagData[array.size()]); return array.toArray(new TagData[array.size()]);
} }
@ -94,12 +91,7 @@ public final class TagService {
MetadataCriteria.withKey(TaskToTagMetadata.KEY), MetadataCriteria.withKey(TaskToTagMetadata.KEY),
Metadata.DELETION_DATE.eq(0), Metadata.DELETION_DATE.eq(0),
TaskToTagMetadata.TASK_UUID.eq(uuid)))); TaskToTagMetadata.TASK_UUID.eq(uuid))));
return newArrayList(Iterables.transform(tags, new Function<Metadata, TagData>() { return newArrayList(Iterables.transform(tags, metadata -> tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID))));
@Override
public TagData apply(Metadata metadata) {
return tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID));
}
}));
} }
public ArrayList<TagData> getTagDataForTask(long taskId) { public ArrayList<TagData> getTagDataForTask(long taskId) {
@ -108,12 +100,7 @@ public final class TagService {
MetadataCriteria.withKey(TaskToTagMetadata.KEY), MetadataCriteria.withKey(TaskToTagMetadata.KEY),
Metadata.DELETION_DATE.eq(0), Metadata.DELETION_DATE.eq(0),
MetadataCriteria.byTask(taskId)))); MetadataCriteria.byTask(taskId))));
return newArrayList(transform(tags, new Function<Metadata, TagData>() { return newArrayList(transform(tags, metadata -> tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID))));
@Override
public TagData apply(Metadata metadata) {
return tagFromUUID(metadata.getValue(TaskToTagMetadata.TAG_UUID));
}
}));
} }
public ArrayList<String> getTagNames(long taskId) { public ArrayList<String> getTagNames(long taskId) {
@ -124,11 +111,8 @@ public final class TagService {
MetadataCriteria.byTask(taskId))) MetadataCriteria.byTask(taskId)))
.orderBy(Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME))); .orderBy(Order.asc(Functions.upper(TaskToTagMetadata.TAG_NAME)));
final ArrayList<String> tagNames = new ArrayList<>(); final ArrayList<String> tagNames = new ArrayList<>();
metadataDao.query(query, new Callback<Metadata>() { metadataDao.query(query, entry -> {
@Override
public void apply(Metadata entry) {
tagNames.add(entry.getValue(TaskToTagMetadata.TAG_NAME)); tagNames.add(entry.getValue(TaskToTagMetadata.TAG_NAME));
}
}); });
return tagNames; return tagNames;
} }
@ -138,13 +122,10 @@ public final class TagService {
*/ */
public List<TagData> getTagList() { public List<TagData> getTagList() {
final List<TagData> tagList = new ArrayList<>(); final List<TagData> tagList = new ArrayList<>();
tagDataDao.tagDataOrderedByName(new Callback<TagData>() { tagDataDao.tagDataOrderedByName(tagData -> {
@Override
public void apply(TagData tagData) {
if (!TextUtils.isEmpty(tagData.getName())) { if (!TextUtils.isEmpty(tagData.getName())) {
tagList.add(tagData); tagList.add(tagData);
} }
}
}); });
return tagList; return tagList;
} }

@ -111,9 +111,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
}; };
private Function<TagData, SpannableString> tagToString(final float maxLength) { private Function<TagData, SpannableString> tagToString(final float maxLength) {
return new Function<TagData, SpannableString>() { return tagData -> {
@Override
public SpannableString apply(TagData tagData) {
String tagName = tagData.getName(); String tagName = tagData.getName();
tagName = tagName tagName = tagName
.substring(0, Math.min(tagName.length(), (int) maxLength)) .substring(0, Math.min(tagName.length(), (int) maxLength))
@ -124,7 +122,6 @@ public final class TagsControlSet extends TaskEditControlFragment {
string.setSpan(new BackgroundColorSpan(color.getPrimaryColor()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); string.setSpan(new BackgroundColorSpan(color.getPrimaryColor()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
string.setSpan(new ForegroundColorSpan(color.getActionBarTint()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); string.setSpan(new ForegroundColorSpan(color.getActionBarTint()), 0, string.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
return string; return string;
}
}; };
} }
@ -223,12 +220,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
private AlertDialog buildDialog() { private AlertDialog buildDialog() {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setView(dialogView) .setView(dialogView)
.setOnDismissListener(new DialogInterface.OnDismissListener() { .setOnDismissListener(dialogInterface -> refreshDisplayView())
@Override
public void onDismiss(DialogInterface dialogInterface) {
refreshDisplayView();
}
})
.create(); .create();
} }
@ -240,12 +232,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
} }
private boolean isSelected(List<TagData> selected, final String name) { private boolean isSelected(List<TagData> selected, final String name) {
return Iterables.any(selected, new Predicate<TagData>() { return Iterables.any(selected, input -> name.equalsIgnoreCase(input.getName()));
@Override
public boolean apply(TagData input) {
return name.equalsIgnoreCase(input.getName());
}
});
} }
private ArrayList<TagData> getSelectedTags() { private ArrayList<TagData> getSelectedTags() {
@ -335,9 +322,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
} }
}); });
textView.setOnEditorActionListener(new OnEditorActionListener() { textView.setOnEditorActionListener((arg0, actionId, arg2) -> {
@Override
public boolean onEditorAction(TextView arg0, int actionId, KeyEvent arg2) {
if(actionId != EditorInfo.IME_NULL) { if(actionId != EditorInfo.IME_NULL) {
return false; return false;
} }
@ -345,12 +330,9 @@ public final class TagsControlSet extends TaskEditControlFragment {
addTag(""); //$NON-NLS-1$ addTag(""); //$NON-NLS-1$
} }
return true; return true;
}
}); });
tagItem.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() { tagItem.findViewById(R.id.button1).setOnClickListener(v -> {
@Override
public void onClick(View v) {
TextView lastView = getLastTextView(); TextView lastView = getLastTextView();
if(lastView == textView && textView.getText().length() == 0) { if(lastView == textView && textView.getText().length() == 0) {
return; return;
@ -361,7 +343,6 @@ public final class TagsControlSet extends TaskEditControlFragment {
} else { } else {
textView.setText(""); //$NON-NLS-1$ textView.setText(""); //$NON-NLS-1$
} }
}
}); });
} }

@ -125,18 +125,8 @@ public class TimerControlSet extends TaskEditControlFragment {
private AlertDialog buildDialog() { private AlertDialog buildDialog() {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setView(dialogView) .setView(dialogView)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialog12, which) -> refreshDisplayView())
@Override .setOnCancelListener(dialog1 -> refreshDisplayView())
public void onClick(DialogInterface dialog, int which) {
refreshDisplayView();
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
refreshDisplayView();
}
})
.create(); .create();
} }
@ -239,12 +229,9 @@ public class TimerControlSet extends TaskEditControlFragment {
elapsed += DateUtilities.now() - timerStarted; elapsed += DateUtilities.now() - timerStarted;
chronometer.setBase(SystemClock.elapsedRealtime() - elapsed); chronometer.setBase(SystemClock.elapsedRealtime() - elapsed);
if (elapsed > DateUtilities.ONE_DAY) { if (elapsed > DateUtilities.ONE_DAY) {
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { chronometer.setOnChronometerTickListener(cArg -> {
@Override
public void onChronometerTick(Chronometer cArg) {
long t = SystemClock.elapsedRealtime() - cArg.getBase(); long t = SystemClock.elapsedRealtime() - cArg.getBase();
cArg.setText(DateFormat.format("d'd' h:mm", t)); //$NON-NLS-1$ cArg.setText(DateFormat.format("d'd' h:mm", t)); //$NON-NLS-1$
}
}); });
} }

@ -317,25 +317,17 @@ public class DraggableListView extends ListView {
try { try {
Thread.sleep(300L); Thread.sleep(300L);
post(new Runnable() { post(() -> initiateDrag(ev));
@Override
public void run() {
initiateDrag(ev);
}
});
Thread.sleep(1000L); Thread.sleep(1000L);
post(new Runnable() { post(() -> {
@Override
public void run() {
stopDragging(); stopDragging();
dragThread = null; dragThread = null;
Vibrator v = (Vibrator) getContext().getSystemService( Vibrator v = (Vibrator) getContext().getSystemService(
Context.VIBRATOR_SERVICE); Context.VIBRATOR_SERVICE);
v.vibrate(50); v.vibrate(50);
mClickListener.onLongClick(viewAtPosition()); mClickListener.onLongClick(viewAtPosition());
}
}); });
} catch (InterruptedException e) { } catch (InterruptedException e) {

@ -141,12 +141,7 @@ public class ReminderControlSet extends TaskEditControlFragment {
private List<Long> currentAlarms() { private List<Long> currentAlarms() {
final List<Long> alarms = new ArrayList<>(); final List<Long> alarms = new ArrayList<>();
alarmService.getAlarms(taskId, new Callback<Metadata>() { alarmService.getAlarms(taskId, entry -> alarms.add(entry.getValue(AlarmFields.TIME)));
@Override
public void apply(Metadata entry) {
alarms.add(entry.getValue(AlarmFields.TIME));
}
});
return alarms; return alarms;
} }
@ -284,12 +279,7 @@ public class ReminderControlSet extends TaskEditControlFragment {
} }
public void addAlarmRow(final Long timestamp) { public void addAlarmRow(final Long timestamp) {
addAlarmRow(getLongDateStringWithTime(context, timestamp), new OnClickListener() { addAlarmRow(getLongDateStringWithTime(context, timestamp), v -> alarms.remove(timestamp));
@Override
public void onClick(View v) {
alarms.remove(timestamp);
}
});
alarms.add(timestamp); alarms.add(timestamp);
} }
@ -301,12 +291,7 @@ public class ReminderControlSet extends TaskEditControlFragment {
} }
public void addGeolocationReminder(final Geofence geofence) { public void addGeolocationReminder(final Geofence geofence) {
addAlarmRow(geofence.getName(), new OnClickListener() { addAlarmRow(geofence.getName(), v -> geofences.remove(geofence));
@Override
public void onClick(View v) {
geofences.remove(geofence);
}
});
geofences.add(geofence); geofences.add(geofence);
} }
@ -349,15 +334,12 @@ public class ReminderControlSet extends TaskEditControlFragment {
private void addAlarmRow(final View alertItem, String text, final View.OnClickListener onRemove) { private void addAlarmRow(final View alertItem, String text, final View.OnClickListener onRemove) {
TextView display = (TextView) alertItem.findViewById(R.id.alarm_string); TextView display = (TextView) alertItem.findViewById(R.id.alarm_string);
display.setText(text); display.setText(text);
alertItem.findViewById(R.id.clear).setOnClickListener(new OnClickListener() { alertItem.findViewById(R.id.clear).setOnClickListener(v -> {
@Override
public void onClick(View v) {
alertContainer.removeView(alertItem); alertContainer.removeView(alertItem);
if (onRemove != null) { if (onRemove != null) {
onRemove.onClick(v); onRemove.onClick(v);
} }
updateSpinner(); updateSpinner();
}
}); });
updateSpinner(); updateSpinner();
} }
@ -384,31 +366,16 @@ public class ReminderControlSet extends TaskEditControlFragment {
private void addDue() { private void addDue() {
whenDue = true; whenDue = true;
addAlarmRow(getString(R.string.when_due), new OnClickListener() { addAlarmRow(getString(R.string.when_due), v -> whenDue = false);
@Override
public void onClick(View v) {
whenDue = false;
}
});
} }
private void addOverdue() { private void addOverdue() {
whenOverdue = true; whenOverdue = true;
addAlarmRow(getString(R.string.when_overdue), new OnClickListener() { addAlarmRow(getString(R.string.when_overdue), v -> whenOverdue = false);
@Override
public void onClick(View v) {
whenOverdue = false;
}
});
} }
private void addRandomReminder(long reminderPeriod) { private void addRandomReminder(long reminderPeriod) {
View alarmRow = addAlarmRow(getString(R.string.randomly_once) + " ", new OnClickListener() { View alarmRow = addAlarmRow(getString(R.string.randomly_once) + " ", v -> randomControlSet = null);
@Override
public void onClick(View v) {
randomControlSet = null;
}
});
randomControlSet = new RandomReminderControlSet(context, alarmRow, reminderPeriod); randomControlSet = new RandomReminderControlSet(context, alarmRow, reminderPeriod);
} }

@ -74,15 +74,8 @@ public class TimeDurationControlSet implements OnNNumberPickedListener, View.OnC
new int[] {999, 59}, new String[] {":", null}); new int[] {999, 59}, new String[] {":", null});
final NumberPicker hourPicker = dialog.getPicker(0); final NumberPicker hourPicker = dialog.getPicker(0);
final NumberPicker minutePicker = dialog.getPicker(1); final NumberPicker minutePicker = dialog.getPicker(1);
minutePicker.setFormatter(new NumberPicker.Formatter() { minutePicker.setFormatter(value -> String.format("%02d", value));
@Override minutePicker.setOnChangeListener(newVal -> {
public String toString(int value) {
return String.format("%02d", value);
}
});
minutePicker.setOnChangeListener(new NumberPicker.OnChangedListener() {
@Override
public int onChanged(int newVal) {
if(newVal < 0) { if(newVal < 0) {
if(hourPicker.getCurrent() == 0) { if(hourPicker.getCurrent() == 0) {
return 0; return 0;
@ -94,7 +87,6 @@ public class TimeDurationControlSet implements OnNNumberPickedListener, View.OnC
return newVal % 60; return newVal % 60;
} }
return newVal; return newVal;
}
}); });
} }

@ -30,18 +30,8 @@ public class AACRecorder {
setOutputFormat(OutputFormat.MPEG_4); setOutputFormat(OutputFormat.MPEG_4);
setAudioEncoder(AudioEncoder.AAC); setAudioEncoder(AudioEncoder.AAC);
setOutputFile(tempFile); setOutputFile(tempFile);
setOnErrorListener(new OnErrorListener() { setOnErrorListener((mr, what, extra) -> Timber.e("mediaRecorder.onError(mr, %s, %s)", what, extra));
@Override setOnInfoListener((mr, what, extra) -> Timber.i("mediaRecorder.onInfo(mr, %s, %s)", what, extra));
public void onError(MediaRecorder mr, int what, int extra) {
Timber.e("mediaRecorder.onError(mr, %s, %s)", what, extra);
}
});
setOnInfoListener(new OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
Timber.i("mediaRecorder.onInfo(mr, %s, %s)", what, extra);
}
});
}}; }};
try { try {

@ -50,14 +50,11 @@ public class VoiceOutputAssistant implements OnInitListener {
if (mTts != null && isTTSInitialized) { if (mTts != null && isTTSInitialized) {
final String id = UUID.randomUUID().toString(); final String id = UUID.randomUUID().toString();
Timber.d("%s: %s (%s)", mTts, textToSpeak, id); Timber.d("%s: %s (%s)", mTts, textToSpeak, id);
mTts.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() { mTts.setOnUtteranceCompletedListener(utteranceId -> {
@Override
public void onUtteranceCompleted(String utteranceId) {
Timber.d("%s: onUtteranceCompleted", utteranceId); Timber.d("%s: onUtteranceCompleted", utteranceId);
if(utteranceId.equals(id)) { if(utteranceId.equals(id)) {
shutdown(); shutdown();
} }
}
}); });
mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, new HashMap<String, String>() {{ mTts.speak(textToSpeak, TextToSpeech.QUEUE_ADD, new HashMap<String, String>() {{
put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION)); put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));

@ -72,25 +72,10 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
adapter = new ArrayAdapter<>(getActivity(), R.layout.simple_list_item_single_choice_themed, calendarNames); adapter = new ArrayAdapter<>(getActivity(), R.layout.simple_list_item_single_choice_themed, calendarNames);
AlertDialogBuilder builder = dialogBuilder.newDialog() AlertDialogBuilder builder = dialogBuilder.newDialog()
.setAdapter(adapter, new DialogInterface.OnClickListener() { .setAdapter(adapter, (dialog, which) -> handler.selectedCalendar(calendars.get(which)))
@Override .setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> handler.cancel());
public void onClick(DialogInterface dialog, int which) {
handler.selectedCalendar(calendars.get(which));
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
handler.cancel();
}
});
if (enableNone) { if (enableNone) {
builder.setNeutralButton(R.string.none, new DialogInterface.OnClickListener() { builder.setNeutralButton(R.string.none, (dialog, which) -> handler.selectedCalendar(AndroidCalendar.NONE));
@Override
public void onClick(DialogInterface dialog, int which) {
handler.selectedCalendar(AndroidCalendar.NONE);
}
});
} }
return builder.show(); return builder.show();
@ -104,12 +89,7 @@ public class CalendarSelectionDialog extends InjectingDialogFragment {
calendars.clear(); calendars.clear();
calendars.addAll(calendarProvider.getCalendars()); calendars.addAll(calendarProvider.getCalendars());
calendarNames.clear(); calendarNames.clear();
calendarNames.addAll(transform(calendars, new Function<AndroidCalendar, String>() { calendarNames.addAll(transform(calendars, AndroidCalendar::getName));
@Override
public String apply(AndroidCalendar androidCalendar) {
return androidCalendar.getName();
}
}));
if (calendarNames.isEmpty()) { if (calendarNames.isEmpty()) {
Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show(); Toast.makeText(getActivity(), R.string.no_calendars_found, Toast.LENGTH_LONG).show();
handler.cancel(); handler.cancel();

@ -66,7 +66,7 @@ public class ColorPickerActivity extends InjectingAppCompatActivity implements C
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_PURCHASE) { if (requestCode == REQUEST_PURCHASE) {
purchaseHelper.handleActivityResult(PurchaseHelperCallback.NO_OP, requestCode, resultCode, data); purchaseHelper.handleActivityResult(null, requestCode, resultCode, data);
} else { } else {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
} }

@ -52,12 +52,7 @@ public class DatePickerActivity extends InjectingAppCompatActivity implements Da
dialog.setAccentColor(themeAccent.getAccentColor()); dialog.setAccentColor(themeAccent.getAccentColor());
dialog.show(fragmentManager, FRAG_TAG_DATE_PICKER); dialog.show(fragmentManager, FRAG_TAG_DATE_PICKER);
} }
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { dialog.setOnCancelListener(dialogInterface -> finish());
@Override
public void onCancel(DialogInterface dialogInterface) {
finish();
}
});
dialog.setOnDateSetListener(this); dialog.setOnDateSetListener(this);
} }
} }

@ -43,9 +43,7 @@ public class FilterSelectionActivity extends InjectingAppCompatActivity {
filterAdapter.populateList(); filterAdapter.populateList();
dialogBuilder.newDialog() dialogBuilder.newDialog()
.setSingleChoiceItems(filterAdapter, -1, new DialogInterface.OnClickListener() { .setSingleChoiceItems(filterAdapter, -1, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
final Filter selectedFilter = (Filter) filterAdapter.getItem(which); final Filter selectedFilter = (Filter) filterAdapter.getItem(which);
setResult(RESULT_OK, new Intent() {{ setResult(RESULT_OK, new Intent() {{
if (returnFilter) { if (returnFilter) {
@ -58,14 +56,8 @@ public class FilterSelectionActivity extends InjectingAppCompatActivity {
} }
}}); }});
dialog.dismiss(); dialog.dismiss();
}
})
.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
}) })
.setOnDismissListener(dialog -> finish())
.show(); .show();
} }

@ -56,12 +56,7 @@ public class TimePickerActivity extends InjectingAppCompatActivity implements Ti
dialog.setAccentColor(themeAccent.getAccentColor()); dialog.setAccentColor(themeAccent.getAccentColor());
dialog.show(fragmentManager, FRAG_TAG_TIME_PICKER); dialog.show(fragmentManager, FRAG_TAG_TIME_PICKER);
} }
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { dialog.setOnCancelListener(dialogInterface -> finish());
@Override
public void onCancel(DialogInterface dialogInterface) {
finish();
}
});
dialog.setOnTimeSetListener(this); dialog.setOnTimeSetListener(this);
} }
} }

@ -1,13 +1,5 @@
package org.tasks.billing; package org.tasks.billing;
public interface PurchaseHelperCallback { public interface PurchaseHelperCallback {
PurchaseHelperCallback NO_OP = new PurchaseHelperCallback() {
@Override
public void purchaseCompleted(boolean success, String sku) {
}
};
void purchaseCompleted(boolean success, String sku); void purchaseCompleted(boolean success, String sku);
} }

@ -44,42 +44,19 @@ public class AddAttachmentDialog extends InjectingDialogFragment {
final List<Runnable> actions = newArrayList(); final List<Runnable> actions = newArrayList();
if (device.hasCamera()) { if (device.hasCamera()) {
entries.add(getString(R.string.take_a_picture)); entries.add(getString(R.string.take_a_picture));
actions.add(new Runnable() { actions.add(() -> callback.takePicture());
@Override
public void run() {
callback.takePicture();
}
});
} }
entries.add(getString(R.string.premium_record_audio)); entries.add(getString(R.string.premium_record_audio));
actions.add(new Runnable() { actions.add(() -> callback.recordNote());
@Override
public void run() {
callback.recordNote();
}
});
if (device.hasGallery()) { if (device.hasGallery()) {
entries.add(getString(R.string.pick_from_gallery)); entries.add(getString(R.string.pick_from_gallery));
actions.add(new Runnable() { actions.add(() -> callback.pickFromGallery());
@Override
public void run() {
callback.pickFromGallery();
}
});
} }
entries.add(getString(R.string.pick_from_storage)); entries.add(getString(R.string.pick_from_storage));
actions.add(new Runnable() { actions.add(() -> callback.pickFromStorage());
@Override
public void run() {
callback.pickFromStorage();
}
});
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setItems(entries, new DialogInterface.OnClickListener() { .setItems(entries, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
actions.get(which).run(); actions.get(which).run();
}
}) })
.show(); .show();
} }

@ -89,22 +89,14 @@ public class ColorPickerDialog extends InjectingDialogFragment {
}; };
return dialogBuilder.newDialog(theme) return dialogBuilder.newDialog(theme)
.setAdapter(adapter, new DialogInterface.OnClickListener() { .setAdapter(adapter, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
if (preferences.hasPurchase(R.string.p_purchased_themes) || which < getNumFree()) { if (preferences.hasPurchase(R.string.p_purchased_themes) || which < getNumFree()) {
callback.themePicked(palette, which); callback.themePicked(palette, which);
} else { } else {
callback.initiateThemePurchase(); callback.initiateThemePurchase();
} }
}
})
.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
callback.dismissed();
}
}) })
.setNegativeButton(android.R.string.cancel, (dialogInterface, i) -> callback.dismissed())
.show(); .show();
} }

@ -31,9 +31,7 @@ public class DonationDialog extends InjectingNativeDialogFragment {
final List<String> donationValues = getDonationValues(); final List<String> donationValues = getDonationValues();
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setTitle(R.string.select_amount) .setTitle(R.string.select_amount)
.setItems(donationValues, new DialogInterface.OnClickListener() { .setItems(donationValues, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
String value = donationValues.get(which); String value = donationValues.get(which);
Pattern pattern = Pattern.compile("\\$(\\d+) USD"); Pattern pattern = Pattern.compile("\\$(\\d+) USD");
Matcher matcher = pattern.matcher(value); Matcher matcher = pattern.matcher(value);
@ -41,7 +39,6 @@ public class DonationDialog extends InjectingNativeDialogFragment {
matcher.matches(); matcher.matches();
String sku = String.format(java.util.Locale.ENGLISH, "%03d", Integer.parseInt(matcher.group(1))); String sku = String.format(java.util.Locale.ENGLISH, "%03d", Integer.parseInt(matcher.group(1)));
purchaseHelper.purchase(dialogBuilder, getActivity(), sku, null, BasicPreferences.REQUEST_PURCHASE, (BasicPreferences) getActivity()); purchaseHelper.purchase(dialogBuilder, getActivity(), sku, null, BasicPreferences.REQUEST_PURCHASE, (BasicPreferences) getActivity());
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();

@ -40,11 +40,8 @@ public class NativeTimePickerDialog extends InjectingNativeDialogFragment implem
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
Context context = theme.wrap(getActivity()); Context context = theme.wrap(getActivity());
TimePickerDialog timePickerDialog = new TimePickerDialog(context, this, 0, 0, DateUtilities.is24HourFormat(context)); TimePickerDialog timePickerDialog = new TimePickerDialog(context, this, 0, 0, DateUtilities.is24HourFormat(context));
timePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(android.R.string.cancel), new DialogInterface.OnClickListener() { timePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(android.R.string.cancel), (dialogInterface, i) -> {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
callback.cancel(); callback.cancel();
}
}); });
if (initial != null) { if (initial != null) {
timePickerDialog.updateTime(initial.getHourOfDay(), initial.getMinuteOfHour()); timePickerDialog.updateTime(initial.getHourOfDay(), initial.getMinuteOfHour());

@ -66,12 +66,7 @@ public class SeekBarDialog extends InjectingNativeDialogFragment {
slider.setValue(initial, true); slider.setValue(initial, true);
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setView(view) .setView(view)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> callback.valueSelected(slider.getValue(), requestCode))
@Override
public void onClick(DialogInterface dialogInterface, int i) {
callback.valueSelected(slider.getValue(), requestCode);
}
})
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }

@ -79,25 +79,12 @@ public class SortDialog extends InjectingDialogFragment {
} }
alertDialog = dialogBuilder.newDialog() alertDialog = dialogBuilder.newDialog()
.setSingleChoiceItems(items, selectedIndex, new DialogInterface.OnClickListener() { .setSingleChoiceItems(items, selectedIndex, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedIndex = which; selectedIndex = which;
enableReverse(); enableReverse();
}
})
.setPositiveButton(R.string.TLA_menu_sort, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setSelection(false);
}
})
.setNeutralButton(R.string.reverse, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setSelection(true);
}
}) })
.setPositiveButton(R.string.TLA_menu_sort, (dialog, which) -> setSelection(false))
.setNeutralButton(R.string.reverse, (dialog, which) -> setSelection(true))
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.showThemedListView(); .showThemedListView();

@ -42,9 +42,7 @@ public class FilterCounter {
} }
public void refreshFilterCounts(final Runnable onComplete) { public void refreshFilterCounts(final Runnable onComplete) {
executorService.submit(new Runnable() { executorService.submit(() -> {
@Override
public void run() {
for (Filter filter : filterCounts.keySet()) { for (Filter filter : filterCounts.keySet()) {
int size = countTasks(filter); int size = countTasks(filter);
filterCounts.put(filter, size); filterCounts.put(filter, size);
@ -52,7 +50,6 @@ public class FilterCounter {
if (onComplete != null) { if (onComplete != null) {
onComplete.run(); onComplete.run();
} }
}
}); });
} }

@ -83,12 +83,7 @@ public class FilterCriteriaProvider {
private CustomFilterCriterion getTagFilter() { private CustomFilterCriterion getTagFilter() {
// TODO: adding to hash set because duplicate tag name bug hasn't been fixed yet // TODO: adding to hash set because duplicate tag name bug hasn't been fixed yet
List<String> tags = newArrayList(newLinkedHashSet(transform(tagService.getTagList(), new Function<TagData, String>() { List<String> tags = newArrayList(newLinkedHashSet(transform(tagService.getTagList(), TagData::getName)));
@Override
public String apply(TagData tagData) {
return tagData.getName();
}
})));
String[] tagNames = tags.toArray(new String[tags.size()]); String[] tagNames = tags.toArray(new String[tags.size()]);
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(Metadata.KEY.name, TaskToTagMetadata.KEY); values.put(Metadata.KEY.name, TaskToTagMetadata.KEY);

@ -182,12 +182,9 @@ public class CommentBarFragment extends TaskEditControlFragment {
if (pendingCommentPicture == null) { if (pendingCommentPicture == null) {
showPictureLauncher(null); showPictureLauncher(null);
} else { } else {
showPictureLauncher(new ClearImageCallback() { showPictureLauncher(() -> {
@Override
public void clearImage() {
pendingCommentPicture = null; pendingCommentPicture = null;
resetPictureButton(); resetPictureButton();
}
}); });
} }
} }
@ -254,34 +251,21 @@ public class CommentBarFragment extends TaskEditControlFragment {
final boolean cameraAvailable = device.hasCamera(); final boolean cameraAvailable = device.hasCamera();
if (cameraAvailable) { if (cameraAvailable) {
runnables.add(new Runnable() { runnables.add(() -> startActivityForResult(new Intent(activity, CameraActivity.class), REQUEST_CODE_CAMERA));
@Override
public void run() {
startActivityForResult(new Intent(activity, CameraActivity.class), REQUEST_CODE_CAMERA);
}
});
options.add(getString(R.string.take_a_picture)); options.add(getString(R.string.take_a_picture));
} }
if (clearImageOption != null) { if (clearImageOption != null) {
runnables.add(new Runnable() { runnables.add(clearImageOption::clearImage);
@Override
public void run() {
clearImageOption.clearImage();
}
});
options.add(getString(R.string.actfm_picture_clear)); options.add(getString(R.string.actfm_picture_clear));
} }
if (runnables.size() == 1) { if (runnables.size() == 1) {
runnables.get(0).run(); runnables.get(0).run();
} else { } else {
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { DialogInterface.OnClickListener listener = (d, which) -> {
@Override
public void onClick(DialogInterface d, int which) {
runnables.get(which).run(); runnables.get(which).run();
d.dismiss(); d.dismiss();
}
}; };
// show a menu of available options // show a menu of available options

@ -60,12 +60,7 @@ public abstract class InjectingPreferenceActivity extends AppCompatPreferenceAct
toolbar.setTitle(getTitle()); toolbar.setTitle(getTitle());
} }
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp)); toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_24dp));
toolbar.setNavigationOnClickListener(new View.OnClickListener() { toolbar.setNavigationOnClickListener(v -> finish());
@Override
public void onClick(View v) {
finish();
}
});
MenuColorizer.colorToolbar(this, toolbar); MenuColorizer.colorToolbar(this, toolbar);
} }

@ -42,19 +42,11 @@ public class LocalePickerDialog extends InjectingNativeDialogFragment {
for (String override : getResources().getStringArray(R.array.localization)) { for (String override : getResources().getStringArray(R.array.localization)) {
locales.add(locale.withLanguage(override)); locales.add(locale.withLanguage(override));
} }
final List<String> display = transform(locales, new Function<Locale, String>() { final List<String> display = transform(locales, Locale::getDisplayName);
@Override
public String apply(Locale input) {
return input.getDisplayName();
}
});
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setItems(display, new DialogInterface.OnClickListener() { .setItems(display, (dialogInterface, i) -> {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss(); dialogInterface.dismiss();
callback.onLocaleSelected(locales.get(i)); callback.onLocaleSelected(locales.get(i));
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();

@ -62,25 +62,15 @@ public class GeofenceService {
} }
public boolean synchronizeGeofences(final long taskId, Set<Geofence> geofences) { public boolean synchronizeGeofences(final long taskId, Set<Geofence> geofences) {
List<Metadata> metadata = newArrayList(transform(geofences, new Function<Geofence, Metadata>() { List<Metadata> metadata = newArrayList(transform(geofences, (Function<Geofence, Metadata>) geofence -> new Metadata() {{
@Override
public Metadata apply(final Geofence geofence) {
return new Metadata() {{
setKey(GeofenceFields.METADATA_KEY); setKey(GeofenceFields.METADATA_KEY);
setValue(GeofenceFields.PLACE, geofence.getName()); setValue(GeofenceFields.PLACE, geofence.getName());
setValue(GeofenceFields.LATITUDE, geofence.getLatitude()); setValue(GeofenceFields.LATITUDE, geofence.getLatitude());
setValue(GeofenceFields.LONGITUDE, geofence.getLongitude()); setValue(GeofenceFields.LONGITUDE, geofence.getLongitude());
setValue(GeofenceFields.RADIUS, geofence.getRadius()); setValue(GeofenceFields.RADIUS, geofence.getRadius());
}}; }}));
}
}));
boolean changed = synchronizeMetadata(taskId, metadata, new SynchronizeMetadataCallback() { boolean changed = synchronizeMetadata(taskId, metadata, m -> geofenceApi.cancel(new Geofence(m)));
@Override
public void beforeDeleteMetadata(Metadata m) {
geofenceApi.cancel(new Geofence(m));
}
});
if(changed) { if(changed) {
setupGeofences(taskId); setupGeofences(taskId);
@ -89,12 +79,7 @@ public class GeofenceService {
} }
private List<Geofence> toGeofences(List<Metadata> geofences) { private List<Geofence> toGeofences(List<Metadata> geofences) {
return newArrayList(transform(geofences, new Function<Metadata, Geofence>() { return newArrayList(transform(geofences, Geofence::new));
@Override
public Geofence apply(Metadata metadata) {
return new Geofence(metadata);
}
}));
} }
private List<Geofence> getActiveGeofences() { private List<Geofence> getActiveGeofences() {
@ -128,9 +113,7 @@ public class GeofenceService {
newMetadataValues.add(values); newMetadataValues.add(values);
} }
metadataDao.byTaskAndKey(taskId, GeofenceFields.METADATA_KEY, new Callback<Metadata>() { metadataDao.byTaskAndKey(taskId, GeofenceFields.METADATA_KEY, item -> {
@Override
public void apply(Metadata item) {
long id = item.getId(); long id = item.getId();
// clear item id when matching with incoming values // clear item id when matching with incoming values
@ -149,7 +132,6 @@ public class GeofenceService {
metadataDao.delete(id); metadataDao.delete(id);
dirty[0] = true; dirty[0] = true;
} }
}
}); });
// everything that remains shall be written // everything that remains shall be written

@ -46,24 +46,18 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
setExtraOnChange(R.string.p_show_today_filter, EXTRA_FILTERS_CHANGED); setExtraOnChange(R.string.p_show_today_filter, EXTRA_FILTERS_CHANGED);
setExtraOnChange(R.string.p_show_recently_modified_filter, EXTRA_FILTERS_CHANGED); setExtraOnChange(R.string.p_show_recently_modified_filter, EXTRA_FILTERS_CHANGED);
setExtraOnChange(R.string.p_show_not_in_list_filter, EXTRA_FILTERS_CHANGED); setExtraOnChange(R.string.p_show_not_in_list_filter, EXTRA_FILTERS_CHANGED);
findPreference(getString(R.string.customize_edit_screen)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.customize_edit_screen)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE); startActivityForResult(new Intent(AppearancePreferences.this, BeastModePreferences.class), REQUEST_CUSTOMIZE);
return true; return true;
}
}); });
Preference defaultList = findPreference(getString(R.string.p_default_list)); Preference defaultList = findPreference(getString(R.string.p_default_list));
Filter filter = defaultFilterProvider.getDefaultFilter(); Filter filter = defaultFilterProvider.getDefaultFilter();
defaultList.setSummary(filter.listingTitle); defaultList.setSummary(filter.listingTitle);
defaultList.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { defaultList.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(AppearancePreferences.this, FilterSelectionActivity.class) {{ startActivityForResult(new Intent(AppearancePreferences.this, FilterSelectionActivity.class) {{
putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true); putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
}}, REQUEST_DEFAULT_LIST); }}, REQUEST_DEFAULT_LIST);
return true; return true;
}
}); });
} }
@ -100,13 +94,10 @@ public class AppearancePreferences extends InjectingPreferenceActivity {
} }
private void setExtraOnChange(final int resId, final String extra) { private void setExtraOnChange(final int resId, final String extra) {
findPreference(getString(resId)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(resId)).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
tracker.reportEvent(Tracking.Events.SET_PREFERENCE, resId, newValue.toString()); tracker.reportEvent(Tracking.Events.SET_PREFERENCE, resId, newValue.toString());
result.putBoolean(extra, true); result.putBoolean(extra, true);
return true; return true;
}
}); });
} }

@ -31,22 +31,16 @@ public class BackupPreferences extends InjectingPreferenceActivity {
addPreferencesFromResource(R.xml.preferences_backup); addPreferencesFromResource(R.xml.preferences_backup);
getPref(R.string.backup_BAc_import).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { getPref(R.string.backup_BAc_import).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BackupPreferences.this, FileExplore.class) {{ startActivityForResult(new Intent(BackupPreferences.this, FileExplore.class) {{
putExtra(FileExplore.EXTRA_START_PATH, preferences.getBackupDirectory().getAbsolutePath()); putExtra(FileExplore.EXTRA_START_PATH, preferences.getBackupDirectory().getAbsolutePath());
}}, REQUEST_PICKER); }}, REQUEST_PICKER);
return false; return false;
}
}); });
getPref(R.string.backup_BAc_export).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { getPref(R.string.backup_BAc_export).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
newExportTasksDialog().show(getFragmentManager(), FRAG_TAG_EXPORT_TASKS); newExportTasksDialog().show(getFragmentManager(), FRAG_TAG_EXPORT_TASKS);
return false; return false;
}
}); });
initializeBackupDirectory(); initializeBackupDirectory();
@ -71,15 +65,12 @@ public class BackupPreferences extends InjectingPreferenceActivity {
} }
private void initializeBackupDirectory() { private void initializeBackupDirectory() {
findPreference(getString(R.string.p_backup_dir)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.p_backup_dir)).setOnPreferenceClickListener(p -> {
@Override
public boolean onPreferenceClick(Preference p) {
Intent filesDir = new Intent(BackupPreferences.this, FileExplore.class); Intent filesDir = new Intent(BackupPreferences.this, FileExplore.class);
filesDir.putExtra(FileExplore.EXTRA_DIRECTORY_MODE, true); filesDir.putExtra(FileExplore.EXTRA_DIRECTORY_MODE, true);
filesDir.putExtra(FileExplore.EXTRA_START_PATH, getBackupDirectory()); filesDir.putExtra(FileExplore.EXTRA_START_PATH, getBackupDirectory());
startActivityForResult(filesDir, REQUEST_CODE_BACKUP_DIR); startActivityForResult(filesDir, REQUEST_CODE_BACKUP_DIR);
return true; return true;
}
}); });
updateBackupDirectory(); updateBackupDirectory();
} }

@ -83,94 +83,68 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
Preference themePreference = findPreference(getString(R.string.p_theme)); Preference themePreference = findPreference(getString(R.string.p_theme));
themePreference.setSummary(themeBase.getName()); themePreference.setSummary(themeBase.getName());
themePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { themePreference.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{ startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{
putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.THEMES); putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.THEMES);
}}, REQUEST_THEME_PICKER); }}, REQUEST_THEME_PICKER);
return false; return false;
}
}); });
Preference colorPreference = findPreference(getString(R.string.p_theme_color)); Preference colorPreference = findPreference(getString(R.string.p_theme_color));
colorPreference.setSummary(themeColor.getName()); colorPreference.setSummary(themeColor.getName());
colorPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { colorPreference.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{ startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{
putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.COLORS); putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.COLORS);
}}, REQUEST_COLOR_PICKER); }}, REQUEST_COLOR_PICKER);
return false; return false;
}
}); });
Preference accentPreference = findPreference(getString(R.string.p_theme_accent)); Preference accentPreference = findPreference(getString(R.string.p_theme_accent));
accentPreference.setSummary(themeAccent.getName()); accentPreference.setSummary(themeAccent.getName());
accentPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { accentPreference.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{ startActivityForResult(new Intent(BasicPreferences.this, ColorPickerActivity.class) {{
putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.ACCENTS); putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerDialog.ColorPalette.ACCENTS);
}}, REQUEST_ACCENT_PICKER); }}, REQUEST_ACCENT_PICKER);
return false; return false;
}
}); });
Preference languagePreference = findPreference(getString(R.string.p_language)); Preference languagePreference = findPreference(getString(R.string.p_language));
updateLocale(); updateLocale();
languagePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { languagePreference.setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
newLocalePickerDialog() newLocalePickerDialog()
.show(getFragmentManager(), FRAG_TAG_LOCALE_PICKER); .show(getFragmentManager(), FRAG_TAG_LOCALE_PICKER);
return false; return false;
}
}); });
findPreference(getString(R.string.p_layout_direction)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(R.string.p_layout_direction)).setOnPreferenceChangeListener((preference, o) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
tracker.reportEvent(Tracking.Events.SET_PREFERENCE, R.string.p_layout_direction, o.toString()); tracker.reportEvent(Tracking.Events.SET_PREFERENCE, R.string.p_layout_direction, o.toString());
int newValue = Integer.parseInt((String) o); int newValue = Integer.parseInt((String) o);
if (locale.getDirectionality() != locale.withDirectionality(newValue).getDirectionality()) { if (locale.getDirectionality() != locale.withDirectionality(newValue).getDirectionality()) {
showRestartDialog(); showRestartDialog();
} }
return true; return true;
}
}); });
findPreference(getString(R.string.p_collect_statistics)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(R.string.p_collect_statistics)).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null) { if (newValue != null) {
tracker.setTrackingEnabled((boolean) newValue); tracker.setTrackingEnabled((boolean) newValue);
return true; return true;
} }
return false; return false;
}
}); });
getPref(R.string.TLA_menu_donate).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { getPref(R.string.TLA_menu_donate).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
if (BuildConfig.FLAVOR_store.equals("googleplay")) { if (BuildConfig.FLAVOR_store.equals("googleplay")) {
newDonationDialog().show(getFragmentManager(), FRAG_TAG_DONATION); newDonationDialog().show(getFragmentManager(), FRAG_TAG_DONATION);
} else { } else {
startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://tasks.org/donate"))); startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://tasks.org/donate")));
} }
return false; return false;
}
}); });
getPref(R.string.p_purchased_themes).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { getPref(R.string.p_purchased_themes).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_themes)) { if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_themes)) {
purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_themes), getString(R.string.p_purchased_themes), REQUEST_PURCHASE, BasicPreferences.this); purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_themes), getString(R.string.p_purchased_themes), REQUEST_PURCHASE, BasicPreferences.this);
} }
return false; return false;
}
}); });
getPref(R.string.p_tesla_unread_enabled).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { getPref(R.string.p_tesla_unread_enabled).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null) { if (newValue != null) {
if ((boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_tesla_unread)) { if ((boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_tesla_unread)) {
purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_tesla_unread), getString(R.string.p_purchased_tesla_unread), REQUEST_PURCHASE, BasicPreferences.this); purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_tesla_unread), getString(R.string.p_purchased_tesla_unread), REQUEST_PURCHASE, BasicPreferences.this);
@ -180,51 +154,38 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
} }
} }
return false; return false;
}
}); });
getPref(R.string.p_purchased_tasker).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { getPref(R.string.p_purchased_tasker).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_tasker)) { if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_tasker)) {
purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_tasker), getString(R.string.p_purchased_tasker), REQUEST_PURCHASE, BasicPreferences.this); purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_tasker), getString(R.string.p_purchased_tasker), REQUEST_PURCHASE, BasicPreferences.this);
} }
return false; return false;
}
}); });
getPref(R.string.p_purchased_dashclock).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { getPref(R.string.p_purchased_dashclock).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_dashclock)) { if (newValue != null && (boolean) newValue && !preferences.hasPurchase(R.string.p_purchased_dashclock)) {
purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_dashclock), getString(R.string.p_purchased_dashclock), REQUEST_PURCHASE, BasicPreferences.this); purchaseHelper.purchase(dialogBuilder, BasicPreferences.this, getString(R.string.sku_dashclock), getString(R.string.p_purchased_dashclock), REQUEST_PURCHASE, BasicPreferences.this);
} }
return false; return false;
}
}); });
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
addPreferencesFromResource(R.xml.preferences_debug); addPreferencesFromResource(R.xml.preferences_debug);
findPreference(getString(R.string.debug_unlock_purchases)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.debug_unlock_purchases)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
preferences.setBoolean(R.string.p_purchased_dashclock, true); preferences.setBoolean(R.string.p_purchased_dashclock, true);
preferences.setBoolean(R.string.p_purchased_tasker, true); preferences.setBoolean(R.string.p_purchased_tasker, true);
preferences.setBoolean(R.string.p_purchased_tesla_unread, true); preferences.setBoolean(R.string.p_purchased_tesla_unread, true);
preferences.setBoolean(R.string.p_purchased_themes, true); preferences.setBoolean(R.string.p_purchased_themes, true);
recreate(); recreate();
return true; return true;
}
}); });
findPreference(getString(R.string.debug_consume_purchases)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.debug_consume_purchases)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
purchaseHelper.consumePurchases(); purchaseHelper.consumePurchases();
recreate(); recreate();
return true; return true;
}
}); });
} }
@ -239,12 +200,9 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
} }
private void setupActivity(int key, final Class<?> target) { private void setupActivity(int key, final Class<?> target) {
findPreference(getString(key)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(key)).setOnPreferenceClickListener(preference -> {
@Override
public boolean onPreferenceClick(Preference preference) {
startActivityForResult(new Intent(BasicPreferences.this, target), RC_PREFS); startActivityForResult(new Intent(BasicPreferences.this, target), RC_PREFS);
return true; return true;
}
}); });
} }
@ -310,14 +268,9 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
private void showRestartDialog() { private void showRestartDialog() {
dialogBuilder.newDialog() dialogBuilder.newDialog()
.setMessage(R.string.restart_required) .setMessage(R.string.restart_required)
.setPositiveButton(R.string.restart_now, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.restart_now, (dialogInterface, i) -> ProcessPhoenix.triggerRebirth(BasicPreferences.this, new Intent(BasicPreferences.this, TaskListActivity.class) {{
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ProcessPhoenix.triggerRebirth(BasicPreferences.this, new Intent(BasicPreferences.this, TaskListActivity.class) {{
putExtra(TaskListActivity.OPEN_FILTER, (Filter) null); putExtra(TaskListActivity.OPEN_FILTER, (Filter) null);
}}); }}))
}
})
.setNegativeButton(R.string.restart_later, null) .setNegativeButton(R.string.restart_later, null)
.show(); .show();
} }
@ -339,9 +292,7 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
@Override @Override
public void purchaseCompleted(final boolean success, final String sku) { public void purchaseCompleted(final boolean success, final String sku) {
runOnUiThread(new Runnable() { runOnUiThread(() -> {
@Override
public void run() {
if (getString(R.string.sku_tasker).equals(sku)) { if (getString(R.string.sku_tasker).equals(sku)) {
((TwoStatePreference) getPref(R.string.p_purchased_tasker)).setChecked(success); ((TwoStatePreference) getPref(R.string.p_purchased_tasker)).setChecked(success);
} else if (getString(R.string.sku_tesla_unread).equals(sku)) { } else if (getString(R.string.sku_tesla_unread).equals(sku)) {
@ -353,7 +304,6 @@ public class BasicPreferences extends InjectingPreferenceActivity implements
} else { } else {
Timber.d("Unhandled sku: %s", sku); Timber.d("Unhandled sku: %s", sku);
} }
}
}); });
} }

@ -53,15 +53,12 @@ public class DateShortcutPreferences extends InjectingPreferenceActivity impleme
private void initializeTimePreference(final TimePreference preference, final int requestCode) { private void initializeTimePreference(final TimePreference preference, final int requestCode) {
preference.setOnPreferenceChangeListener(this); preference.setOnPreferenceChangeListener(this);
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { preference.setOnPreferenceClickListener(ignored -> {
@Override
public boolean onPreferenceClick(Preference ignored) {
final DateTime current = new DateTime().withMillisOfDay(preference.getMillisOfDay()); final DateTime current = new DateTime().withMillisOfDay(preference.getMillisOfDay());
startActivityForResult(new Intent(DateShortcutPreferences.this, TimePickerActivity.class) {{ startActivityForResult(new Intent(DateShortcutPreferences.this, TimePickerActivity.class) {{
putExtra(TimePickerActivity.EXTRA_TIMESTAMP, current.getMillis()); putExtra(TimePickerActivity.EXTRA_TIMESTAMP, current.getMillis());
}}, requestCode); }}, requestCode);
return true; return true;
}
}); });
} }

@ -84,15 +84,12 @@ public class MiscellaneousPreferences extends InjectingPreferenceActivity {
} }
private void initializeAttachmentDirectoryPreference() { private void initializeAttachmentDirectoryPreference() {
findPreference(getString(R.string.p_attachment_dir)).setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { findPreference(getString(R.string.p_attachment_dir)).setOnPreferenceClickListener(p -> {
@Override
public boolean onPreferenceClick(Preference p) {
Intent filesDir = new Intent(MiscellaneousPreferences.this, FileExplore.class); Intent filesDir = new Intent(MiscellaneousPreferences.this, FileExplore.class);
filesDir.putExtra(FileExplore.EXTRA_DIRECTORY_MODE, true); filesDir.putExtra(FileExplore.EXTRA_DIRECTORY_MODE, true);
filesDir.putExtra(FileExplore.EXTRA_START_PATH, getAttachmentDirectory()); filesDir.putExtra(FileExplore.EXTRA_START_PATH, getAttachmentDirectory());
startActivityForResult(filesDir, REQUEST_CODE_FILES_DIR); startActivityForResult(filesDir, REQUEST_CODE_FILES_DIR);
return true; return true;
}
}); });
updateAttachmentDirectory(); updateAttachmentDirectory();
} }
@ -108,9 +105,7 @@ public class MiscellaneousPreferences extends InjectingPreferenceActivity {
private void initializeCalendarReminderPreference() { private void initializeCalendarReminderPreference() {
CheckBoxPreference calendarReminderPreference = (CheckBoxPreference) findPreference(getString(R.string.p_calendar_reminders)); CheckBoxPreference calendarReminderPreference = (CheckBoxPreference) findPreference(getString(R.string.p_calendar_reminders));
calendarReminderPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { calendarReminderPreference.setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue == null) { if (newValue == null) {
return false; return false;
} }
@ -122,15 +117,12 @@ public class MiscellaneousPreferences extends InjectingPreferenceActivity {
return true; return true;
} }
return false; return false;
}
}); });
calendarReminderPreference.setChecked(calendarReminderPreference.isChecked() && permissionChecker.canAccessCalendars()); calendarReminderPreference.setChecked(calendarReminderPreference.isChecked() && permissionChecker.canAccessCalendars());
} }
private void initializeVoiceReminderPreference() { private void initializeVoiceReminderPreference() {
findPreference(getString(R.string.p_voiceRemindersEnabled)).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { findPreference(getString(R.string.p_voiceRemindersEnabled)).setOnPreferenceChangeListener((preference, newValue) -> {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean enabled = (boolean) newValue; boolean enabled = (boolean) newValue;
try { try {
if (enabled && !voiceOutputAssistant.isTTSInitialized()) { if (enabled && !voiceOutputAssistant.isTTSInitialized()) {
@ -146,7 +138,6 @@ public class MiscellaneousPreferences extends InjectingPreferenceActivity {
preferences.setBoolean(preference.getKey(), false); preferences.setBoolean(preference.getKey(), false);
} }
return true; return true;
}
}); });
} }

@ -35,15 +35,10 @@ public class ListNotificationReceiver extends InjectingBroadcastReceiver {
tracker.reportEvent(Tracking.Events.LEGACY_TASKER_TRIGGER); tracker.reportEvent(Tracking.Events.LEGACY_TASKER_TRIGGER);
executorService.execute(new Runnable() { executorService.execute(() -> notifier.triggerFilterNotification(
@Override
public void run() {
notifier.triggerFilterNotification(
intent.getStringExtra(EXTRA_FILTER_TITLE), intent.getStringExtra(EXTRA_FILTER_TITLE),
intent.getStringExtra(EXTRA_FILTER_QUERY), intent.getStringExtra(EXTRA_FILTER_QUERY),
intent.getStringExtra(EXTRA_FILTER_VALUES)); intent.getStringExtra(EXTRA_FILTER_VALUES)));
}
});
} }
@Override @Override

@ -72,13 +72,10 @@ public class RepeatConfirmationReceiver extends BroadcastReceiver {
String dueDateString = getRelativeDateAndTimeString(activity, newDueDate); String dueDateString = getRelativeDateAndTimeString(activity, newDueDate);
String snackbarText = activity.getString(R.string.repeat_snackbar, task.getTitle(), dueDateString); String snackbarText = activity.getString(R.string.repeat_snackbar, task.getTitle(), dueDateString);
taskListFragment.makeSnackbar(snackbarText) taskListFragment.makeSnackbar(snackbarText)
.setAction(R.string.DLG_undo, new View.OnClickListener() { .setAction(R.string.DLG_undo, v -> {
@Override
public void onClick(View v) {
task.setDueDateAdjustingHideUntil(oldDueDate); task.setDueDateAdjustingHideUntil(oldDueDate);
task.setCompletionDate(0L); task.setCompletionDate(0L);
taskService.save(task); taskService.save(task);
}
}) })
.show(); .show();
} }

@ -25,14 +25,9 @@ public class TaskNotificationReceiver extends InjectingBroadcastReceiver {
public void onReceive(Context context, final Intent intent) { public void onReceive(Context context, final Intent intent) {
super.onReceive(context, intent); super.onReceive(context, intent);
executorService.execute(new Runnable() { executorService.execute(() -> notifier.triggerTaskNotification(
@Override
public void run() {
notifier.triggerTaskNotification(
intent.getLongExtra(ID_KEY, 0), intent.getLongExtra(ID_KEY, 0),
intent.getIntExtra(EXTRAS_TYPE, (byte) 0)); intent.getIntExtra(EXTRAS_TYPE, (byte) 0)));
}
});
} }
@Override @Override

@ -49,9 +49,7 @@ public class MissedCallDialog extends InjectingDialogFragment {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setTitle(title) .setTitle(title)
.setItems(actions, new DialogInterface.OnClickListener() { .setItems(actions, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) { switch (which) {
case 0: case 0:
handler.callNow(); handler.callNow();
@ -63,7 +61,6 @@ public class MissedCallDialog extends InjectingDialogFragment {
handler.ignore(); handler.ignore();
break; break;
} }
}
}) })
.show(); .show();
} }

@ -50,9 +50,7 @@ public class NotificationDialog extends InjectingDialogFragment {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setTitle(title) .setTitle(title)
.setItems(items, new DialogInterface.OnClickListener() { .setItems(items, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) { switch (which) {
case 0: case 0:
handler.edit(); handler.edit();
@ -64,7 +62,6 @@ public class NotificationDialog extends InjectingDialogFragment {
handler.complete(); handler.complete();
break; break;
} }
}
}) })
.show(); .show();
} }

@ -46,9 +46,7 @@ public class SnoozeDialog extends InjectingDialogFragment {
return dialogBuilder.newDialog() return dialogBuilder.newDialog()
.setTitle(R.string.rmd_NoA_snooze) .setTitle(R.string.rmd_NoA_snooze)
.setItems(items, new DialogInterface.OnClickListener() { .setItems(items, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) { switch (which) {
case 0: case 0:
case 1: case 1:
@ -60,7 +58,6 @@ public class SnoozeDialog extends InjectingDialogFragment {
snoozeCallback.pickDateTime(); snoozeCallback.pickDateTime();
break; break;
} }
}
}) })
.show(); .show();
} }

@ -65,14 +65,11 @@ public class BackupIntentService extends MidnightIntentService {
} }
private void deleteOldBackups() { private void deleteOldBackups() {
FileFilter backupFileFilter = new FileFilter() { FileFilter backupFileFilter = file -> {
@Override
public boolean accept(File file) {
if (file.getName().matches(BACKUP_FILE_NAME_REGEX)) { if (file.getName().matches(BACKUP_FILE_NAME_REGEX)) {
return true; return true;
} }
return false; return false;
}
}; };
File astridDir = preferences.getBackupDirectory(); File astridDir = preferences.getBackupDirectory();
if(astridDir == null) { if(astridDir == null) {
@ -85,12 +82,7 @@ public class BackupIntentService extends MidnightIntentService {
return; return;
} }
Arrays.sort(files, new Comparator<File>() { Arrays.sort(files, (file1, file2) -> -Long.valueOf(file1.lastModified()).compareTo(file2.lastModified()));
@Override
public int compare(File file1, File file2) {
return -Long.valueOf(file1.lastModified()).compareTo(file2.lastModified());
}
});
for(int i = DAYS_TO_KEEP_BACKUP; i < files.length; i++) { for(int i = DAYS_TO_KEEP_BACKUP; i < files.length; i++) {
if(!files[i].delete()) { if(!files[i].delete()) {
Timber.i("Unable to delete: %s", files[i]); Timber.i("Unable to delete: %s", files[i]);

@ -41,12 +41,7 @@ public class RefreshScheduler {
Criterion criterion = Criterion.or( Criterion criterion = Criterion.or(
Criterion.and(Task.HIDE_UNTIL.gt(now), Task.HIDE_UNTIL.lt(midnight)), Criterion.and(Task.HIDE_UNTIL.gt(now), Task.HIDE_UNTIL.lt(midnight)),
Criterion.and(Task.DUE_DATE.gt(now), Task.DUE_DATE.lt(midnight))); Criterion.and(Task.DUE_DATE.gt(now), Task.DUE_DATE.lt(midnight)));
taskDao.selectActive(criterion, new Callback<Task>() { taskDao.selectActive(criterion, this::scheduleRefresh);
@Override
public void apply(Task task) {
scheduleRefresh(task);
}
});
} }
public void scheduleRefresh(Task task) { public void scheduleRefresh(Task task) {

@ -39,9 +39,7 @@ public class SyncExecutor {
} }
private Runnable wrapWithExceptionHandling(final SyncResultCallback callback, final Runnable command) { private Runnable wrapWithExceptionHandling(final SyncResultCallback callback, final Runnable command) {
return new Runnable() { return () -> {
@Override
public void run() {
try { try {
command.run(); command.run();
} catch (Exception e) { } catch (Exception e) {
@ -50,7 +48,6 @@ public class SyncExecutor {
executor.shutdownNow(); executor.shutdownNow();
callback.finished(); callback.finished();
} }
}
}; };
} }
} }

@ -217,13 +217,10 @@ public class CalendarControlSet extends TaskEditControlFragment {
clear(); clear();
} else { } else {
dialogBuilder.newMessageDialog(R.string.delete_calendar_event_confirmation) dialogBuilder.newMessageDialog(R.string.delete_calendar_event_confirmation)
.setPositiveButton(R.string.delete, new DialogInterface.OnClickListener() { .setPositiveButton(R.string.delete, (dialog, which) -> {
@Override
public void onClick(DialogInterface dialog, int which) {
if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_CLEAR_EVENT)) { if (permissionRequestor.requestCalendarPermissions(REQUEST_CODE_CLEAR_EVENT)) {
clear(); clear();
} }
}
}) })
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save