From 7fd11fd0946dc9c5083ff1cd80812d7788fa6e2b Mon Sep 17 00:00:00 2001 From: Andrew Shaw Date: Wed, 25 Jan 2012 14:10:24 -0800 Subject: [PATCH 1/6] Comments sync menu button added and added timer controls to comment bar --- .../astrid/notes/EditNoteActivity.java | 51 +++++++++++- .../astrid/timers/TimerActionControlSet.java | 34 +++++--- .../astrid/timers/TimerControlSet.java | 5 ++ astrid/res/layout/control_set_title.xml | 35 -------- astrid/res/layout/task_edit_activity.xml | 34 +++++++- astrid/res/values/strings-timers.xml | 10 +++ .../astrid/activity/TaskEditActivity.java | 81 +++++++++++++++---- 7 files changed, 183 insertions(+), 67 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java index 8b10441a0..f02f41962 100644 --- a/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/notes/EditNoteActivity.java @@ -5,6 +5,7 @@ import greendroid.widget.AsyncImageView; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -50,9 +51,10 @@ import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.SyncV2Service.SyncResultCallback; +import com.todoroo.astrid.timers.TimerActionControlSet.TimerStoppedListener; import com.todoroo.astrid.utility.Flags; -public class EditNoteActivity extends LinearLayout { +public class EditNoteActivity extends LinearLayout implements TimerStoppedListener { @@ -71,6 +73,8 @@ public class EditNoteActivity extends LinearLayout { private TextView loadingText; private final View commentsBar; private final View parentView; + private View timerView; + private View commentButton; private int commentItems = 10; private final List listeners = new LinkedList(); @@ -124,7 +128,10 @@ public class EditNoteActivity extends LinearLayout { // --- UI preparation private void setUpInterface() { - final View commentButton = commentsBar.findViewById(R.id.commentButton); + + + timerView = commentsBar.findViewById(R.id.timer_container); + commentButton = commentsBar.findViewById(R.id.commentButton); commentField = (EditText) commentsBar.findViewById(R.id.commentField); commentField.setOnEditorActionListener(new OnEditorActionListener() { @Override @@ -140,6 +147,7 @@ public class EditNoteActivity extends LinearLayout { @Override public void afterTextChanged(Editable s) { commentButton.setVisibility((s.length() > 0) ? View.VISIBLE : View.GONE); + timerView.setVisibility((s.length() > 0) ? View.GONE : View.VISIBLE); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -150,6 +158,21 @@ public class EditNoteActivity extends LinearLayout { // } }); + + commentField.setOnFocusChangeListener(new OnFocusChangeListener() { + + @Override + public void onFocusChange(View v, boolean hasFocus) { + if (hasFocus) { + timerView.setVisibility(View.GONE); + commentButton.setVisibility(View.VISIBLE); + } + else { + timerView.setVisibility(View.VISIBLE); + commentButton.setVisibility(View.GONE); + } + } + }); commentButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -168,6 +191,7 @@ public class EditNoteActivity extends LinearLayout { //TODO add loading text back in // loadingText = (TextView) findViewById(R.id.loading); loadingText = new TextView(getContext()); + } private void setUpListAdapter() { @@ -349,9 +373,12 @@ public class EditNoteActivity extends LinearLayout { } private void addComment() { + addComment(commentField.getText().toString(), "task_comment"); //$NON-NLS-1$ + } + private void addComment(String message, String actionCode) { Update update = new Update(); - update.setValue(Update.MESSAGE, commentField.getText().toString()); - update.setValue(Update.ACTION_CODE, "task_comment"); //$NON-NLS-1$ + update.setValue(Update.MESSAGE, message); + update.setValue(Update.ACTION_CODE, actionCode); update.setValue(Update.USER_ID, 0L); update.setValue(Update.TASK, task.getValue(Task.REMOTE_ID)); update.setValue(Update.CREATION_DATE, DateUtilities.now()); @@ -452,4 +479,20 @@ public class EditNoteActivity extends LinearLayout { if (listeners.contains(listener)) listeners.remove(listener); } + + @Override + public void timerStarted(Task task) { + // TODO Auto-generated method stub + addComment(getContext().getString(R.string.TEA_timer_comment_started) + " " + DateUtilities.getTimeString(getContext(), new Date()), "task_started"); //$NON-NLS-1$ + + } + + @Override + public void timerStopped(Task task) { + // TODO Auto-generated method stub + String elapsedTime = DateUtils.formatElapsedTime(task.getValue(Task.ELAPSED_SECONDS)); + addComment(getContext().getString(R.string.TEA_timer_comment_stopped) + " " + + DateUtilities.getTimeString(getContext(), new Date()) + "\n" + getContext().getString(R.string.TEA_timer_comment_spent) + " " + elapsedTime, "task_stopped"); //$NON-NLS-1$ + + } } diff --git a/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionControlSet.java b/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionControlSet.java index e6f9000db..0ba910e1b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/timers/TimerActionControlSet.java @@ -1,13 +1,14 @@ package com.todoroo.astrid.timers; +import java.util.LinkedList; +import java.util.List; + 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; @@ -18,20 +19,21 @@ public class TimerActionControlSet extends TaskEditControlSet { private final Button timerButton; private final Chronometer chronometer; - private final TextView timerLabel; + private final View timerContainer; private boolean timerActive; private final Activity activity; private Task task; - private TimerStoppedListener listener; + private final List listeners = new LinkedList(); public TimerActionControlSet(Activity activity, View parent) { super(activity, -1); this.activity = activity; timerButton = (Button) parent.findViewById(R.id.timer_button); - timerButton.setOnClickListener(timerListener); + + timerContainer = (View) parent.findViewById(R.id.timer_container); + timerContainer.setOnClickListener(timerListener); chronometer = (Chronometer) parent.findViewById(R.id.timer); - timerLabel = (TextView) parent.findViewById(R.id.timer_label); } @Override @@ -58,11 +60,14 @@ public class TimerActionControlSet extends TaskEditControlSet { public void onClick(View v) { if (timerActive) { TimerPlugin.updateTimer(activity, task, false); - if (listener != null) + + for(TimerStoppedListener listener : listeners) listener.timerStopped(task); chronometer.stop(); } else { TimerPlugin.updateTimer(activity, task, true); + for(TimerStoppedListener listener : listeners) + listener.timerStarted(task); chronometer.start(); } timerActive = !timerActive; @@ -86,23 +91,26 @@ public class TimerActionControlSet extends TaskEditControlSet { 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.setVisibility(View.INVISIBLE); chronometer.stop(); } } public interface TimerStoppedListener { public void timerStopped(Task task); + public void timerStarted(Task task); + } + + public void addListener(TimerStoppedListener listener) { + this.listeners.add(listener); } - public void setListener(TimerStoppedListener listener) { - this.listener = listener; + public void removeListener(TimerStoppedListener listener) { + if (listeners.contains(listener)) + listeners.remove(listener); } } diff --git a/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java b/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java index b4d078d9d..6f2a424d1 100644 --- a/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java +++ b/astrid/plugin-src/com/todoroo/astrid/timers/TimerControlSet.java @@ -87,4 +87,9 @@ public class TimerControlSet extends PopupControlSet implements TimerStoppedList elapsed.readFromTask(task); } + @Override + public void timerStarted(Task task) { + return; + } + } \ No newline at end of file diff --git a/astrid/res/layout/control_set_title.xml b/astrid/res/layout/control_set_title.xml index fe361137f..7736c9ad9 100644 --- a/astrid/res/layout/control_set_title.xml +++ b/astrid/res/layout/control_set_title.xml @@ -51,40 +51,5 @@ android:freezesText="true"/> - - - -