Fix hasChanges in TagsControlSet

pull/699/head
Alex Baker 6 years ago
parent d4b799d8e0
commit a8ccea10a2

@ -76,6 +76,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
private static final char SPACE = '\u0020'; private static final char SPACE = '\u0020';
private static final char NO_BREAK_SPACE = '\u00a0'; private static final char NO_BREAK_SPACE = '\u00a0';
private static final String EXTRA_NEW_TAGS = "extra_new_tags"; private static final String EXTRA_NEW_TAGS = "extra_new_tags";
private static final String EXTRA_ORIGINAL_TAGS = "extra_original_tags";
private static final String EXTRA_SELECTED_TAGS = "extra_selected_tags"; private static final String EXTRA_SELECTED_TAGS = "extra_selected_tags";
private final Ordering<TagData> orderByName = new Ordering<TagData>() { private final Ordering<TagData> orderByName = new Ordering<TagData>() {
@Override @Override
@ -94,6 +95,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
private View dialogView; private View dialogView;
private AlertDialog dialog; private AlertDialog dialog;
private List<TagData> allTags; private List<TagData> allTags;
private ArrayList<TagData> originalTags;
private ArrayList<TagData> selectedTags; private ArrayList<TagData> selectedTags;
private Function<TagData, SpannableString> tagToString(final float maxLength) { private Function<TagData, SpannableString> tagToString(final float maxLength) {
@ -135,13 +137,14 @@ public final class TagsControlSet extends TaskEditControlFragment {
ArrayList<String> newTags; ArrayList<String> newTags;
if (savedInstanceState != null) { if (savedInstanceState != null) {
selectedTags = savedInstanceState.getParcelableArrayList(EXTRA_SELECTED_TAGS); selectedTags = savedInstanceState.getParcelableArrayList(EXTRA_SELECTED_TAGS);
originalTags = savedInstanceState.getParcelableArrayList(EXTRA_ORIGINAL_TAGS);
newTags = savedInstanceState.getStringArrayList(EXTRA_NEW_TAGS); newTags = savedInstanceState.getStringArrayList(EXTRA_NEW_TAGS);
} else { } else {
selectedTags = new ArrayList<>(); originalTags = new ArrayList<>(task.isNew()
selectedTags.addAll(task.isNew()
? transform(task.getTags(), tagDataDao::getTagByName) ? transform(task.getTags(), tagDataDao::getTagByName)
: tagService.getTagDataForTask(task.getId())); : tagService.getTagDataForTask(task.getId()));
newTags = newArrayList(); selectedTags = new ArrayList<>(originalTags);
newTags = new ArrayList<>();
} }
allTags = tagService.getTagList(); allTags = tagService.getTagList();
dialogView = inflater.inflate(R.layout.control_set_tag_list, null); dialogView = inflater.inflate(R.layout.control_set_tag_list, null);
@ -186,6 +189,7 @@ public final class TagsControlSet extends TaskEditControlFragment {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putParcelableArrayList(EXTRA_SELECTED_TAGS, selectedTags); outState.putParcelableArrayList(EXTRA_SELECTED_TAGS, selectedTags);
outState.putParcelableArrayList(EXTRA_ORIGINAL_TAGS, originalTags);
outState.putStringArrayList(EXTRA_NEW_TAGS, getNewTags()); outState.putStringArrayList(EXTRA_NEW_TAGS, getNewTags());
} }
@ -366,9 +370,9 @@ public final class TagsControlSet extends TaskEditControlFragment {
@Override @Override
public boolean hasChanges(Task original) { public boolean hasChanges(Task original) {
Set<TagData> existingSet = newHashSet(tagService.getTagDataForTask(original.getUuid())); Set<TagData> originalSet = newHashSet(originalTags);
Set<TagData> selectedSet = newHashSet(selectedTags); Set<TagData> selectedSet = newHashSet(selectedTags);
return !existingSet.equals(selectedSet); return !originalSet.equals(selectedSet);
} }
private void refreshDisplayView() { private void refreshDisplayView() {

Loading…
Cancel
Save