Roll back repeat SMTWRFS displaying for non-weekly frequencies

pull/14/head
Tim Su 16 years ago
parent 098faf2af8
commit 7f2a17de89

@ -12,13 +12,13 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
@ -62,6 +62,7 @@ public class RepeatControlSet implements TaskEditControlSet {
private final LinearLayout repeatContainer;
private final LinearLayout daysOfWeekContainer;
private final CompoundButton[] daysOfWeek = new CompoundButton[7];
private Task model;
@Autowired
ExceptionService exceptionService;
@ -118,17 +119,17 @@ public class RepeatControlSet implements TaskEditControlSet {
interval.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
if(setInterval) {
setInterval = false;
return;
}
daysOfWeekContainer.setVisibility(position == INTERVAL_WEEKS ? View.VISIBLE : View.GONE);
if(position == INTERVAL_WEEKS) {
int dayOfWeek = new Date().getDay();
Date date;
if(model.getValue(Task.DUE_DATE) == 0)
date = new Date();
else
date = new Date(model.getValue(Task.DUE_DATE));
int dayOfWeek = date.getDay();
for(int i = 0; i < 7; i++)
daysOfWeek[i].setChecked(i == dayOfWeek);
} else {
for(int i = 0; i < 7; i++)
daysOfWeek[i].setChecked(true);
}
}
@ -137,7 +138,7 @@ public class RepeatControlSet implements TaskEditControlSet {
//
}
});
daysOfWeekContainer.setVisibility(View.VISIBLE);
daysOfWeekContainer.setVisibility(View.GONE);
}
/** Set up the repeat value button */
@ -172,6 +173,8 @@ public class RepeatControlSet implements TaskEditControlSet {
@Override
public void readFromTask(Task task) {
model = task;
String recurrence = task.getValue(Task.RECURRENCE);
if(recurrence == null)
recurrence = ""; //$NON-NLS-1$
@ -244,6 +247,12 @@ public class RepeatControlSet implements TaskEditControlSet {
break;
case INTERVAL_WEEKS: {
rrule.setFreq(Frequency.WEEKLY);
ArrayList<WeekdayNum> days = new ArrayList<WeekdayNum>();
for(int i = 0; i < daysOfWeek.length; i++)
if(daysOfWeek[i].isChecked())
days.add(new WeekdayNum(0, (Weekday)daysOfWeek[i].getTag()));
rrule.setByDay(days);
break;
}
case INTERVAL_MONTHS:
@ -253,12 +262,6 @@ public class RepeatControlSet implements TaskEditControlSet {
rrule.setFreq(Frequency.HOURLY);
}
ArrayList<WeekdayNum> days = new ArrayList<WeekdayNum>();
for(int i = 0; i < daysOfWeek.length; i++)
if(daysOfWeek[i].isChecked())
days.add(new WeekdayNum(0, (Weekday)daysOfWeek[i].getTag()));
rrule.setByDay(days);
result = rrule.toIcal();
}
task.setValue(Task.RECURRENCE, result);

@ -3,7 +3,6 @@ package com.todoroo.astrid.repeats;
import java.text.ParseException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import android.content.BroadcastReceiver;
@ -17,7 +16,6 @@ import com.google.ical.values.DateValue;
import com.google.ical.values.DateValueImpl;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.google.ical.values.WeekdayNum;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
@ -102,9 +100,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
// handle the iCalendar "byDay" field differently depending on if
// we are weekly or otherwise
List<WeekdayNum> byDay = null;
if(rrule.getFreq() != Frequency.WEEKLY) {
byDay = rrule.getByDay();
rrule.setByDay(Collections.EMPTY_LIST);
}
@ -147,20 +143,6 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
if(newDueDate == -1)
return -1;
// what we do with the by day information is to add days until
// weekday equals one of this list
if(byDay != null && byDay.size() > 0) {
Date newDueDateDate = new Date(newDueDate);
outer: for(int i = 0; i < 7; i++) {
int weekday = newDueDateDate.getDay();
for(WeekdayNum wdn : byDay)
if(wdn.wday.jsDayNum == weekday)
break outer;
newDueDateDate.setDate(newDueDateDate.getDate() + 1);
}
newDueDate = newDueDateDate.getTime();
}
return newDueDate;
}

@ -27,14 +27,14 @@ import java.util.List;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.TabActivity;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TabActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.DialogInterface.OnCancelListener;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
@ -45,6 +45,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
@ -59,7 +60,6 @@ import android.widget.TabHost;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.AdapterView.OnItemSelectedListener;
import com.flurry.android.FlurryAgent;
import com.timsu.astrid.R;
@ -793,6 +793,7 @@ public final class TaskEditActivity extends TabActivity {
datePicker.show();
} else {
previousSetting = position;
model.setValue(Task.DUE_DATE, item.dueDate);
}
}
@ -840,6 +841,7 @@ public final class TaskEditActivity extends TabActivity {
private void customDateFinished() {
long time = model.createDueDate(customSetting, customDate.getTime());
model.setValue(Task.DUE_DATE, time);
createUrgencyList(time);
}

Loading…
Cancel
Save