Add CompleteTaskReceiver

pull/253/head
Alex Baker 9 years ago
parent 31647f11fd
commit 839a3e58c7

@ -475,6 +475,7 @@
</receiver> </receiver>
<receiver android:name=".receivers.FirstLaunchReceiver"/> <receiver android:name=".receivers.FirstLaunchReceiver"/>
<receiver android:name=".receivers.CompleteTaskReceiver"/>
<receiver <receiver
android:name=".receivers.PackageReplacedReceiver" android:name=".receivers.PackageReplacedReceiver"

@ -9,6 +9,7 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.Broadcaster;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import javax.inject.Inject; import javax.inject.Inject;
@ -22,13 +23,9 @@ import javax.inject.Inject;
*/ */
public class NotificationFragment extends TaskListFragment { public class NotificationFragment extends TaskListFragment {
// --- constants
/** task id from notification */
public static final String TOKEN_ID = "id"; //$NON-NLS-1$ public static final String TOKEN_ID = "id"; //$NON-NLS-1$
// --- implementation @Inject Broadcaster broadcaster;
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject Preferences preferences; @Inject Preferences preferences;
@ -38,12 +35,9 @@ public class NotificationFragment extends TaskListFragment {
super.initializeData(); super.initializeData();
} }
/**
* Set up the UI for this activity
*/
private void displayNotificationPopup() { private void displayNotificationPopup() {
String title = extras.getString(Notifications.EXTRAS_TEXT); String title = extras.getString(Notifications.EXTRAS_TEXT);
long taskId = extras.getLong(TOKEN_ID); long taskId = extras.getLong(TOKEN_ID);
new ReminderDialog(preferences, taskService, (AstridActivity) getActivity(), taskId, title).show(); new ReminderDialog(preferences, broadcaster, taskService, (AstridActivity) getActivity(), taskId, title).show();
} }
} }

