diff --git a/build.gradle b/build.gradle index 22510a44d..f73d46ee2 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ android { buildToolsVersion "23.0.2" defaultConfig { - versionCode 388 + versionCode 389 versionName "4.8.4" minSdkVersion 14 targetSdkVersion 23 diff --git a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java index 687742567..f94e481da 100644 --- a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -93,8 +93,6 @@ public class RepeatControlSet extends TaskEditControlFragment { //private final CheckBox enabled; private boolean doRepeat = false; private Button value; - private Spinner interval; - private Spinner type; private Spinner repeatUntil; @Inject DialogBuilder dialogBuilder; @@ -107,7 +105,8 @@ public class RepeatControlSet extends TaskEditControlFragment { private ArrayAdapter repeatUntilAdapter; private final List repeatUntilOptions = new ArrayList<>(); private LinearLayout daysOfWeekContainer; - private final CompoundButton[] daysOfWeek = new CompoundButton[7]; + private final Weekday[] weekdays = new Weekday[7]; + private final boolean[] isChecked = new boolean[7]; private String recurrence; private int repeatValue; @@ -132,14 +131,25 @@ public class RepeatControlSet extends TaskEditControlFragment { dialogView = inflater.inflate(R.layout.control_set_repeat, null); value = (Button) dialogView.findViewById(R.id.repeatValue); - interval = (Spinner) dialogView.findViewById(R.id.repeatInterval); + Spinner interval = (Spinner) dialogView.findViewById(R.id.repeatInterval); interval.setAdapter(new ArrayAdapter(context, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.repeat_interval)) {{ setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); }}); - type = (Spinner) dialogView.findViewById(R.id.repeatType); + Spinner type = (Spinner) dialogView.findViewById(R.id.repeatType); type.setAdapter(new ArrayAdapter(context, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.repeat_type)) {{ setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); }}); + type.setOnItemSelectedListener(new OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + repeatAfterCompletion = position == TYPE_COMPLETION_DATE; + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); daysOfWeekContainer = (LinearLayout) dialogView.findViewById(R.id.repeatDayOfWeekContainer); repeatUntil = (Spinner) dialogView.findViewById(R.id.repeat_until); repeatUntilAdapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, repeatUntilOptions); @@ -149,12 +159,20 @@ public class RepeatControlSet extends TaskEditControlFragment { DateFormatSymbols dfs = new DateFormatSymbols(); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); + CompoundButton[] daysOfWeek = new CompoundButton[7]; for(int i = 0; i < 7; i++) { + final int index = i; CheckBox checkBox = (CheckBox) daysOfWeekContainer.getChildAt(i); + checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + RepeatControlSet.this.isChecked[index] = isChecked; + } + }); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); - checkBox.setTag(Weekday.values()[dayOfWeek - 1]); checkBox.setText(dfs.getShortWeekdays()[dayOfWeek].substring(0, 1)); daysOfWeek[i] = checkBox; + weekdays[i] = Weekday.values()[dayOfWeek - 1]; calendar.add(Calendar.DATE, 1); } @@ -207,7 +225,52 @@ public class RepeatControlSet extends TaskEditControlFragment { daysOfWeekContainer.setVisibility(View.GONE); type.setSelection(repeatAfterCompletion ? TYPE_COMPLETION_DATE : TYPE_DUE_DATE); - applyRecurrence(); + doRepeat = !Strings.isNullOrEmpty(recurrence); + if (doRepeat) { + // read recurrence rule + try { + RRule rrule = new RRule(recurrence); + + setRepeatValue(rrule.getInterval()); + + for(WeekdayNum day : rrule.getByDay()) { + for(int i = 0; i < 7; i++) { + if (weekdays[i].equals(day.wday)) { + daysOfWeek[i].setChecked(true); + } + } + } + + switch(rrule.getFreq()) { + case DAILY: + intervalValue = INTERVAL_DAYS; + break; + case WEEKLY: + intervalValue = INTERVAL_WEEKS; + break; + case MONTHLY: + intervalValue = INTERVAL_MONTHS; + break; + case HOURLY: + intervalValue = INTERVAL_HOURS; + break; + case MINUTELY: + intervalValue = INTERVAL_MINUTES; + break; + case YEARLY: + intervalValue = INTERVAL_YEARS; + break; + default: + Timber.e(new Exception("Unhandled rrule frequency: " + recurrence), "repeat-unhandled-rule"); + } + interval.setSelection(intervalValue); + + } catch (Exception e) { + // invalid RRULE + recurrence = ""; //$NON-NLS-1$ + Timber.e(e, e.getMessage()); + } + } refreshDisplayView(); return view; } @@ -302,64 +365,13 @@ public class RepeatControlSet extends TaskEditControlFragment { private String getRecurrenceValue() { String result = getRecurrence(); - if (type.getSelectedItemPosition() == TYPE_COMPLETION_DATE && !TextUtils.isEmpty(result)) { + if (repeatAfterCompletion && !TextUtils.isEmpty(result)) { result += ";FROM=COMPLETION"; //$NON-NLS-1$ } return result; } - private void applyRecurrence() { - doRepeat = !Strings.isNullOrEmpty(recurrence); - if (!doRepeat) { - return; - } - - // read recurrence rule - try { - RRule rrule = new RRule(recurrence); - - setRepeatValue(rrule.getInterval()); - - for(WeekdayNum day : rrule.getByDay()) { - for(int i = 0; i < 7; i++) { - if (daysOfWeek[i].getTag().equals(day.wday)) { - daysOfWeek[i].setChecked(true); - } - } - } - - switch(rrule.getFreq()) { - case DAILY: - intervalValue = INTERVAL_DAYS; - break; - case WEEKLY: - intervalValue = INTERVAL_WEEKS; - break; - case MONTHLY: - intervalValue = INTERVAL_MONTHS; - break; - case HOURLY: - intervalValue = INTERVAL_HOURS; - break; - case MINUTELY: - intervalValue = INTERVAL_MINUTES; - break; - case YEARLY: - intervalValue = INTERVAL_YEARS; - break; - default: - Timber.e(new Exception("Unhandled rrule frequency: " + recurrence), "repeat-unhandled-rule"); - } - interval.setSelection(intervalValue); - - } catch (Exception e) { - // invalid RRULE - recurrence = ""; //$NON-NLS-1$ - Timber.e(e, e.getMessage()); - } - } - private String getRecurrence() { String result; if(!doRepeat) { @@ -367,7 +379,7 @@ public class RepeatControlSet extends TaskEditControlFragment { } else { RRule rrule = new RRule(); rrule.setInterval(repeatValue); - switch(interval.getSelectedItemPosition()) { + switch(intervalValue) { case INTERVAL_DAYS: rrule.setFreq(Frequency.DAILY); break; @@ -375,9 +387,9 @@ public class RepeatControlSet extends TaskEditControlFragment { rrule.setFreq(Frequency.WEEKLY); ArrayList days = new ArrayList<>(); - for (CompoundButton dayOfWeek : daysOfWeek) { - if (dayOfWeek.isChecked()) { - days.add(new WeekdayNum(0, (Weekday) dayOfWeek.getTag())); + for (int i = 0 ; i < isChecked.length ; i++) { + if (isChecked[i]) { + days.add(new WeekdayNum(0, weekdays[i])); } } rrule.setByDay(days); diff --git a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java index aa044f9e5..7a8773954 100644 --- a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java +++ b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java @@ -48,7 +48,6 @@ import org.tasks.ui.TaskEditControlFragment; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; -import java.util.List; import java.util.Set; import javax.inject.Inject; @@ -86,11 +85,11 @@ public final class TagsControlSet extends TaskEditControlFragment { private ListView selectedTags; private View dialogView; private AlertDialog dialog; + private ArrayList tagList; private String buildTagString() { StringBuilder builder = new StringBuilder(); - List tagList = getTagList(); Collections.sort(tagList); for (String tag : tagList) { if (tag.trim().length() == 0) { @@ -109,11 +108,10 @@ public final class TagsControlSet extends TaskEditControlFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - ArrayList selected; if (savedInstanceState != null) { - selected = savedInstanceState.getStringArrayList(EXTRA_TAGS); + tagList = savedInstanceState.getStringArrayList(EXTRA_TAGS); } else { - selected = tagService.getTagNames(taskId); + tagList = tagService.getTagNames(taskId); } allTagNames = newArrayList(ImmutableSet.copyOf(transform(tagService.getTagList(), new Function() { @Override @@ -126,7 +124,7 @@ public final class TagsControlSet extends TaskEditControlFragment { selectedTags = (ListView) dialogView.findViewById(R.id.existingTags); selectedTags.setAdapter(new ArrayAdapter<>(getActivity(), R.layout.simple_list_item_multiple_choice_themed, allTagNames)); addTag(""); - for (String tag : selected) { + for (String tag : tagList) { setTagSelected(tag); } refreshDisplayView(); @@ -137,7 +135,7 @@ public final class TagsControlSet extends TaskEditControlFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putStringArrayList(EXTRA_TAGS, getTagList()); + outState.putStringArrayList(EXTRA_TAGS, tagList); } @Override @@ -172,6 +170,7 @@ public final class TagsControlSet extends TaskEditControlFragment { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + tagList = getTagList(); refreshDisplayView(); } }) @@ -338,7 +337,7 @@ public final class TagsControlSet extends TaskEditControlFragment { } private Set getSelectedTags(final boolean createMissingTags) { - return newHashSet(transform(getTagList(), new Function() { + return newHashSet(transform(tagList, new Function() { @Override public TagData apply(String tagName) { TagData tagData = tagDataDao.getTagByName(tagName, TagData.PROPERTIES); diff --git a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java index 6b8c7b9a6..4cd83a734 100644 --- a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java @@ -31,6 +31,7 @@ import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; +import butterknife.OnTextChanged; /** * Control set for mapping a Property to an EditText @@ -89,8 +90,8 @@ public class EditTitleControlSet extends TaskEditControlFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putBoolean(EXTRA_COMPLETE, completeBox.isChecked()); - outState.putString(EXTRA_TITLE, getTitle()); + outState.putBoolean(EXTRA_COMPLETE, isComplete); + outState.putString(EXTRA_TITLE, title); outState.putBoolean(EXTRA_REPEATING, isRepeating); outState.putInt(EXTRA_PRIORITY, importanceValue); } @@ -111,6 +112,11 @@ public class EditTitleControlSet extends TaskEditControlFragment { } } + @OnTextChanged(R.id.title) + void onTextChanged(CharSequence text) { + this.title = text.toString().trim(); + } + public void setPriority(int priority) { importanceValue = priority; updateCompleteBox(); @@ -122,9 +128,9 @@ public class EditTitleControlSet extends TaskEditControlFragment { } private void updateCompleteBox() { - boolean checked = completeBox.isChecked(); + isComplete = completeBox.isChecked(); - if (checked) { + if (isComplete) { completeBox.setImageDrawable(checkBoxes.getCompletedCheckbox(importanceValue)); } else if (isRepeating) { completeBox.setImageDrawable(checkBoxes.getRepeatingCheckBox(importanceValue)); @@ -132,7 +138,7 @@ public class EditTitleControlSet extends TaskEditControlFragment { completeBox.setImageDrawable(checkBoxes.getCheckBox(importanceValue)); } - if (checked) { + if (isComplete) { editText.setPaintFlags(editText.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); } else { editText.setPaintFlags(editText.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); @@ -156,8 +162,8 @@ public class EditTitleControlSet extends TaskEditControlFragment { @Override public boolean hasChanges(Task original) { - return !getTitle().equals(original.getTitle()) || - completeBox.isChecked() != original.isCompleted(); + return !title.equals(original.getTitle()) || + isComplete != original.isCompleted(); } @Override @@ -172,20 +178,14 @@ public class EditTitleControlSet extends TaskEditControlFragment { @Override public void apply(Task task) { - String title = getTitle(); task.setTitle(Strings.isNullOrEmpty(title) ? getString(R.string.no_title) : title); - boolean newState = completeBox.isChecked(); - if (newState != task.isCompleted()) { - taskService.setComplete(task, newState); + if (isComplete != task.isCompleted()) { + taskService.setComplete(task, isComplete); } } - private String getTitle() { - return editText.getText().toString().trim(); - } - public void hideKeyboard() { AndroidUtilities.hideSoftInputForViews(getActivity(), editText); } diff --git a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java index eb75ef240..54a8315ed 100644 --- a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java @@ -72,6 +72,7 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt private int selection; private long existingDate = EXISTING_TIME_UNSET; private final List spinnerItems = new ArrayList<>(); + private HideUntilValue selectedValue; @OnClick(R.id.clear) void clearHideUntil(View view) { @@ -191,8 +192,7 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt } private long getHideUntil(Task task) { - HideUntilValue selectedItem = (HideUntilValue) spinner.getSelectedItem(); - return task.createHideUntil(selectedItem.setting, selectedItem.date); + return task.createHideUntil(selectedValue.setting, selectedValue.date); } @Override @@ -300,8 +300,8 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt // --- setting up values private void refreshDisplayView() { - HideUntilValue value = adapter.getItem(selection); - if (value.setting == Task.HIDE_UNTIL_NONE) { + selectedValue = adapter.getItem(selection); + if (selectedValue.setting == Task.HIDE_UNTIL_NONE) { spinner.setAlpha(0.5f); clearButton.setVisibility(View.GONE); } else { diff --git a/src/main/java/com/todoroo/astrid/ui/RandomReminderControlSet.java b/src/main/java/com/todoroo/astrid/ui/RandomReminderControlSet.java index d6efad2ef..f704ebed7 100644 --- a/src/main/java/com/todoroo/astrid/ui/RandomReminderControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/RandomReminderControlSet.java @@ -7,6 +7,7 @@ package com.todoroo.astrid.ui; import android.content.Context; import android.view.View; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; @@ -23,7 +24,7 @@ import org.tasks.R; public class RandomReminderControlSet { private final Spinner periodSpinner; - + private int selectedIndex; private final int[] hours; public RandomReminderControlSet(Context context, View parentView, long reminderPeriod) { @@ -36,6 +37,18 @@ public class RandomReminderControlSet { adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); periodSpinner.setAdapter(adapter); + periodSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + selectedIndex = position; + } + + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + // create hour array String[] hourStrings = context.getResources().getStringArray(R.array.TEA_reminder_random_hours); hours = new int[hourStrings.length]; @@ -53,7 +66,7 @@ public class RandomReminderControlSet { } public long getReminderPeriod() { - int hourValue = hours[periodSpinner.getSelectedItemPosition()]; + int hourValue = hours[selectedIndex]; return hourValue * DateUtilities.ONE_HOUR; } } diff --git a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java index abd5f986c..b2848a7b6 100644 --- a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java @@ -91,12 +91,20 @@ public class ReminderControlSet extends TaskEditControlFragment { private long taskId; private int flags; private long randomReminder; + private int ringMode; private RandomReminderControlSet randomControlSet; private boolean whenDue; private boolean whenOverdue; private List spinnerOptions = new ArrayList<>(); private ArrayAdapter remindAdapter; + private Set alarms = new LinkedHashSet<>(); + private Set geofences = new LinkedHashSet<>(); + + @OnItemSelected(R.id.reminder_alarm) + void ringModeSelected(int position) { + ringMode = position; + } @Nullable @Override @@ -217,8 +225,8 @@ public class ReminderControlSet extends TaskEditControlFragment { public boolean hasChanges(Task original) { return getFlags() != original.getReminderFlags() || getRandomReminderPeriod() != original.getReminderPeriod() || - !newHashSet(currentAlarms()).equals(getAlarms()) || - !newHashSet(geofenceService.getGeofences(taskId)).equals(getGeofences()); + !newHashSet(currentAlarms()).equals(alarms) || + !newHashSet(geofenceService.getGeofences(taskId)).equals(geofences); } @Override @@ -227,10 +235,10 @@ public class ReminderControlSet extends TaskEditControlFragment { task.setReminderPeriod(getRandomReminderPeriod()); - if(alarmService.synchronizeAlarms(task.getId(), getAlarms())) { + if(alarmService.synchronizeAlarms(task.getId(), alarms)) { task.setModificationDate(DateUtilities.now()); } - if (geofenceService.synchronizeGeofences(task.getId(), getGeofences())) { + if (geofenceService.synchronizeGeofences(task.getId(), geofences)) { task.setModificationDate(DateUtilities.now()); } } @@ -242,8 +250,8 @@ public class ReminderControlSet extends TaskEditControlFragment { outState.putLong(EXTRA_TASK_ID, taskId); outState.putInt(EXTRA_FLAGS, getFlags()); outState.putLong(EXTRA_RANDOM_REMINDER, getRandomReminderPeriod()); - outState.putLongArray(EXTRA_ALARMS, Longs.toArray(getAlarms())); - outState.putParcelableArrayList(EXTRA_GEOFENCES, newArrayList(getGeofences())); + outState.putLongArray(EXTRA_ALARMS, Longs.toArray(alarms)); + outState.putParcelableArrayList(EXTRA_GEOFENCES, newArrayList(geofences)); } @Override @@ -261,30 +269,14 @@ public class ReminderControlSet extends TaskEditControlFragment { } } - private Set getAlarms() { - Set alarms = new LinkedHashSet<>(); - for (int i = 0 ; i < alertContainer.getChildCount() ; i++) { - Object tag = alertContainer.getChildAt(i).getTag(); - if (tag instanceof Long) { - alarms.add((Long) tag); - } - } - return alarms; - } - - private Set getGeofences() { - Set geofences = new LinkedHashSet<>(); - for (int i = 0 ; i < alertContainer.getChildCount() ; i++) { - Object tag = alertContainer.getChildAt(i).getTag(); - if (tag instanceof Geofence) { - geofences.add((Geofence) tag); - } - } - return geofences; - } - public void addAlarmRow(final Long timestamp) { - addAlarmRow(getLongDateStringWithTime(context, timestamp), timestamp, null); + addAlarmRow(getLongDateStringWithTime(context, timestamp), new OnClickListener() { + @Override + public void onClick(View v) { + alarms.remove(timestamp); + } + }); + alarms.add(timestamp); } public void pickLocation() { @@ -295,12 +287,13 @@ public class ReminderControlSet extends TaskEditControlFragment { } public void addGeolocationReminder(final Geofence geofence) { - View alertItem = addAlarmRow(geofence.getName(), null, new OnClickListener() { + addAlarmRow(geofence.getName(), new OnClickListener() { @Override public void onClick(View v) { + geofences.remove(geofence); } }); - alertItem.setTag(geofence); + geofences.add(geofence); } private int getFlags() { @@ -313,9 +306,9 @@ public class ReminderControlSet extends TaskEditControlFragment { } value &= ~(Task.NOTIFY_MODE_FIVE | Task.NOTIFY_MODE_NONSTOP); - if(mode.getSelectedItemPosition() == 2) { + if(ringMode == 2) { value |= Task.NOTIFY_MODE_NONSTOP; - } else if(mode.getSelectedItemPosition() == 1) { + } else if(ringMode == 1) { value |= Task.NOTIFY_MODE_FIVE; } @@ -332,15 +325,14 @@ public class ReminderControlSet extends TaskEditControlFragment { }}, REQUEST_NEW_ALARM); } - private View addAlarmRow(String text, Long timestamp, final OnClickListener onRemove) { + private View addAlarmRow(String text, final OnClickListener onRemove) { final View alertItem = getActivity().getLayoutInflater().inflate(R.layout.alarm_edit_row, null); alertContainer.addView(alertItem); - addAlarmRow(alertItem, text, timestamp, onRemove); + addAlarmRow(alertItem, text, onRemove); return alertItem; } - private void addAlarmRow(final View alertItem, String text, Long timestamp, final View.OnClickListener onRemove) { - alertItem.setTag(timestamp); + private void addAlarmRow(final View alertItem, String text, final View.OnClickListener onRemove) { TextView display = (TextView) alertItem.findViewById(R.id.alarm_string); display.setText(text); alertItem.findViewById(R.id.clear).setOnClickListener(new OnClickListener() { @@ -378,7 +370,7 @@ public class ReminderControlSet extends TaskEditControlFragment { private void addDue() { whenDue = true; - addAlarmRow(getString(R.string.when_due), null, new OnClickListener() { + addAlarmRow(getString(R.string.when_due), new OnClickListener() { @Override public void onClick(View v) { whenDue = false; @@ -388,7 +380,7 @@ public class ReminderControlSet extends TaskEditControlFragment { private void addOverdue() { whenOverdue = true; - addAlarmRow(getString(R.string.when_overdue), null, new OnClickListener() { + addAlarmRow(getString(R.string.when_overdue), new OnClickListener() { @Override public void onClick(View v) { whenOverdue = false; @@ -397,7 +389,7 @@ public class ReminderControlSet extends TaskEditControlFragment { } private void addRandomReminder(long reminderPeriod) { - View alarmRow = addAlarmRow(getString(R.string.randomly_once), null, new OnClickListener() { + View alarmRow = addAlarmRow(getString(R.string.randomly_once), new OnClickListener() { @Override public void onClick(View v) { randomControlSet = null; diff --git a/src/main/java/org/tasks/ui/PriorityControlSet.java b/src/main/java/org/tasks/ui/PriorityControlSet.java index 78026ff4d..98c2b012b 100644 --- a/src/main/java/org/tasks/ui/PriorityControlSet.java +++ b/src/main/java/org/tasks/ui/PriorityControlSet.java @@ -1,7 +1,6 @@ package org.tasks.ui; import android.app.Activity; -import android.content.Context; import android.content.res.ColorStateList; import android.os.Bundle; import android.support.annotation.Nullable; @@ -49,7 +48,8 @@ public class PriorityControlSet extends TaskEditControlFragment { @OnClick({R.id.priority_high, R.id.priority_medium, R.id.priority_low, R.id.priority_none}) void onImportanceChanged(CompoundButton button) { - callback.onPriorityChange(getPriority()); + priority = getPriority(); + callback.onPriorityChange(priority); } @Nullable @@ -75,6 +75,13 @@ public class PriorityControlSet extends TaskEditControlFragment { return view; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putInt(EXTRA_PRIORITY, priority); + } + @Override protected int getLayout() { return R.layout.control_set_priority; @@ -97,12 +104,12 @@ public class PriorityControlSet extends TaskEditControlFragment { @Override public void apply(Task task) { - task.setImportance(getPriority()); + task.setImportance(priority); } @Override public boolean hasChanges(Task original) { - return original.getImportance() != getPriority(); + return original.getImportance() != priority; } private void tintRadioButton(AppCompatRadioButton radioButton, int priority) {