Add CompleteTaskReceiver

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

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

@ -9,6 +9,7 @@ import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.service.TaskService;
import org.tasks.Broadcaster;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
@ -22,13 +23,9 @@ import javax.inject.Inject;
*/
public class NotificationFragment extends TaskListFragment {
// --- constants
/** task id from notification */
public static final String TOKEN_ID = "id"; //$NON-NLS-1$
// --- implementation
@Inject Broadcaster broadcaster;
@Inject TaskService taskService;
@Inject Preferences preferences;
@ -38,12 +35,9 @@ public class NotificationFragment extends TaskListFragment {
super.initializeData();
}
/**
* Set up the UI for this activity
*/
private void displayNotificationPopup() {
String title = extras.getString(Notifications.EXTRAS_TEXT);
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.service.TaskService;
import org.tasks.Broadcaster;
import org.tasks.R;
import org.tasks.preferences.Preferences;
@ -37,7 +38,7 @@ public class ReminderDialog extends Dialog {
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) {
super(activity, R.style.ReminderDialog);
this.preferences = preferences;
@ -87,10 +88,7 @@ public class ReminderDialog extends Dialog {
findViewById(R.id.reminder_complete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Task task = taskService.fetchById(taskId, Task.ID, Task.REMINDER_LAST);
if (task != null) {
taskService.setComplete(task, true);
}
broadcaster.completeTask(taskId);
dismiss();
}
});

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

@ -9,6 +9,7 @@ import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.utility.Constants;
import org.tasks.injection.ForApplication;
import org.tasks.receivers.CompleteTaskReceiver;
import org.tasks.receivers.FirstLaunchReceiver;
import javax.inject.Inject;
@ -26,6 +27,21 @@ public class Broadcaster {
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,
final String title, final String text, final int ringTimes) {
sendOrderedBroadcast(new Intent(BROADCAST_IN_APP_NOTIFY) {{

@ -14,6 +14,7 @@ import com.todoroo.astrid.timers.TimerTaskCompleteListener;
import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.receivers.BootCompletedReceiver;
import org.tasks.receivers.CompleteTaskReceiver;
import org.tasks.receivers.FirstLaunchReceiver;
import org.tasks.receivers.MyPackageReplacedReceiver;
import org.tasks.receivers.PackageReplacedReceiver;
@ -39,7 +40,8 @@ import dagger.Module;
FirstLaunchReceiver.class,
MyPackageReplacedReceiver.class,
PackageReplacedReceiver.class,
RefreshReceiver.class
RefreshReceiver.class,
CompleteTaskReceiver.class
})
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