diff --git a/app/src/googleplay/java/org/tasks/ui/GoogleTaskListFragment.java b/app/src/googleplay/java/org/tasks/ui/GoogleTaskListFragment.java index 0e89bce0d..535233296 100644 --- a/app/src/googleplay/java/org/tasks/ui/GoogleTaskListFragment.java +++ b/app/src/googleplay/java/org/tasks/ui/GoogleTaskListFragment.java @@ -31,7 +31,6 @@ import static org.tasks.activities.SupportGoogleTaskListPicker.newSupportGoogleT public class GoogleTaskListFragment extends TaskEditControlFragment { private static final String FRAG_TAG_GOOGLE_TASK_LIST_SELECTION = "frag_tag_google_task_list_selection"; - private static final String EXTRA_TASK_ID = "extra_task_id"; private static final String EXTRA_ORIGINAL_LIST = "extra_original_list"; private static final String EXTRA_SELECTED_LIST = "extra_selected_list"; @@ -44,7 +43,6 @@ public class GoogleTaskListFragment extends TaskEditControlFragment { @Inject GoogleTaskDao googleTaskDao; @Inject Tracker tracker; - private long taskId; @Nullable private GoogleTaskList originalList; @Nullable private GoogleTaskList selectedList; @@ -53,12 +51,10 @@ public class GoogleTaskListFragment extends TaskEditControlFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); if (savedInstanceState != null) { - taskId = savedInstanceState.getLong(EXTRA_TASK_ID); - originalList = savedInstanceState.getParcelable(EXTRA_ORIGINAL_LIST); selectedList = savedInstanceState.getParcelable(EXTRA_SELECTED_LIST); } else { - GoogleTask googleTask = googleTaskDao.getByTaskId(taskId); + GoogleTask googleTask = googleTaskDao.getByTaskId(task.getId()); if (googleTask != null) { originalList = gtasksListService.getList(googleTask.getListId()); } @@ -76,7 +72,6 @@ public class GoogleTaskListFragment extends TaskEditControlFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putLong(EXTRA_TASK_ID, taskId); if (originalList != null) { outState.putParcelable(EXTRA_ORIGINAL_LIST, originalList); } @@ -106,11 +101,6 @@ public class GoogleTaskListFragment extends TaskEditControlFragment { .show(getChildFragmentManager(), FRAG_TAG_GOOGLE_TASK_LIST_SELECTION); } - @Override - public void initialize(boolean isNewTask, Task task) { - taskId = task.getId(); - } - @Override public void apply(Task task) { if (selectedList == null) { diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 2a370f4e4..7351fbb7e 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -22,11 +22,7 @@ import android.widget.LinearLayout; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.dao.TaskDao; - -import org.tasks.data.GoogleTaskList; -import org.tasks.data.UserActivityDao; import com.todoroo.astrid.data.Task; -import org.tasks.data.UserActivity; import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.notes.CommentsController; import com.todoroo.astrid.repeats.RepeatControlSet; @@ -38,6 +34,9 @@ import com.todoroo.astrid.utility.Flags; import org.tasks.LocalBroadcastManager; import org.tasks.R; import org.tasks.analytics.Tracker; +import org.tasks.data.GoogleTaskList; +import org.tasks.data.UserActivity; +import org.tasks.data.UserActivityDao; import org.tasks.dialogs.DialogBuilder; import org.tasks.fragments.TaskEditControlSetFragmentManager; import org.tasks.injection.ForActivity; @@ -64,18 +63,17 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar void taskEditFinished(); } - public static TaskEditFragment newTaskEditFragment(boolean isNewTask, Task task) { + public static TaskEditFragment newTaskEditFragment(Task task) { TaskEditFragment taskEditFragment = new TaskEditFragment(); - taskEditFragment.isNewTask = isNewTask; - taskEditFragment.model = task; + Bundle arguments = new Bundle(); + arguments.putParcelable(EXTRA_TASK, task); + taskEditFragment.setArguments(arguments); return taskEditFragment; } public static final String TAG_TASKEDIT_FRAGMENT = "taskedit_fragment"; - public static final String TOKEN_VALUES = "v"; private static final String EXTRA_TASK = "extra_task"; - private static final String EXTRA_IS_NEW_TASK = "extra_is_new_task"; @Inject TaskDao taskDao; @Inject UserActivityDao userActivityDao; @@ -94,11 +92,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar @BindView(R.id.comments) LinearLayout comments; @BindView(R.id.control_sets) LinearLayout controlSets; - // --- other instance variables - - /** true if editing started with a new task */ - private boolean isNewTask = false; - /** task model */ Task model = null; private TaskEditFragmentCallbackHandler callback; @@ -120,10 +113,8 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar View view = inflater.inflate(R.layout.fragment_task_edit, container, false); ButterKnife.bind(this, view); - if (savedInstanceState != null) { - model = savedInstanceState.getParcelable(EXTRA_TASK); - isNewTask = savedInstanceState.getBoolean(EXTRA_IS_NEW_TASK); - } + Bundle arguments = getArguments(); + model = arguments.getParcelable(EXTRA_TASK); final boolean backButtonSavesTask = preferences.backButtonSavesTask(); toolbar.setNavigationIcon(ContextCompat.getDrawable(context, @@ -145,7 +136,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar commentsController.reloadView(); FragmentManager fragmentManager = getChildFragmentManager(); - List taskEditControlFragments = taskEditControlSetFragmentManager.getOrCreateFragments(fragmentManager, isNewTask, model); + List taskEditControlFragments = taskEditControlSetFragmentManager.getOrCreateFragments(fragmentManager, model); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); for (int i = 0 ; i < taskEditControlFragments.size() ; i++) { @@ -208,6 +199,8 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar public void save() { List fragments = taskEditControlSetFragmentManager.getFragmentsInPersistOrder(getChildFragmentManager()); if (hasChanges(fragments)) { + boolean isNewTask = model.isNew(); + for (TaskEditControlFragment fragment : fragments) { fragment.apply(model); } @@ -280,7 +273,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar } public void discard() { - if (isNewTask) { + if (model.isNew()) { timerPlugin.stopTimer(model); taskDeleter.delete(model); } @@ -300,14 +293,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar } - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putParcelable(EXTRA_TASK, model); - outState.putBoolean(EXTRA_IS_NEW_TASK, isNewTask); - } - /* * ====================================================================== * ========================================== UI component helper classes diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 513e2d188..8fd2aff91 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -372,8 +372,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements taskEditFragment.save(); } - boolean isNewTask = task.getTitle().length() == 0; - loadTaskEditFragment(newTaskEditFragment(isNewTask, task)); + loadTaskEditFragment(newTaskEditFragment(task)); } @Override diff --git a/app/src/main/java/com/todoroo/astrid/data/Task.java b/app/src/main/java/com/todoroo/astrid/data/Task.java index 8c7552828..510b8df5d 100644 --- a/app/src/main/java/com/todoroo/astrid/data/Task.java +++ b/app/src/main/java/com/todoroo/astrid/data/Task.java @@ -638,4 +638,8 @@ public class Task extends RemoteModel { private boolean isReminderFlagSet(int flag) { return (getReminderFlags() & flag) > 0; } + + public boolean isNew() { + return getId() == NO_ID; + } } diff --git a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index 67416cee9..def72ccd1 100644 --- a/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -24,12 +24,12 @@ import android.widget.Toast; import com.google.common.base.Strings; import com.todoroo.andlib.utility.AndroidUtilities; -import org.tasks.data.TaskAttachmentDao; import com.todoroo.astrid.data.Task; -import org.tasks.data.TaskAttachment; import org.tasks.R; import org.tasks.activities.AddAttachmentActivity; +import org.tasks.data.TaskAttachment; +import org.tasks.data.TaskAttachmentDao; import org.tasks.dialogs.DialogBuilder; import org.tasks.files.FileHelper; import org.tasks.injection.ForActivity; @@ -52,7 +52,6 @@ public class FilesControlSet extends TaskEditControlFragment { private static final char LEFT_TO_RIGHT_MARK = '\u200e'; private static final int REQUEST_ADD_ATTACHMENT = 50; - private static final String EXTRA_UUID = "extra_uuid"; @Inject TaskAttachmentDao taskAttachmentDao; @Inject DialogBuilder dialogBuilder; @@ -68,9 +67,7 @@ public class FilesControlSet extends TaskEditControlFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { - taskUuid = savedInstanceState.getString(EXTRA_UUID); - } + taskUuid = task.getUuid(); final List files = new ArrayList<>(); for (TaskAttachment attachment : taskAttachmentDao.getAttachments(taskUuid)) { @@ -81,13 +78,6 @@ public class FilesControlSet extends TaskEditControlFragment { return view; } - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putString(EXTRA_UUID, taskUuid); - } - @OnClick(R.id.add_attachment) void addAttachment(View view) { startActivityForResult(new Intent(context, AddAttachmentActivity.class), REQUEST_ADD_ATTACHMENT); @@ -108,11 +98,6 @@ public class FilesControlSet extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - taskUuid = task.getUuid(); - } - @Override public void apply(Task task) { diff --git a/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java index e55f6c187..3d8061748 100644 --- a/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -134,7 +134,19 @@ public class RepeatControlSet extends TaskEditControlFragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { + if (savedInstanceState == null) { + repeatAfterCompletion = task.repeatAfterCompletion(); + dueDate = task.getDueDate(); + if (dueDate <= 0) { + dueDate = currentTimeMillis(); + } + try { + rrule = new RRule(task.getRecurrenceWithoutFrom()); + rrule.setUntil(new DateTime(task.getRepeatUntil()).toDateValue()); + } catch (ParseException e) { + rrule = null; + } + } else { String recurrence = savedInstanceState.getString(EXTRA_RECURRENCE); dueDate = savedInstanceState.getLong(EXTRA_DUE_DATE); if (Strings.isNullOrEmpty(recurrence)) { @@ -308,21 +320,6 @@ public class RepeatControlSet extends TaskEditControlFragment return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - repeatAfterCompletion = task.repeatAfterCompletion(); - dueDate = task.getDueDate(); - if (dueDate <= 0) { - dueDate = currentTimeMillis(); - } - try { - rrule = new RRule(task.getRecurrenceWithoutFrom()); - rrule.setUntil(new DateTime(task.getRepeatUntil()).toDateValue()); - } catch (ParseException e) { - rrule = null; - } - } - @Override public boolean hasChanges(Task original) { return !getRecurrenceValue().equals(original.getRecurrence()) || diff --git a/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java index 3575fa5da..fc2875148 100644 --- a/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java @@ -93,7 +93,6 @@ public final class TagsControlSet extends TaskEditControlFragment { @BindView(R.id.display_row_edit) TextView tagsDisplay; - private long taskId; private LinearLayout newTagLayout; private ListView tagListView; private View dialogView; @@ -145,7 +144,7 @@ public final class TagsControlSet extends TaskEditControlFragment { selectedTags = savedInstanceState.getParcelableArrayList(EXTRA_SELECTED_TAGS); newTags = savedInstanceState.getStringArrayList(EXTRA_NEW_TAGS); } else { - selectedTags = tagService.getTagDataForTask(taskId); + selectedTags = tagService.getTagDataForTask(task.getId()); newTags = newArrayList(); } allTags = tagService.getTagList(); @@ -196,11 +195,6 @@ public final class TagsControlSet extends TaskEditControlFragment { return R.layout.control_set_tags; } - @Override - public void initialize(boolean isNewTask, Task task) { - taskId = task.getId(); - } - @Override public void apply(Task task) { if (synchronizeTags(task.getId(), task.getUUID())) { diff --git a/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java b/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java index 0224ca754..57ddb7c77 100644 --- a/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java @@ -71,15 +71,19 @@ public class TimerControlSet extends TaskEditControlFragment { private long timerStarted; private AlertDialog dialog; private View dialogView; - private int elapsedSeconds; - private int estimatedSeconds; private TimerControlSetCallback callback; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { + int elapsedSeconds; + int estimatedSeconds; + if (savedInstanceState == null) { + timerStarted = task.getTimerStart(); + elapsedSeconds = task.getElapsedSeconds(); + estimatedSeconds = task.getEstimatedSeconds(); + } else { timerStarted = savedInstanceState.getLong(EXTRA_STARTED); elapsedSeconds = savedInstanceState.getInt(EXTRA_ELAPSED); estimatedSeconds = savedInstanceState.getInt(EXTRA_ESTIMATED); @@ -162,13 +166,6 @@ public class TimerControlSet extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - timerStarted = task.getTimerStart(); - elapsedSeconds = task.getElapsedSeconds(); - estimatedSeconds = task.getEstimatedSeconds(); - } - @Override public boolean hasChanges(Task original) { return elapsed.getTimeDurationInSeconds() != original.getElapsedSeconds() || diff --git a/app/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java b/app/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java index 2edbab470..6001bbcfa 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java @@ -52,10 +52,10 @@ public class EditTitleControlSet extends TaskEditControlFragment { @BindView(R.id.title) EditText editText; @BindView(R.id.completeBox) CheckableImageView completeBox; + private boolean showKeyboard; private boolean isComplete; private boolean isRepeating; private int importanceValue; - private boolean isNewTask; private String title; @Override @@ -68,7 +68,13 @@ public class EditTitleControlSet extends TaskEditControlFragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(getLayout(), null); ButterKnife.bind(this, view); - if (savedInstanceState != null) { + if (savedInstanceState == null) { + isComplete = task.isCompleted(); + title = task.getTitle(); + isRepeating = !TextUtils.isEmpty(task.getRecurrence()); + importanceValue = task.getImportance(); + showKeyboard = task.isNew() && Strings.isNullOrEmpty(title); + } else { isComplete = savedInstanceState.getBoolean(EXTRA_COMPLETE); title = savedInstanceState.getString(EXTRA_TITLE); isRepeating = savedInstanceState.getBoolean(EXTRA_REPEATING); @@ -102,7 +108,7 @@ public class EditTitleControlSet extends TaskEditControlFragment { public void onResume() { super.onResume(); - if (isNewTask) { + if (showKeyboard) { editText.requestFocus(); InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); @@ -163,16 +169,6 @@ public class EditTitleControlSet extends TaskEditControlFragment { isComplete != original.isCompleted(); } - @Override - public void initialize(boolean isNewTask, Task task) { - this.isNewTask = isNewTask; - - isComplete = task.isCompleted(); - title = task.getTitle(); - isRepeating = !TextUtils.isEmpty(task.getRecurrence()); - importanceValue = task.getImportance(); - } - @Override public void apply(Task task) { task.setTitle(Strings.isNullOrEmpty(title) diff --git a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java index 5a393d6af..1aa7807b9 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java @@ -71,7 +71,6 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt @BindView(R.id.clear) ImageView clearButton; private ArrayAdapter adapter; - private long initialHideUntil; private int previousSetting = Task.HIDE_UNTIL_NONE; private int selection; @@ -118,7 +117,36 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt } }; if (savedInstanceState == null) { - updateSpinnerOptions(initialHideUntil); + long dueDate = task.getDueDate(); + long hideUntil = task.getHideUntil(); + + DateTime dueDay = newDateTime(dueDate) + .withHourOfDay(0) + .withMinuteOfHour(0) + .withSecondOfMinute(0) + .withMillisOfSecond(0); + + // For the hide until due case, we need the time component + long dueTime = dueDate/1000L*1000L; + + if(hideUntil == 0) { + selection = 0; + hideUntil = 0; + } else if(hideUntil == dueDay.getMillis()) { + selection = 1; + hideUntil = 0; + } else if (hideUntil == dueTime){ + selection = 2; + hideUntil = 0; + } else if(hideUntil + DateUtilities.ONE_DAY == dueDay.getMillis()) { + selection = 3; + hideUntil = 0; + } else if(hideUntil + DateUtilities.ONE_WEEK == dueDay.getMillis()) { + selection = 4; + hideUntil = 0; + } + + updateSpinnerOptions(hideUntil); } else { updateSpinnerOptions(savedInstanceState.getLong(EXTRA_CUSTOM)); selection = savedInstanceState.getInt(EXTRA_SELECTION); @@ -145,40 +173,6 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - long dueDate = task.getDueDate(); - long hideUntil = task.getHideUntil(); - - DateTime dueDay = newDateTime(dueDate) - .withHourOfDay(0) - .withMinuteOfHour(0) - .withSecondOfMinute(0) - .withMillisOfSecond(0); - - // For the hide until due case, we need the time component - long dueTime = dueDate/1000L*1000L; - - if(hideUntil == 0) { - selection = 0; - hideUntil = 0; - } else if(hideUntil == dueDay.getMillis()) { - selection = 1; - hideUntil = 0; - } else if (hideUntil == dueTime){ - selection = 2; - hideUntil = 0; - } else if(hideUntil + DateUtilities.ONE_DAY == dueDay.getMillis()) { - selection = 3; - hideUntil = 0; - } else if(hideUntil + DateUtilities.ONE_WEEK == dueDay.getMillis()) { - selection = 4; - hideUntil = 0; - } - - initialHideUntil = hideUntil; - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_HIDE_UNTIL) { diff --git a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java index ab657f1da..2ffdaf16d 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java @@ -73,7 +73,6 @@ public class ReminderControlSet extends TaskEditControlFragment { private static final int REQUEST_NEW_ALARM = 12152; private static final int REQUEST_LOCATION_REMINDER = 12153; - private static final String EXTRA_TASK_ID = "extra_task_id"; private static final String EXTRA_FLAGS = "extra_flags"; private static final String EXTRA_RANDOM_REMINDER = "extra_random_reminder"; private static final String EXTRA_ALARMS = "extra_alarms"; @@ -119,8 +118,12 @@ public class ReminderControlSet extends TaskEditControlFragment { modeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mode.setAdapter(modeAdapter); - if (savedInstanceState != null) { - taskId = savedInstanceState.getLong(EXTRA_TASK_ID); + taskId = task.getId(); + if (savedInstanceState == null) { + flags = task.getReminderFlags(); + randomReminder = task.getReminderPeriod(); + setup(currentAlarms(), geofenceService.getGeofences(taskId)); + } else { flags = savedInstanceState.getInt(EXTRA_FLAGS); randomReminder = savedInstanceState.getLong(EXTRA_RANDOM_REMINDER); List locations = new ArrayList<>(); @@ -129,8 +132,6 @@ public class ReminderControlSet extends TaskEditControlFragment { locations.add((Location) geofence); } setup(Longs.asList(savedInstanceState.getLongArray(EXTRA_ALARMS)), locations); - } else { - setup(currentAlarms(), geofenceService.getGeofences(taskId)); } addSpinner.setAdapter(remindAdapter); @@ -191,13 +192,6 @@ public class ReminderControlSet extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - taskId = task.getId(); - flags = task.getReminderFlags(); - randomReminder = task.getReminderPeriod(); - } - private void setup(List alarms, List locations) { setValue(flags); @@ -246,7 +240,6 @@ public class ReminderControlSet extends TaskEditControlFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putLong(EXTRA_TASK_ID, taskId); outState.putInt(EXTRA_FLAGS, getFlags()); outState.putLong(EXTRA_RANDOM_REMINDER, getRandomReminderPeriod()); outState.putLongArray(EXTRA_ALARMS, Longs.toArray(alarms)); diff --git a/app/src/main/java/org/tasks/fragments/CommentBarFragment.java b/app/src/main/java/org/tasks/fragments/CommentBarFragment.java index f694eb0cf..b69e36044 100644 --- a/app/src/main/java/org/tasks/fragments/CommentBarFragment.java +++ b/app/src/main/java/org/tasks/fragments/CommentBarFragment.java @@ -134,11 +134,6 @@ public class CommentBarFragment extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - - } - @Override public void apply(Task task) { diff --git a/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java b/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java index 9304fd9df..bf9daf420 100644 --- a/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java +++ b/app/src/main/java/org/tasks/fragments/TaskEditControlSetFragmentManager.java @@ -1,9 +1,11 @@ package org.tasks.fragments; import android.app.Activity; +import android.os.Bundle; import android.support.v4.app.FragmentManager; import com.todoroo.astrid.activity.BeastModePreferences; +import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.repeats.RepeatControlSet; @@ -102,7 +104,10 @@ public class TaskEditControlSetFragmentManager { return fragments; } - public List getOrCreateFragments(FragmentManager fragmentManager, boolean isNewTask, Task task) { + public List getOrCreateFragments(FragmentManager fragmentManager, Task task) { + Bundle arguments = new Bundle(); + arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task); + List fragments = new ArrayList<>(); for (int i = 0 ; i < numRows ; i++) { String tag = displayOrder.get(i); @@ -113,7 +118,7 @@ public class TaskEditControlSetFragmentManager { if (fragment == null) { continue; } - fragment.initialize(isNewTask, task); + fragment.setArguments(arguments); } fragments.add(fragment); } diff --git a/app/src/main/java/org/tasks/ui/CalendarControlSet.java b/app/src/main/java/org/tasks/ui/CalendarControlSet.java index ceed06de0..2de5ee546 100644 --- a/app/src/main/java/org/tasks/ui/CalendarControlSet.java +++ b/app/src/main/java/org/tasks/ui/CalendarControlSet.java @@ -72,7 +72,6 @@ public class CalendarControlSet extends TaskEditControlFragment { private String calendarId; private String eventUri; - private boolean isNewTask; @Nullable @Override @@ -82,7 +81,7 @@ public class CalendarControlSet extends TaskEditControlFragment { if (savedInstanceState != null) { eventUri = savedInstanceState.getString(EXTRA_URI); calendarId = savedInstanceState.getString(EXTRA_ID); - } else if (isNewTask && canAccessCalendars) { + } else if (task.isNew() && canAccessCalendars) { calendarId = preferences.getDefaultCalendar(); if (!Strings.isNullOrEmpty(calendarId)) { try { @@ -96,6 +95,8 @@ public class CalendarControlSet extends TaskEditControlFragment { calendarId = null; } } + } else { + eventUri = task.getCalendarURI(); } if (canAccessCalendars && !calendarEntryExists(eventUri)) { @@ -120,12 +121,6 @@ public class CalendarControlSet extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - this.isNewTask = isNewTask; - eventUri = task.getCalendarURI(); - } - @SuppressWarnings("SimplifiableIfStatement") @Override public boolean hasChanges(Task original) { diff --git a/app/src/main/java/org/tasks/ui/DeadlineControlSet.java b/app/src/main/java/org/tasks/ui/DeadlineControlSet.java index 56e5a186b..fc5848991 100644 --- a/app/src/main/java/org/tasks/ui/DeadlineControlSet.java +++ b/app/src/main/java/org/tasks/ui/DeadlineControlSet.java @@ -137,7 +137,16 @@ public class DeadlineControlSet extends TaskEditControlFragment { @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { + if (savedInstanceState == null) { + if (task.hasDueDate()) { + DateTime dateTime = newDateTime(task.getDueDate()); + date = dateTime.startOfDay().getMillis(); + time = task.hasDueTime() ? dateTime.getMillisOfDay() : -1; + } else { + date = 0; + time = -1; + } + } else { date = savedInstanceState.getLong(EXTRA_DATE); time = savedInstanceState.getInt(EXTRA_TIME); } @@ -283,18 +292,6 @@ public class DeadlineControlSet extends TaskEditControlFragment { return original.getDueDate() != getDueDateTime(); } - @Override - public void initialize(boolean isNewTask, Task task) { - if (task.hasDueDate()) { - DateTime dateTime = newDateTime(task.getDueDate()); - date = dateTime.startOfDay().getMillis(); - time = task.hasDueTime() ? dateTime.getMillisOfDay() : -1; - } else { - date = 0; - time = -1; - } - } - @Override public void apply(Task task) { long dueDate = getDueDateTime(); diff --git a/app/src/main/java/org/tasks/ui/DescriptionControlSet.java b/app/src/main/java/org/tasks/ui/DescriptionControlSet.java index 5078cd0e8..40808d052 100644 --- a/app/src/main/java/org/tasks/ui/DescriptionControlSet.java +++ b/app/src/main/java/org/tasks/ui/DescriptionControlSet.java @@ -29,7 +29,9 @@ public class DescriptionControlSet extends TaskEditControlFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { + if (savedInstanceState == null) { + description = task.getNotes(); + } else { description = savedInstanceState.getString(EXTRA_DESCRIPTION); } if (!Strings.isNullOrEmpty(description)) { @@ -65,11 +67,6 @@ public class DescriptionControlSet extends TaskEditControlFragment { description = text.toString().trim(); } - @Override - public void initialize(boolean isNewTask, Task task) { - description = task.getNotes(); - } - @Override public void apply(Task task) { task.setNotes(description); diff --git a/app/src/main/java/org/tasks/ui/PriorityControlSet.java b/app/src/main/java/org/tasks/ui/PriorityControlSet.java index 4f8f5aa6b..6193ec791 100644 --- a/app/src/main/java/org/tasks/ui/PriorityControlSet.java +++ b/app/src/main/java/org/tasks/ui/PriorityControlSet.java @@ -65,7 +65,9 @@ public class PriorityControlSet extends TaskEditControlFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = super.onCreateView(inflater, container, savedInstanceState); - if (savedInstanceState != null) { + if (savedInstanceState == null) { + priority = task.getImportance(); + } else { priority = savedInstanceState.getInt(EXTRA_PRIORITY); } if (priority == 0) { @@ -108,11 +110,6 @@ public class PriorityControlSet extends TaskEditControlFragment { return TAG; } - @Override - public void initialize(boolean isNewTask, Task task) { - priority = task.getImportance(); - } - @Override public void apply(Task task) { task.setImportance(priority); diff --git a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java index 583f52c36..f6fd4c814 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java +++ b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java @@ -1,5 +1,6 @@ package org.tasks.ui; +import android.app.Activity; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; @@ -17,6 +18,10 @@ import butterknife.ButterKnife; public abstract class TaskEditControlFragment extends InjectingFragment { + public static final String EXTRA_TASK = "extra_task"; + + protected Task task; + @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -29,14 +34,22 @@ public abstract class TaskEditControlFragment extends InjectingFragment { return view; } + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + + Bundle arguments = getArguments(); + if (arguments != null) { + task = arguments.getParcelable(EXTRA_TASK); + } + } + protected abstract int getLayout(); protected abstract int getIcon(); public abstract int controlId(); - public abstract void initialize(boolean isNewTask, Task task); - public abstract void apply(Task task); public boolean hasChanges(Task original) {