Fix for AST-212 - hide until specific time setting

pull/14/head
Tim Su 14 years ago
parent 3d6063b205
commit 12683dbee2

@ -213,10 +213,10 @@
<string name="TEA_urgency_label">Deadline</string> <string name="TEA_urgency_label">Deadline</string>
<!-- Task urgency specific time checkbox --> <!-- Task urgency specific time checkbox -->
<string name="TEA_urgency_specific_time">Due at specific time?</string> <string name="TEA_urgency_specific_time">At specific time?</string>
<!-- Task urgency specific time title when specific time false --> <!-- Task urgency specific time title when specific time false -->
<string name="TEA_urgency_time_none">No Due Time</string> <string name="TEA_urgency_time_none">No Time Set</string>
<!-- Task hide until label --> <!-- Task hide until label -->
<string name="TEA_hideUntil_label">Hide Until</string> <string name="TEA_hideUntil_label">Hide Until</string>
@ -270,7 +270,7 @@
<item>Task is due</item> <item>Task is due</item>
<item>Day before due</item> <item>Day before due</item>
<item>Week before due</item> <item>Week before due</item>
<item>Specific Day</item> <item>Specific Day/Time</item>
</string-array> </string-array>
<!-- Add Ons tab when no add-ons found --> <!-- Add Ons tab when no add-ons found -->

