Inject TimerPlugin

pull/467/head
Alex Baker 9 years ago
parent baf8e91f49
commit ffbda78f2d

@ -37,7 +37,6 @@ import com.todoroo.astrid.utility.Flags;
import org.tasks.Broadcaster; import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.fragments.TaskEditControlSetFragmentManager;
import org.tasks.injection.ForActivity; import org.tasks.injection.ForActivity;
@ -88,6 +87,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject Tracker tracker; @Inject Tracker tracker;
@Inject Broadcaster broadcaster; @Inject Broadcaster broadcaster;
@Inject TimerPlugin timerPlugin;
@BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.comments) LinearLayout comments; @BindView(R.id.comments) LinearLayout comments;
@ -176,7 +176,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
} }
public Task stopTimer() { public Task stopTimer() {
TimerPlugin.stopTimer(notificationManager, taskService, context, model); timerPlugin.stopTimer(model);
String elapsedTime = DateUtils.formatElapsedTime(model.getElapsedSeconds()); String elapsedTime = DateUtils.formatElapsedTime(model.getElapsedSeconds());
addComment(String.format("%s %s\n%s %s", //$NON-NLS-1$ addComment(String.format("%s %s\n%s %s", //$NON-NLS-1$
getString(R.string.TEA_timer_comment_stopped), getString(R.string.TEA_timer_comment_stopped),
@ -188,8 +188,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
} }
public Task startTimer() { public Task startTimer() {
tracker.reportEvent(Tracking.Events.TIMER_START); timerPlugin.startTimer(model);
TimerPlugin.startTimer(notificationManager, taskService, context, model);
addComment(String.format("%s %s", addComment(String.format("%s %s",
getString(R.string.TEA_timer_comment_started), getString(R.string.TEA_timer_comment_started),
DateUtilities.getTimeString(getActivity(), newDateTime())), DateUtilities.getTimeString(getActivity(), newDateTime())),
@ -280,7 +279,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
public void discard() { public void discard() {
if (isNewTask) { if (isNewTask) {
TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model); timerPlugin.stopTimer(model);
taskDeleter.delete(model); taskDeleter.delete(model);
} }
@ -290,7 +289,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
private void deleteButtonClick() { private 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, (dialog, which) -> { .setPositiveButton(android.R.string.ok, (dialog, which) -> {
TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model); timerPlugin.stopTimer(model);
taskDeleter.delete(model); taskDeleter.delete(model);
callback.taskEditFinished(); callback.taskEditFinished();
}) })

@ -133,6 +133,7 @@ public class TaskListFragment extends InjectingListFragment implements
@Inject TagService tagService; @Inject TagService tagService;
@Inject ThemeCache themeCache; @Inject ThemeCache themeCache;
@Inject protected TaskListDataProvider taskListDataProvider; @Inject protected TaskListDataProvider taskListDataProvider;
@Inject TimerPlugin timerPlugin;
@BindView(R.id.swipe_layout) SwipeRefreshLayout swipeRefreshLayout; @BindView(R.id.swipe_layout) SwipeRefreshLayout swipeRefreshLayout;
@BindView(R.id.swipe_layout_empty) SwipeRefreshLayout emptyView; @BindView(R.id.swipe_layout_empty) SwipeRefreshLayout emptyView;
@ -599,7 +600,7 @@ public class TaskListFragment extends InjectingListFragment implements
tef.discard(); tef.discard();
} }
} }
TimerPlugin.stopTimer(notificationManager, taskService, context, task); timerPlugin.stopTimer(task);
} }
@Override @Override

@ -20,26 +20,46 @@ import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Constants;
import org.tasks.R; import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.analytics.Tracking;
import org.tasks.injection.ForApplication;
import org.tasks.intents.TaskIntents; import org.tasks.intents.TaskIntents;
import org.tasks.notifications.NotificationManager; import org.tasks.notifications.NotificationManager;
import javax.inject.Inject;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
public class TimerPlugin { public class TimerPlugin {
public static void startTimer(NotificationManager notificationManager, TaskService taskService, Context context, Task task) { private final Context context;
updateTimer(notificationManager, taskService, context, task, true); private final NotificationManager notificationManager;
private final TaskService taskService;
private final Tracker tracker;
@Inject
public TimerPlugin(@ForApplication Context context, NotificationManager notificationManager,
TaskService taskService, Tracker tracker) {
this.context = context;
this.notificationManager = notificationManager;
this.taskService = taskService;
this.tracker = tracker;
}
public void startTimer(Task task) {
tracker.reportEvent(Tracking.Events.TIMER_START);
updateTimer(task, true);
} }
public static void stopTimer(NotificationManager notificationManager, TaskService taskService, Context context, Task task) { public void stopTimer(Task task) {
updateTimer(notificationManager, taskService, context, task, false); updateTimer(task, false);
} }
/** /**
* toggles timer and updates elapsed time. * toggles timer and updates elapsed time.
* @param start if true, start timer. else, stop it * @param start if true, start timer. else, stop it
*/ */
private static void updateTimer(NotificationManager notificationManager, TaskService taskService, Context context, Task task, boolean start) { private void updateTimer(Task task, boolean start) {
if (task == null) { if (task == null) {
return; return;
} }
@ -67,10 +87,10 @@ public class TimerPlugin {
taskService.save(task); taskService.save(task);
// update notification // update notification
TimerPlugin.updateNotifications(notificationManager, taskService, context); updateNotifications();
} }
private static void updateNotifications(NotificationManager notificationManager, TaskService taskService, Context context) { private void updateNotifications() {
int count = taskService.count(Query.select(Task.ID). int count = taskService.count(Query.select(Task.ID).
where(Task.TIMER_START.gt(0))); where(Task.TIMER_START.gt(0)));
if(count == 0) { if(count == 0) {

@ -14,14 +14,13 @@ import com.todoroo.astrid.service.TaskService;
import org.tasks.injection.BroadcastComponent; import org.tasks.injection.BroadcastComponent;
import org.tasks.injection.InjectingBroadcastReceiver; import org.tasks.injection.InjectingBroadcastReceiver;
import org.tasks.notifications.NotificationManager;
import javax.inject.Inject; import javax.inject.Inject;
public class TimerTaskCompleteListener extends InjectingBroadcastReceiver { public class TimerTaskCompleteListener extends InjectingBroadcastReceiver {
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject NotificationManager notificationManager; @Inject TimerPlugin timerPlugin;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
@ -38,7 +37,7 @@ public class TimerTaskCompleteListener extends InjectingBroadcastReceiver {
return; return;
} }
TimerPlugin.stopTimer(notificationManager, taskService, context, task); timerPlugin.stopTimer(task);
} }
@Override @Override

Loading…
Cancel
Save