|
|
|
@ -1,27 +1,37 @@
|
|
|
|
|
package com.todoroo.astrid.timers;
|
|
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
|
|
import android.os.SystemClock;
|
|
|
|
|
import android.text.format.DateUtils;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.view.View.OnClickListener;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.Chronometer;
|
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
|
|
import com.timsu.astrid.R;
|
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
|
import com.todoroo.astrid.data.Task;
|
|
|
|
|
import com.todoroo.astrid.helper.TaskEditControlSet;
|
|
|
|
|
|
|
|
|
|
public class TimerActionControlSet extends TaskEditControlSet {
|
|
|
|
|
|
|
|
|
|
private final Button timerButton;
|
|
|
|
|
private final Chronometer chronometer;
|
|
|
|
|
private final TextView timerLabel;
|
|
|
|
|
private boolean timerActive;
|
|
|
|
|
private final Activity activity;
|
|
|
|
|
private Task task;
|
|
|
|
|
private TimerStoppedListener listener;
|
|
|
|
|
|
|
|
|
|
public TimerActionControlSet(Activity activity, View buttonParent) {
|
|
|
|
|
public TimerActionControlSet(Activity activity, View parent) {
|
|
|
|
|
super(activity, -1);
|
|
|
|
|
this.activity = activity;
|
|
|
|
|
timerButton = (Button) buttonParent.findViewById(R.id.timer_button);
|
|
|
|
|
timerButton = (Button) parent.findViewById(R.id.timer_button);
|
|
|
|
|
timerButton.setOnClickListener(timerListener);
|
|
|
|
|
|
|
|
|
|
chronometer = (Chronometer) parent.findViewById(R.id.timer);
|
|
|
|
|
timerLabel = (TextView) parent.findViewById(R.id.timer_label);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -31,6 +41,7 @@ public class TimerActionControlSet extends TaskEditControlSet {
|
|
|
|
|
timerActive = false;
|
|
|
|
|
else
|
|
|
|
|
timerActive = true;
|
|
|
|
|
|
|
|
|
|
this.task = task;
|
|
|
|
|
updateDisplay();
|
|
|
|
|
}
|
|
|
|
@ -49,8 +60,10 @@ public class TimerActionControlSet extends TaskEditControlSet {
|
|
|
|
|
TimerPlugin.updateTimer(activity, task, false);
|
|
|
|
|
if (listener != null)
|
|
|
|
|
listener.timerStopped(task);
|
|
|
|
|
chronometer.stop();
|
|
|
|
|
} else {
|
|
|
|
|
TimerPlugin.updateTimer(activity, task, true);
|
|
|
|
|
chronometer.start();
|
|
|
|
|
}
|
|
|
|
|
timerActive = !timerActive;
|
|
|
|
|
updateDisplay();
|
|
|
|
@ -67,8 +80,22 @@ public class TimerActionControlSet extends TaskEditControlSet {
|
|
|
|
|
else
|
|
|
|
|
drawable = R.drawable.icn_timer_start;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
timerButton.setBackgroundResource(drawable);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long elapsed = task.getValue(Task.ELAPSED_SECONDS) * 1000L;
|
|
|
|
|
if (timerActive) {
|
|
|
|
|
chronometer.setVisibility(View.VISIBLE);
|
|
|
|
|
timerLabel.setVisibility(View.GONE);
|
|
|
|
|
elapsed += DateUtilities.now() - task.getValue(Task.TIMER_START);
|
|
|
|
|
chronometer.setBase(SystemClock.elapsedRealtime() - elapsed);
|
|
|
|
|
chronometer.start();
|
|
|
|
|
} else {
|
|
|
|
|
chronometer.setVisibility(View.GONE);
|
|
|
|
|
timerLabel.setVisibility(View.VISIBLE);
|
|
|
|
|
timerLabel.setText(DateUtils.formatElapsedTime(elapsed / 1000L));
|
|
|
|
|
chronometer.stop();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public interface TimerStoppedListener {
|
|
|
|
|