@ -27,15 +27,15 @@ import java.util.List;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TabActivity; import android.app.TabActivity;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.DialogInterface.OnCancelListener;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.text.format.DateUtils; import android.text.format.DateUtils;
@ -46,7 +46,6 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
@ -62,6 +61,7 @@ import android.widget.TextView;
import android.widget.TimePicker; import android.widget.TimePicker;
import android.widget.Toast; import android.widget.Toast;
import android.widget.ToggleButton; import android.widget.ToggleButton;
import android.widget.AdapterView.OnItemSelectedListener;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -740,7 +740,6 @@ public final class TaskEditActivity extends TabActivity {
private ArrayAdapter<UrgencyValue> urgencyAdapter; private ArrayAdapter<UrgencyValue> urgencyAdapter;
private int previousSetting = Task.URGENCY_NONE; private int previousSetting = Task.URGENCY_NONE;
private long existingDate = EXISTING_TIME_UNSET; private long existingDate = EXISTING_TIME_UNSET;
private int existingDateHour = EXISTING_TIME_UNSET; private int existingDateHour = EXISTING_TIME_UNSET;
private int existingDateMinutes = EXISTING_TIME_UNSET; private int existingDateMinutes = EXISTING_TIME_UNSET;
@ -948,12 +947,19 @@ public final class TaskEditActivity extends TabActivity {
* *
*/ */
private class HideUntilControlSet implements TaskEditControlSet, private class HideUntilControlSet implements TaskEditControlSet,
OnItemSelectedListener, OnDateSetListener, OnCancelListener { OnItemSelectedListener, OnDateSetListener, OnCancelListener,
OnDeadlineTimeSetListener {
private static final int SPECIFIC_DATE = -1; private static final int SPECIFIC_DATE = -1;
private static final int EXISTING_TIME_UNSET = -2;
private final Spinner spinner; private final Spinner spinner;
private int previousSetting = Task.HIDE_UNTIL_NONE; private int previousSetting = Task.HIDE_UNTIL_NONE;
private long existingDate = EXISTING_TIME_UNSET;
private int existingDateHour = EXISTING_TIME_UNSET;
private int existingDateMinutes = EXISTING_TIME_UNSET;
public HideUntilControlSet(int hideUntil) { public HideUntilControlSet(int hideUntil) {
this.spinner = (Spinner) findViewById(hideUntil); this.spinner = (Spinner) findViewById(hideUntil);
this.spinner.setOnItemSelectedListener(this); this.spinner.setOnItemSelectedListener(this);
@ -1002,8 +1008,19 @@ public final class TaskEditActivity extends TabActivity {
HideUntilValue[] updated = new HideUntilValue[values.length + 1]; HideUntilValue[] updated = new HideUntilValue[values.length + 1];
for(int i = 0; i < values.length; i++) for(int i = 0; i < values.length; i++)
updated[i+1] = values[i]; updated[i+1] = values[i];
updated[0] = new HideUntilValue(DateUtilities.getDateString(TaskEditActivity.this, new Date(specificDate)), Date hideUntilAsDate = new Date(specificDate);
Task.HIDE_UNTIL_SPECIFIC_DAY, specificDate); if(hideUntilAsDate.getHours() == 0 && hideUntilAsDate.getMinutes() == 0 && hideUntilAsDate.getSeconds() == 0) {
updated[0] = new HideUntilValue(DateUtilities.getDateString(TaskEditActivity.this, new Date(specificDate)),
Task.HIDE_UNTIL_SPECIFIC_DAY, specificDate);
existingDate = specificDate;
existingDateHour = SPECIFIC_DATE;
} else {
updated[0] = new HideUntilValue(DateUtilities.getDateStringWithTime(TaskEditActivity.this, new Date(specificDate)),
Task.HIDE_UNTIL_SPECIFIC_DAY_TIME, specificDate);
existingDate = specificDate;
existingDateHour = hideUntilAsDate.getHours();
existingDateMinutes = hideUntilAsDate.getMinutes();
}
values = updated; values = updated;
} }
@ -1018,14 +1035,17 @@ public final class TaskEditActivity extends TabActivity {
// ... at conclusion of dialog, update our list // ... at conclusion of dialog, update our list
HideUntilValue item = adapter.getItem(position); HideUntilValue item = adapter.getItem(position);
if(item.date == SPECIFIC_DATE) { if(item.date == SPECIFIC_DATE) {
intermediateDate = new Date(); customDate = new Date(existingDate == EXISTING_TIME_UNSET ? DateUtilities.now() : existingDate);
intermediateDate.setSeconds(0); customDate.setSeconds(0);
DatePickerDialog datePicker = new DatePickerDialog(TaskEditActivity.this, DatePickerDialog datePicker = new DatePickerDialog(TaskEditActivity.this,
this, 1900 + intermediateDate.getYear(), intermediateDate.getMonth(), intermediateDate.getDate()); this, 1900 + customDate.getYear(), customDate.getMonth(), customDate.getDate());
datePicker.setOnCancelListener(this); datePicker.setOnCancelListener(this);
datePicker.show(); datePicker.show();
spinner.setSelection(previousSetting);
} else { } else {
previousSetting = position; previousSetting = position;
model.setValue(Task.HIDE_UNTIL, item.date);
} }
} }
@ -1034,14 +1054,39 @@ public final class TaskEditActivity extends TabActivity {
// ignore // ignore
} }
Date intermediateDate; Date customDate;
public void onDateSet(DatePicker view, int year, int month, int monthDay) { public void onDateSet(DatePicker view, int year, int month, int monthDay) {
intermediateDate.setYear(year - 1900); customDate.setYear(year - 1900);
intermediateDate.setMonth(month); customDate.setMonth(month);
intermediateDate.setDate(monthDay); customDate.setDate(monthDay);
intermediateDate.setHours(0);
intermediateDate.setMinutes(0); boolean specificTime = existingDateHour != SPECIFIC_DATE;
if(existingDateHour < 0) {
existingDateHour = customDate.getHours();
existingDateMinutes= customDate.getMinutes();
}
DeadlineTimePickerDialog timePicker = new DeadlineTimePickerDialog(TaskEditActivity.this, this,
existingDateHour, existingDateMinutes,
DateUtilities.is24HourFormat(TaskEditActivity.this),
specificTime);
timePicker.setOnCancelListener(this);
timePicker.show();
}
public void onTimeSet(TimePicker view, boolean hasTime, int hourOfDay, int minute) {
if(!hasTime) {
customDate.setHours(0);
customDate.setMinutes(0);
customDate.setSeconds(0);
} else {
customDate.setHours(hourOfDay);
customDate.setMinutes(minute);
existingDateHour = hourOfDay;
existingDateMinutes = minute;
}
customDateFinished(); customDateFinished();
} }
@ -1052,7 +1097,7 @@ public final class TaskEditActivity extends TabActivity {
} }
private void customDateFinished() { private void customDateFinished() {
HideUntilValue[] list = createHideUntilList(intermediateDate.getTime()); HideUntilValue[] list = createHideUntilList(customDate.getTime());
adapter = new ArrayAdapter<HideUntilValue>( adapter = new ArrayAdapter<HideUntilValue>(
TaskEditActivity.this, android.R.layout.simple_spinner_item, TaskEditActivity.this, android.R.layout.simple_spinner_item,
list); list);
@ -1098,6 +1143,7 @@ public final class TaskEditActivity extends TabActivity {
HideUntilValue item = adapter.getItem(spinner.getSelectedItemPosition()); HideUntilValue item = adapter.getItem(spinner.getSelectedItemPosition());
long value = task.createHideUntil(item.setting, item.date); long value = task.createHideUntil(item.setting, item.date);
task.setValue(Task.HIDE_UNTIL, value); task.setValue(Task.HIDE_UNTIL, value);
System.err.println("hide until: " + new Date(value));
return null; return null;
} }

@ -3,9 +3,9 @@ package com.todoroo.astrid.activity;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Map.Entry;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import android.app.AlertDialog; import android.app.AlertDialog;
@ -27,27 +27,27 @@ import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.AbsListView; import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast; import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.TextView.OnEditorActionListener;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R; import com.timsu.astrid.R;
@ -102,6 +102,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
// --- activities // --- activities
private static final long BACKGROUND_REFRESH_INTERVAL = 120000L;
public static final int ACTIVITY_EDIT_TASK = 0; public static final int ACTIVITY_EDIT_TASK = 0;
public static final int ACTIVITY_SETTINGS = 1; public static final int ACTIVITY_SETTINGS = 1;
public static final int ACTIVITY_SORT = 2; public static final int ACTIVITY_SORT = 2;
@ -405,7 +406,7 @@ public class TaskListActivity extends ListActivity implements OnScrollListener,
} }
}); });
} }
}, 120000L, 120000L); }, BACKGROUND_REFRESH_INTERVAL, BACKGROUND_REFRESH_INTERVAL);
} }
/* ====================================================================== /* ======================================================================

Loading…
Cancel
Save