@ -20,6 +20,7 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -37,7 +38,7 @@ public class ReminderDialog extends Dialog {
private final Preferences preferences; private final Preferences preferences;
public ReminderDialog(Preferences preferences, final TaskService taskService, final AstridActivity activity, final long taskId, public ReminderDialog(Preferences preferences, final Broadcaster broadcaster, final TaskService taskService, final AstridActivity activity, final long taskId,
String title) { String title) {
super(activity, R.style.ReminderDialog); super(activity, R.style.ReminderDialog);
this.preferences = preferences; this.preferences = preferences;
@ -87,10 +88,7 @@ public class ReminderDialog extends Dialog {
findViewById(R.id.reminder_complete).setOnClickListener(new View.OnClickListener() { findViewById(R.id.reminder_complete).setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View arg0) { public void onClick(View arg0) {
Task task = taskService.fetchById(taskId, Task.ID, Task.REMINDER_LAST); broadcaster.completeTask(taskId);
if (task != null) {
taskService.setComplete(task, true);
}
dismiss(); dismiss();
} }
}); });

@ -16,11 +16,10 @@ import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskEditActivity; import com.todoroo.astrid.activity.TaskEditActivity;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.injection.InjectingAppWidgetProvider; import org.tasks.injection.InjectingAppWidgetProvider;
import org.tasks.preferences.ActivityPreferences; import org.tasks.preferences.ActivityPreferences;
@ -35,7 +34,7 @@ public class TasksWidget extends InjectingAppWidgetProvider {
private static final Logger log = LoggerFactory.getLogger(TasksWidget.class); private static final Logger log = LoggerFactory.getLogger(TasksWidget.class);
@Inject TaskService taskService; @Inject Broadcaster broadcaster;
@Inject WidgetHelper widgetHelper; @Inject WidgetHelper widgetHelper;
public static final String COMPLETE_TASK = "COMPLETE_TASK"; public static final String COMPLETE_TASK = "COMPLETE_TASK";
@ -50,8 +49,7 @@ public class TasksWidget extends InjectingAppWidgetProvider {
switch(intent.getAction()) { switch(intent.getAction()) {
case COMPLETE_TASK: case COMPLETE_TASK:
Task task = taskService.fetchById(intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0), Task.ID, Task.COMPLETION_DATE); broadcaster.flipCompleteState(intent.getLongExtra(TaskEditFragment.TOKEN_ID, 0));
taskService.setComplete(task, !task.isCompleted());
break; break;
case EDIT_TASK: case EDIT_TASK:
if(ActivityPreferences.isTabletSized(context)) { if(ActivityPreferences.isTabletSized(context)) {

@ -9,6 +9,7 @@ import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import org.tasks.injection.ForApplication; import org.tasks.injection.ForApplication;
import org.tasks.receivers.CompleteTaskReceiver;
import org.tasks.receivers.FirstLaunchReceiver; import org.tasks.receivers.FirstLaunchReceiver;
import javax.inject.Inject; import javax.inject.Inject;
@ -26,6 +27,21 @@ public class Broadcaster {
this.context = context; this.context = context;
} }
public void flipCompleteState(long taskId) {
completeTask(taskId, true);
}
public void completeTask(long taskId) {
completeTask(taskId, false);
}
private void completeTask(final long taskId, final boolean flipState) {
sendOrderedBroadcast(new Intent(context, CompleteTaskReceiver.class) {{
putExtra(CompleteTaskReceiver.TASK_ID, taskId);
putExtra(CompleteTaskReceiver.FLIP_STATE, flipState);
}});
}
public void requestNotification(final long taskId, final Intent intent, final int type, public void requestNotification(final long taskId, final Intent intent, final int type,
final String title, final String text, final int ringTimes) { final String title, final String text, final int ringTimes) {
sendOrderedBroadcast(new Intent(BROADCAST_IN_APP_NOTIFY) {{ sendOrderedBroadcast(new Intent(BROADCAST_IN_APP_NOTIFY) {{

@ -14,6 +14,7 @@ import com.todoroo.astrid.timers.TimerTaskCompleteListener;
import com.todoroo.astrid.widget.TasksWidget; import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.receivers.BootCompletedReceiver; import org.tasks.receivers.BootCompletedReceiver;
import org.tasks.receivers.CompleteTaskReceiver;
import org.tasks.receivers.FirstLaunchReceiver; import org.tasks.receivers.FirstLaunchReceiver;
import org.tasks.receivers.MyPackageReplacedReceiver; import org.tasks.receivers.MyPackageReplacedReceiver;
import org.tasks.receivers.PackageReplacedReceiver; import org.tasks.receivers.PackageReplacedReceiver;
@ -39,7 +40,8 @@ import dagger.Module;
FirstLaunchReceiver.class, FirstLaunchReceiver.class,
MyPackageReplacedReceiver.class, MyPackageReplacedReceiver.class,
PackageReplacedReceiver.class, PackageReplacedReceiver.class,
RefreshReceiver.class RefreshReceiver.class,
CompleteTaskReceiver.class
}) })
public class BroadcastModule { public class BroadcastModule {
} }

@ -0,0 +1,34 @@
package org.tasks.receivers;
import android.content.Context;
import android.content.Intent;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.injection.InjectingBroadcastReceiver;
import javax.inject.Inject;
public class CompleteTaskReceiver extends InjectingBroadcastReceiver {
private static final Logger log = LoggerFactory.getLogger(CompleteTaskReceiver.class);
public static final String TASK_ID = "id";
public static final String FLIP_STATE = "flip_state";
@Inject TaskService taskService;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
long taskId = intent.getLongExtra(TASK_ID, 0);
boolean flipState = intent.getBooleanExtra(FLIP_STATE, false);
log.info("Completing {}", taskId);
Task task = taskService.fetchById(taskId, Task.ID, Task.COMPLETION_DATE);
taskService.setComplete(task, !flipState || !task.isCompleted());
}
}
Loading…
Cancel
Save