From e66e252f62cc54033f525e3c5dee5457b5d79d93 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 30 Jul 2010 17:50:41 -0700 Subject: [PATCH] Timer control set pulled out now power pack window --- .../astrid/timers/TimerControlSet.java | 82 +++++++++++++ astrid/res/drawable/icon_pp.png | Bin 0 -> 15789 bytes astrid/res/layout/task_edit_activity.xml | 22 ---- astrid/res/layout/timer_control.xml | 28 +++++ astrid/res/values/strings-core.xml | 7 +- .../astrid/activity/TaskEditActivity.java | 55 ++------- .../astrid/activity/TaskListActivity.java | 55 +-------- .../todoroo/astrid/service/AddonService.java | 113 +++++++++++++++++- 8 files changed, 241 insertions(+), 121 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java create mode 100644 astrid/res/drawable/icon_pp.png create mode 100644 astrid/res/layout/timer_control.xml diff --git a/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java b/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java new file mode 100644 index 000000000..361f45dac --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java @@ -0,0 +1,82 @@ +package com.todoroo.astrid.timers; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import com.timsu.astrid.R; +import com.todoroo.andlib.data.Property.IntegerProperty; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.astrid.activity.TaskEditActivity.TaskEditControlSet; +import com.todoroo.astrid.model.Task; +import com.todoroo.astrid.ui.TimeDurationControlSet; +import com.todoroo.astrid.ui.TimeDurationControlSet.TimeDurationType; + +/** + * Control Set for managing repeats + * + * @author Tim Su + * + */ +public class TimerControlSet implements TaskEditControlSet { + + private final Activity activity; + + TaskEditControlSet estimated, elapsed; + + public TimerControlSet(final Activity activity, ViewGroup parent) { + DependencyInjectionService.getInstance().inject(this); + + this.activity = activity; + LayoutInflater.from(activity).inflate(R.layout.gcal_control, parent, true); + + estimated = new TimeDurationTaskEditControlSet(Task.ESTIMATED_SECONDS, + R.id.estimatedDuration, 0, R.string.DLG_hour_minutes, + TimeDurationType.HOURS_MINUTES); + elapsed = new TimeDurationTaskEditControlSet(Task.ELAPSED_SECONDS, R.id.elapsedDuration, + 0, R.string.DLG_hour_minutes, + TimeDurationType.HOURS_MINUTES); + } + + @Override + public void readFromTask(Task task) { + estimated.readFromTask(task); + elapsed.readFromTask(task); + } + + @Override + public void writeToModel(Task task) { + estimated.writeToModel(task); + elapsed.writeToModel(task); + } + + // --- TimeDurationTaskEditControlSet + + /** + * Control set for mapping a Property to a TimeDurationControlSet + * @author Tim Su + * + */ + public class TimeDurationTaskEditControlSet implements TaskEditControlSet { + private final TimeDurationControlSet controlSet; + private final IntegerProperty property; + + public TimeDurationTaskEditControlSet(IntegerProperty property, int timeButtonId, + int prefixResource, int titleResource, TimeDurationType type) { + this.property = property; + this.controlSet = new TimeDurationControlSet(activity, + timeButtonId, prefixResource, titleResource, type); + } + + @Override + public void readFromTask(Task task) { + controlSet.setTimeDuration(task.getValue(property)); + } + + @Override + public void writeToModel(Task task) { + task.setValue(property, controlSet.getTimeDurationInSeconds()); + } + } + +} \ No newline at end of file diff --git a/astrid/res/drawable/icon_pp.png b/astrid/res/drawable/icon_pp.png new file mode 100644 index 0000000000000000000000000000000000000000..df0637a7ad70e3b401e2908bcb2fcb16066871be GIT binary patch literal 15789 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 - - - -