/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.timers; import android.app.Activity; import android.text.TextUtils; import android.text.format.DateUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.timsu.astrid.R; import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.helper.TaskEditControlSet; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.timers.TimerActionControlSet.TimerActionListener; import com.todoroo.astrid.ui.PopupControlSet; import com.todoroo.astrid.ui.TimeDurationControlSet; /** * Control Set for managing repeats * * @author Tim Su <tim@todoroo.com> * */ public class TimerControlSet extends PopupControlSet implements TimerActionListener { TimeDurationTaskEditControlSet estimated, elapsed; private final TextView displayEdit; private final ImageView image; public TimerControlSet(final Activity activity, int viewLayout, int displayViewLayout, int title) { super(activity, viewLayout, displayViewLayout, title); displayEdit = (TextView) getDisplayView().findViewById(R.id.display_row_edit); displayEdit.setText(R.string.TEA_timer_controls); displayEdit.setTextColor(unsetColor); image = (ImageView) getDisplayView().findViewById(R.id.display_row_icon); estimated = new TimeDurationTaskEditControlSet(activity, getView(), Task.ESTIMATED_SECONDS, R.id.estimatedDuration, 0, R.string.DLG_hour_minutes ); elapsed = new TimeDurationTaskEditControlSet(activity, getView(), Task.ELAPSED_SECONDS, R.id.elapsedDuration, 0, R.string.DLG_hour_minutes ); } @Override protected void readFromTaskOnInitialize() { estimated.readFromTask(model); elapsed.readFromTask(model); } @Override protected void afterInflate() { // Nothing to do here } @Override protected String writeToModelAfterInitialized(Task task) { if (initialized) { estimated.writeToModel(task); elapsed.writeToModel(task); } return null; } // --- TimeDurationTaskEditControlSet /** * Control set for mapping a Property to a TimeDurationControlSet * @author Tim Su <tim@todoroo.com> * */ public class TimeDurationTaskEditControlSet extends TaskEditControlSet { private final TimeDurationControlSet controlSet; private final IntegerProperty property; public TimeDurationTaskEditControlSet(Activity activity, View v, IntegerProperty property, int timeButtonId, int prefixResource, int titleResource) { super(activity, -1); this.property = property; this.controlSet = new TimeDurationControlSet(activity, v, property, timeButtonId, prefixResource, titleResource); } @Override public void readFromTaskOnInitialize() { controlSet.setModel(model); controlSet.setTimeDuration(model.getValue(property)); } @Override protected void afterInflate() { // Nothing } @Override protected String writeToModelAfterInitialized(Task task) { task.setValue(property, controlSet.getTimeDurationInSeconds()); return null; } public String getDisplayString() { int seconds = controlSet.getTimeDurationInSeconds(); if (seconds > 0) return DateUtils.formatElapsedTime(controlSet.getTimeDurationInSeconds()); return null; } } @Override protected void refreshDisplayView() { String est = estimated.getDisplayString(); if (!TextUtils.isEmpty(est)) est = activity.getString(R.string.TEA_timer_est, est); String elap = elapsed.getDisplayString(); if (!TextUtils.isEmpty(elap)) elap = activity.getString(R.string.TEA_timer_elap, elap); String toDisplay; if (!TextUtils.isEmpty(est) && !TextUtils.isEmpty(elap)) toDisplay = est + ", " + elap; //$NON-NLS-1$ else if (!TextUtils.isEmpty(est)) toDisplay = est; else if (!TextUtils.isEmpty(elap)) toDisplay = elap; else toDisplay = null; if (!TextUtils.isEmpty(toDisplay)) { displayEdit.setText(toDisplay); displayEdit.setTextColor(themeColor); image.setImageResource(ThemeService.getTaskEditDrawable(R.drawable.tea_icn_timer, R.drawable.tea_icn_timer_lightblue)); } else { displayEdit.setText(R.string.TEA_timer_controls); displayEdit.setTextColor(unsetColor); image.setImageResource(R.drawable.tea_icn_timer_gray); } } @Override public void timerStopped(Task task) { elapsed.readFromTask(task); } @Override public void timerStarted(Task task) { return; } }