diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 6ed9f1ac0..0089735a3 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -52,6 +52,9 @@ import org.tasks.preferences.ActivityPreferences; import org.tasks.ui.MenuColorizer; import org.tasks.ui.TaskEditControlFragment; +import java.util.ArrayList; +import java.util.List; + import javax.inject.Inject; import butterknife.Bind; @@ -77,7 +80,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot TaskEditFragment taskEditFragment = new TaskEditFragment(); taskEditFragment.isNewTask = isNewTask; taskEditFragment.model = task; - taskEditFragment.applyModel = true; return taskEditFragment; } @@ -94,7 +96,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot * Task in progress (during orientation change) */ private static final String EXTRA_TASK = "extra_task"; //$NON-NLS-1$ - private static final String EXTRA_APPLY_MODEL = "extra_apply_model"; private static final String EXTRA_IS_NEW_TASK = "extra_is_new_task"; /** @@ -151,7 +152,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot /** task model */ Task model = null; - private boolean applyModel = false; private boolean showEditComments; private TaskEditFragmentCallbackHandler callback; @@ -169,7 +169,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot // if we were editing a task already, restore it if (savedInstanceState != null) { model = savedInstanceState.getParcelable(EXTRA_TASK); - applyModel = savedInstanceState.getBoolean(EXTRA_APPLY_MODEL); isNewTask = savedInstanceState.getBoolean(EXTRA_IS_NEW_TASK); } @@ -199,8 +198,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot notificationManager.cancel(model.getId()); - applyModel = false; - if (!showEditComments) { commentsBar.setVisibility(View.GONE); } @@ -321,30 +318,21 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot * ====================================================================== */ - private String getTitle() { - return getEditTitleControlSet().getTitle(); - } - - /** Save task model from values in UI components */ - public void save() { - String title = getTitle(); - if (title == null) { - return; - } - - if (title.length() > 0) { - model.setDeletionDate(0L); - } - - if (title.length() == 0) { - return; - } - + private List getFragments() { + List fragments = new ArrayList<>(); for (int fragmentId : rowIds) { TaskEditControlFragment fragment = (TaskEditControlFragment) getFragmentManager().findFragmentById(fragmentId); if (fragment == null) { break; } + fragments.add(fragment); + } + return fragments; + } + + /** Save task model from values in UI components */ + public void save() { + for (TaskEditControlFragment fragment : getFragments()) { fragment.apply(model); } taskService.save(model); @@ -363,6 +351,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot } removeExtrasFromIntent(getActivity().getIntent()); + callback.taskEditFinished(); } private EditTitleControlSet getEditTitleControlSet() { @@ -382,21 +371,11 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot return (T) getFragmentManager().findFragmentByTag(getString(tag)); } - public void onBackPressed() { - if(getTitle().length() == 0) { - discardButtonClick(); - } else { - save(); - } - callback.taskEditFinished(); - } - /** * Helper to remove task edit specific info from activity intent */ public static void removeExtrasFromIntent(Intent intent) { if (intent != null) { - intent.removeExtra(TaskListActivity.OPEN_TASK); intent.removeExtra(TOKEN_PICTURE_IN_PROGRESS); } } @@ -407,13 +386,34 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot * ====================================================================== */ - protected void discardButtonClick() { + public void discardButtonClick() { + boolean hasChanges = false; + for (TaskEditControlFragment fragment : getFragments()) { + hasChanges |= fragment.hasChanges(model); + } + if (hasChanges) { + dialogBuilder.newMessageDialog(R.string.discard_confirmation) + .setPositiveButton(R.string.keep_editing, null) + .setNegativeButton(R.string.discard, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + discard(); + } + }) + .show(); + } else { + discard(); + } + } + + public void discard() { if (isNewTask) { TimerPlugin.stopTimer(notificationManager, taskService, getActivity(), model); taskDeleter.delete(model); } removeExtrasFromIntent(getActivity().getIntent()); + callback.taskEditFinished(); } protected void deleteButtonClick() { @@ -440,13 +440,8 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot hideKeyboard(); switch (item.getItemId()) { - case R.id.menu_save: + case R.id.menu_save: save(); - callback.taskEditFinished(); - return true; - case R.id.menu_discard: - discardButtonClick(); - callback.taskEditFinished(); return true; case R.id.menu_record_note: startRecordingAudio(); @@ -455,12 +450,7 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot deleteButtonClick(); return true; case android.R.id.home: - if (getTitle().trim().length() == 0) { - discardButtonClick(); - } else { - save(); - } - callback.taskEditFinished(); + save(); return true; } @@ -504,7 +494,6 @@ public final class TaskEditFragment extends InjectingFragment implements EditNot super.onSaveInstanceState(outState); outState.putParcelable(EXTRA_TASK, model); - outState.putBoolean(EXTRA_APPLY_MODEL, applyModel); outState.putBoolean(EXTRA_IS_NEW_TASK, isNewTask); } diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index bba33eb04..603969e8c 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -146,7 +146,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements hideKeyboard(); navigationDrawer.openDrawer(); } else { - taskEditFragment.onBackPressed(); + taskEditFragment.save(); } } }); @@ -247,7 +247,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements private void loadTaskEditFragment(boolean onCreate, TaskEditFragment taskEditFragment, List taskEditControlFragments) { if (isSinglePaneLayout()) { - updateToolbar(R.drawable.ic_arrow_back_24dp, false); + updateToolbar(R.drawable.ic_save_24dp, false); } FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() @@ -367,7 +367,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements TaskEditFragment.removeExtrasFromIntent(getIntent()); TaskEditFragment tef = getTaskEditFragment(); if (tef != null) { - getTaskEditFragment().onBackPressed(); + getTaskEditFragment().save(); } // If showing both fragments, directly update the tasklist-fragment @@ -446,7 +446,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements TaskEditFragment taskEditFragment = getTaskEditFragment(); if (taskEditFragment != null) { - taskEditFragment.onBackPressed(); + taskEditFragment.save(); } Task task = loadItem(taskId); @@ -519,7 +519,7 @@ public class TaskListActivity extends InjectingAppCompatActivity implements } if (getTaskEditFragment() != null) { - getTaskEditFragment().onBackPressed(); + getTaskEditFragment().discardButtonClick(); return; } @@ -744,11 +744,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements model = taskService.createWithValues(values, null); } - if (model.getTitle().length() == 0) { - // set deletion date until task gets a title - model.setDeletionDate(DateUtilities.now()); - } - return model; } diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index ab44d1b90..6c9e2a4f4 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -600,7 +600,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr TaskEditFragment tef = activity.getTaskEditFragment(); if (tef != null) { if (task.getId() == tef.model.getId()) { - tef.discardButtonClick(); + tef.discard(); } } TimerPlugin.stopTimer(notificationManager, taskService, context, task); diff --git a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java index 9ab179348..687742567 100644 --- a/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -288,16 +288,25 @@ public class RepeatControlSet extends TaskEditControlFragment { repeatUntilValue = task.getRepeatUntil(); } + @Override + public boolean hasChanges(Task original) { + return !getRecurrenceValue().equals(original.getRecurrence()) || repeatUntilValue != original.getRepeatUntil(); + } + @Override public void apply(Task task) { + task.setRecurrence(getRecurrenceValue()); + task.setRepeatUntil(repeatUntilValue); + } + + private String getRecurrenceValue() { String result = getRecurrence(); if (type.getSelectedItemPosition() == TYPE_COMPLETION_DATE && !TextUtils.isEmpty(result)) { result += ";FROM=COMPLETION"; //$NON-NLS-1$ } - task.setRecurrence(result); - task.setRepeatUntil(repeatUntilValue); + return result; } private void applyRecurrence() { diff --git a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java index e6ba667ab..aa044f9e5 100644 --- a/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java +++ b/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java @@ -47,7 +47,6 @@ import org.tasks.ui.TaskEditControlFragment; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -322,6 +321,11 @@ public final class TagsControlSet extends TaskEditControlFragment { return TAG; } + @Override + public boolean hasChanges(Task original) { + return !getExistingTags(original.getUUID()).equals(getSelectedTags(false)); + } + protected void refreshDisplayView() { String tagString = buildTagString(); if (!TextUtils.isEmpty(tagString)) { @@ -333,22 +337,8 @@ public final class TagsControlSet extends TaskEditControlFragment { } } - /** - * Save the given array of tags into the database - */ - private boolean synchronizeTags(long taskId, String taskUuid) { - Query query = Query.select(Metadata.PROPERTIES).where( - Criterion.and( - TaskToTagMetadata.TASK_UUID.eq(taskUuid), - Metadata.DELETION_DATE.eq(0)) - ); - Set existingTags = newHashSet(transform(metadataDao.toList(query), new Function() { - @Override - public TagData apply(Metadata metadata) { - return tagDataDao.getByUuid(metadata.getValue(TaskToTagMetadata.TAG_UUID)); - } - })); - Set selectedTags = newHashSet(transform(getTagList(), new Function() { + private Set getSelectedTags(final boolean createMissingTags) { + return newHashSet(transform(getTagList(), new Function() { @Override public TagData apply(String tagName) { TagData tagData = tagDataDao.getTagByName(tagName, TagData.PROPERTIES); @@ -356,11 +346,35 @@ public final class TagsControlSet extends TaskEditControlFragment { // create missing tags tagData = new TagData(); tagData.setName(tagName); - tagDataDao.persist(tagData); + if (createMissingTags) { + tagDataDao.persist(tagData); + } } return tagData; } })); + } + + private Set getExistingTags(String taskUuid) { + Query query = Query.select(Metadata.PROPERTIES).where( + Criterion.and( + TaskToTagMetadata.TASK_UUID.eq(taskUuid), + Metadata.DELETION_DATE.eq(0)) + ); + return newHashSet(transform(metadataDao.toList(query), new Function() { + @Override + public TagData apply(Metadata metadata) { + return tagDataDao.getByUuid(metadata.getValue(TaskToTagMetadata.TAG_UUID)); + } + })); + } + + /** + * Save the given array of tags into the database + */ + private boolean synchronizeTags(long taskId, String taskUuid) { + Set existingTags = getExistingTags(taskUuid); + Set selectedTags = getSelectedTags(true); Sets.SetView added = difference(selectedTags, existingTags); Sets.SetView removed = difference(existingTags, selectedTags); deleteLinks(taskId, taskUuid, removed); diff --git a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java index 7b7904722..77c8ced7a 100644 --- a/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java +++ b/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java @@ -185,6 +185,12 @@ public class TimerControlSet extends TaskEditControlFragment { estimatedSeconds = task.getEstimatedSeconds(); } + @Override + public boolean hasChanges(Task original) { + return elapsed.getTimeDurationInSeconds() != original.getElapsedSeconds() || + estimated.getTimeDurationInSeconds() != original.getEstimatedSeconds(); + } + @Override public void apply(Task task) { task.setElapsedSeconds(elapsed.getTimeDurationInSeconds()); diff --git a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java index 8dfed6c40..43969de1c 100644 --- a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java @@ -17,6 +17,7 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import com.google.api.client.util.Strings; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; @@ -152,6 +153,11 @@ public class EditTitleControlSet extends TaskEditControlFragment { return TAG; } + @Override + public boolean hasChanges(Task original) { + return !getTitle().equals(original.getTitle()); + } + @Override public void initialize(boolean isNewTask, Task task) { this.isNewTask = isNewTask; @@ -164,15 +170,18 @@ public class EditTitleControlSet extends TaskEditControlFragment { @Override public void apply(Task task) { - task.setTitle(getTitle()); + 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); } } - public String getTitle() { - return editText.getText().toString(); + private String getTitle() { + return editText.getText().toString().trim(); } public void hideKeyboard() { diff --git a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java index ce1f27769..eb75ef240 100644 --- a/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java @@ -182,9 +182,17 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt @Override public void apply(Task task) { + task.setHideUntil(getHideUntil(task)); + } + + @Override + public boolean hasChanges(Task original) { + return original.getHideUntil() != getHideUntil(original); + } + + private long getHideUntil(Task task) { HideUntilValue selectedItem = (HideUntilValue) spinner.getSelectedItem(); - long hideUntil = task.createHideUntil(selectedItem.setting, selectedItem.date); - task.setHideUntil(hideUntil); + return task.createHideUntil(selectedItem.setting, selectedItem.date); } @Override diff --git a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java index dc25f9b73..abd5f986c 100644 --- a/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.java @@ -54,6 +54,7 @@ import butterknife.OnClick; import butterknife.OnItemSelected; import static com.google.common.collect.Lists.newArrayList; +import static com.google.common.collect.Sets.newHashSet; import static com.todoroo.andlib.utility.DateUtilities.getLongDateStringWithTime; import static org.tasks.date.DateTimeUtils.newDateTime; @@ -119,14 +120,7 @@ public class ReminderControlSet extends TaskEditControlFragment { } setup(Longs.asList(savedInstanceState.getLongArray(EXTRA_ALARMS)), geofences); } else { - final List alarms = new ArrayList<>(); - alarmService.getAlarms(taskId, new Callback() { - @Override - public void apply(Metadata entry) { - alarms.add(entry.getValue(AlarmFields.TIME)); - } - }); - setup(alarms, geofenceService.getGeofences(taskId)); + setup(currentAlarms(), geofenceService.getGeofences(taskId)); } addSpinner.setAdapter(remindAdapter); @@ -134,6 +128,17 @@ public class ReminderControlSet extends TaskEditControlFragment { return view; } + private List currentAlarms() { + final List alarms = new ArrayList<>(); + alarmService.getAlarms(taskId, new Callback() { + @Override + public void apply(Metadata entry) { + alarms.add(entry.getValue(AlarmFields.TIME)); + } + }); + return alarms; + } + @OnItemSelected(R.id.alarms_add_spinner) void addAlarm(int position) { String selected = spinnerOptions.get(position); @@ -208,9 +213,17 @@ public class ReminderControlSet extends TaskEditControlFragment { updateSpinner(); } + @Override + public boolean hasChanges(Task original) { + return getFlags() != original.getReminderFlags() || + getRandomReminderPeriod() != original.getReminderPeriod() || + !newHashSet(currentAlarms()).equals(getAlarms()) || + !newHashSet(geofenceService.getGeofences(taskId)).equals(getGeofences()); + } + @Override public void apply(Task task) { - task.setReminderFlags(getValue()); + task.setReminderFlags(getFlags()); task.setReminderPeriod(getRandomReminderPeriod()); @@ -227,7 +240,7 @@ public class ReminderControlSet extends TaskEditControlFragment { super.onSaveInstanceState(outState); outState.putLong(EXTRA_TASK_ID, taskId); - outState.putInt(EXTRA_FLAGS, getValue()); + outState.putInt(EXTRA_FLAGS, getFlags()); outState.putLong(EXTRA_RANDOM_REMINDER, getRandomReminderPeriod()); outState.putLongArray(EXTRA_ALARMS, Longs.toArray(getAlarms())); outState.putParcelableArrayList(EXTRA_GEOFENCES, newArrayList(getGeofences())); @@ -290,7 +303,7 @@ public class ReminderControlSet extends TaskEditControlFragment { alertItem.setTag(geofence); } - private int getValue() { + private int getFlags() { int value = 0; if(whenDue) { value |= Task.NOTIFY_AT_DEADLINE; diff --git a/src/main/java/org/tasks/ui/CalendarControlSet.java b/src/main/java/org/tasks/ui/CalendarControlSet.java index e9e05fa33..21e56761a 100644 --- a/src/main/java/org/tasks/ui/CalendarControlSet.java +++ b/src/main/java/org/tasks/ui/CalendarControlSet.java @@ -101,6 +101,11 @@ public class CalendarControlSet extends TaskEditControlFragment { eventUri = task.getCalendarURI(); } + @Override + public boolean hasChanges(Task original) { + return !isNullOrEmpty(calendarId); + } + @Override public void apply(Task task) { if (!task.hasDueDate()) { @@ -128,11 +133,7 @@ public class CalendarControlSet extends TaskEditControlFragment { } catch (Exception e) { Timber.e(e, "unable-to-update-calendar: %s", task.getCalendarURI()); } - - return; - } - - if (!isNullOrEmpty(calendarId)) { + } else if (!isNullOrEmpty(calendarId)) { ContentResolver cr = context.getContentResolver(); try{ ContentValues values = new ContentValues(); diff --git a/src/main/java/org/tasks/ui/DeadlineControlSet.java b/src/main/java/org/tasks/ui/DeadlineControlSet.java index 319530475..b43b4504a 100644 --- a/src/main/java/org/tasks/ui/DeadlineControlSet.java +++ b/src/main/java/org/tasks/ui/DeadlineControlSet.java @@ -255,6 +255,11 @@ public class DeadlineControlSet extends TaskEditControlFragment { return TAG; } + @Override + public boolean hasChanges(Task original) { + return original.getDueDate() != getDueDate(); + } + @Override public void initialize(boolean isNewTask, Task task) { if (task.hasDueDate()) { diff --git a/src/main/java/org/tasks/ui/DescriptionControlSet.java b/src/main/java/org/tasks/ui/DescriptionControlSet.java index c83b74ca1..e4c206707 100644 --- a/src/main/java/org/tasks/ui/DescriptionControlSet.java +++ b/src/main/java/org/tasks/ui/DescriptionControlSet.java @@ -73,4 +73,9 @@ public class DescriptionControlSet extends TaskEditControlFragment { public void apply(Task task) { task.setNotes(description); } + + @Override + public boolean hasChanges(Task original) { + return !description.equals(original.getNotes()); + } } diff --git a/src/main/java/org/tasks/ui/PriorityControlSet.java b/src/main/java/org/tasks/ui/PriorityControlSet.java index 804191a38..78026ff4d 100644 --- a/src/main/java/org/tasks/ui/PriorityControlSet.java +++ b/src/main/java/org/tasks/ui/PriorityControlSet.java @@ -100,6 +100,11 @@ public class PriorityControlSet extends TaskEditControlFragment { task.setImportance(getPriority()); } + @Override + public boolean hasChanges(Task original) { + return original.getImportance() != getPriority(); + } + private void tintRadioButton(AppCompatRadioButton radioButton, int priority) { int color = checkBoxes.getPriorityColors().get(priority); radioButton.setSupportButtonTintList(new ColorStateList(new int[][]{ diff --git a/src/main/java/org/tasks/ui/TaskEditControlFragment.java b/src/main/java/org/tasks/ui/TaskEditControlFragment.java index 501f50b89..cf85d8ba8 100644 --- a/src/main/java/org/tasks/ui/TaskEditControlFragment.java +++ b/src/main/java/org/tasks/ui/TaskEditControlFragment.java @@ -38,4 +38,8 @@ public abstract class TaskEditControlFragment extends InjectingFragment { public abstract void initialize(boolean isNewTask, Task task); public abstract void apply(Task task); + + public boolean hasChanges(Task original) { + return false; + } } diff --git a/src/main/res/menu/task_edit_fragment.xml b/src/main/res/menu/task_edit_fragment.xml index 4a989547b..b31e94370 100644 --- a/src/main/res/menu/task_edit_fragment.xml +++ b/src/main/res/menu/task_edit_fragment.xml @@ -13,12 +13,9 @@ android:title="@string/premium_record_audio" android:icon="@drawable/ic_mic_24dp" tasks:showAsAction="ifRoom"/> - + tasks:showAsAction="ifRoom"/> \ No newline at end of file diff --git a/src/main/res/values-bg-rBG/strings.xml b/src/main/res/values-bg-rBG/strings.xml index a051c1d96..9baecaea3 100644 --- a/src/main/res/values-bg-rBG/strings.xml +++ b/src/main/res/values-bg-rBG/strings.xml @@ -63,7 +63,6 @@ Време, което вече е отделено Запази промените Запази - Откажи промените Приблизително %s Изминали %s Без време diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 409f5e2c8..2c88ff435 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -51,7 +51,6 @@ Quant temps us portarà? Temps que ja s\'ha invertit en la Tasca Desa els canvis - Descartar canvis Activitat cap hora Al finalitzar la data límit diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index bdc122343..d8ee30973 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -54,7 +54,6 @@ Kolik času asi zabere? Jak dlouho už na úkolu pracujete Uložit změny - Zrušit změny Činnost Zal. %s Uplynutí %s diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index 75cfa3256..f3d591b1a 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -58,7 +58,6 @@ Zeit, die schon für die Aufgabe gebraucht wurde Änderungen speichern Speichern - Änderungen verwerfen Aktivität Geschätzt %s %s verstrichen diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index ee69268b0..a998e5e4a 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -53,7 +53,6 @@ Πόσο θα διαρκέσει? Χρόνος που ήδη πέρασε Αποθήκευση αλλαγών - Αναίρεση αλλαγών Δραστηριότητα Εκτιμώμενο %s Πέρασε %s diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 3ec405d7b..d47aedfbc 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -59,7 +59,6 @@ Tiempo ya empleado en la tarea Guardar cambios Guardar - Descartar cambios Actividad Transcurrido %s Sin horario diff --git a/src/main/res/values-fa/strings.xml b/src/main/res/values-fa/strings.xml index fc56000e4..0986f9e14 100644 --- a/src/main/res/values-fa/strings.xml +++ b/src/main/res/values-fa/strings.xml @@ -41,7 +41,6 @@ زمان سپری شده ذخیره تغییرات ذخیره - رد تغییرات فعالیت بدون زمان تاریخ موعود diff --git a/src/main/res/values-fi/strings.xml b/src/main/res/values-fi/strings.xml index 0eddce9be..32802eaa3 100644 --- a/src/main/res/values-fi/strings.xml +++ b/src/main/res/values-fi/strings.xml @@ -22,7 +22,6 @@ Kuinka pitkään se kestää? Aika on jo käytetty Tallenna muutokset - Hylkää muutokset Toiminta Uh oh! It looks like you may have a corrupted database. If you see this error regularly, we suggest you clear all diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index a8b8b2382..daef88d6e 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -58,7 +58,6 @@ Temps déjà passé sur la tâche Sauvegarder les modifications Sauvegarder - Annuler les modifications Activité Restant %s Passé %s diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml index 4a056756f..9b9af630b 100644 --- a/src/main/res/values-hu/strings.xml +++ b/src/main/res/values-hu/strings.xml @@ -31,7 +31,6 @@ Meddig fog tartani? Már eltöltött idő Módosítások mentése - Módosítások elvetése Tevékenység Prioritás Leírás diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index fd52b9f48..d1f4ff976 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -60,7 +60,6 @@ Tempo già speso per l\'attività Salva le modifiche Salva - Annulla modifiche Attività Stima %s Trascorso %s diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index c15aa127f..9e5635907 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -60,7 +60,6 @@ 既にタスクに費やした時間 変更の保存 保存 - 変更を保存しない 活動 予定 %s 経過時間 %s diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index 283560095..678217168 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -62,7 +62,6 @@ 일정에 이미 소모한 시간 변경사항 저장 저장 - 변경 사항 취소 활동 내역 동부표준시 %s 경과 시간: %s diff --git a/src/main/res/values-nb/strings.xml b/src/main/res/values-nb/strings.xml index d70773ebe..5823aa208 100644 --- a/src/main/res/values-nb/strings.xml +++ b/src/main/res/values-nb/strings.xml @@ -46,7 +46,6 @@ Hvor lang tid vil det ta? Tid brukt på oppgaven til nå Lagre endringer - Forkast endringer Viktighet Notater Filer diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index 49914c5da..ebb89838d 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -60,7 +60,6 @@ Bestede tijd tot nu toe Wijzigingen opslaan Opslaan - Negeer veranderingen Activiteit Gesch. %s Verstreken %s diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 03db966fd..51e5cb68f 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -54,7 +54,6 @@ Jak długo to zajmie? Czas dotychczas spędzony nad tym zadaniem Zapisz zmiany - Odrzuć zmiany Aktywność Minęło %s Bez godziny diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index fb486e28e..ad35333cc 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -53,7 +53,6 @@ Quanto tempo isto vai levar? Tempo já gasto na tarefa Salvar alterações - Descartas mudanças Atividades Decorrido %s Sem horário diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index 640106b43..c85e8c6dd 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -60,7 +60,6 @@ Tempo já gasto Gravar alterações Guardar - Rejeitar alterações Atividade Decorrido %s Sem tempo diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index bfcbe59c4..d93e41b38 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -60,7 +60,6 @@ Затраченное время Сохранить изменения Сохранить - Отменить изменения? Действия Ост. %s Прошло %s diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index 2360fd7cd..f47a21f35 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -57,7 +57,6 @@ Ako dlho už pracujete na úlohe Uložiť zmeny Uložiť - Vymazať zmeny Aktivita Spolu %s Uplynulo %s diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml index e0185a7ac..920af0e1f 100644 --- a/src/main/res/values-uk/strings.xml +++ b/src/main/res/values-uk/strings.xml @@ -57,7 +57,6 @@ Як довго це триватиме? Час вже потрачео Зберегти зміни - Відмінити зміни Активність Зал. %s Час, що минув %s diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 5537d5b39..99a8f197c 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -76,6 +76,10 @@ File %1$s contained %2$s.\n\n + Are you sure you want to discard your changes? + + Keep editing + Delete this task? @@ -195,9 +199,6 @@ File %1$s contained %2$s.\n\n Save - - Discard changes - Activity @@ -911,8 +912,9 @@ File %1$s contained %2$s.\n\n Interrupt Doze mode for notifications Android will significantly delay notifications while device is in Doze mode Android will allow limited interruptions while device is in Doze mode + (No title) - + disable every fifteen minutes