New reminder control set

This qualifies as spinner abuse
pull/281/head
Alex Baker 11 years ago
parent b76c4ec065
commit 60c1b59585

@ -389,7 +389,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
controlSetMap.put(getString(R.string.TEA_ctrl_notes_pref), controlSetMap.put(getString(R.string.TEA_ctrl_notes_pref),
notesControlSet); notesControlSet);
ReminderControlSet reminderControl = new ReminderControlSet(preferences, alarmService, this); ReminderControlSet reminderControl = new ReminderControlSet(alarmService, this);
controls.add(reminderControl); controls.add(reminderControl);
controlSetMap.put(getString(R.string.TEA_ctrl_reminders_pref), controlSetMap.put(getString(R.string.TEA_ctrl_reminders_pref),
reminderControl); reminderControl);

@ -1,136 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.alarms;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.joda.time.DateTime;
import org.tasks.R;
import org.tasks.dialogs.DateAndTimePickerDialog;
import java.util.Date;
import java.util.LinkedHashSet;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
/**
* Control set to manage adding and removing tags
*
* @author Tim Su <tim@todoroo.com>
*
*/
public final class AlarmControlSet extends TaskEditControlSetBase {
private final AlarmService alarmService;
private TaskEditFragment taskEditFragment;
private LinearLayout alertsContainer;
public AlarmControlSet(AlarmService alarmService, TaskEditFragment taskEditFragment) {
super(taskEditFragment.getActivity(), R.layout.control_set_alarms);
this.alarmService = alarmService;
this.taskEditFragment = taskEditFragment;
}
@Override
public void readFromTaskOnInitialize() {
alertsContainer.removeAllViews();
alarmService.getAlarms(model.getId(), new Callback<Metadata>() {
@Override
public void apply(Metadata entry) {
addAlarm(newDate(entry.getValue(AlarmFields.TIME)));
}
});
}
@Override
protected void afterInflate() {
this.alertsContainer = (LinearLayout) getView().findViewById(R.id.alert_container);
View.OnClickListener addAlarmListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
addAlarm(newDate());
}
};
getView().findViewById(R.id.alarms_add).setOnClickListener(addAlarmListener);
}
@Override
protected void writeToModelAfterInitialized(Task task) {
LinkedHashSet<Long> alarms = new LinkedHashSet<>();
for(int i = 0; i < alertsContainer.getChildCount(); i++) {
Long dateValue = (Long) alertsContainer.getChildAt(i).getTag();
if(dateValue == null) {
continue;
}
alarms.add(dateValue);
}
if(alarmService.synchronizeAlarms(task.getId(), alarms)) {
task.setModificationDate(DateUtilities.now());
}
}
private void addAlarm(Date alert) {
final View alertItem = LayoutInflater.from(activity).inflate(R.layout.alarm_edit_row, null);
alertsContainer.addView(alertItem);
alertItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
DateAndTimePickerDialog.dateAndTimePickerDialog(taskEditFragment.getFragmentManager(), taskEditFragment.getActivity(), newDateTime((Long) alertItem.getTag()), new DateAndTimePickerDialog.OnDateTimePicked() {
@Override
public void onDateTimePicked(DateTime dateTime) {
v.setTag(dateTime.getMillis());
TextView label = (TextView) v.findViewById(R.id.alarm_string);
label.setText(getDisplayString(activity, dateTime.getMillis()));
}
}, new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
}
});
alertItem.setTag(alert.getTime());
TextView display = (TextView) alertItem.findViewById(R.id.alarm_string);
display.setText(getDisplayString(activity, alert.getTime()));
ImageButton reminderRemoveButton;
reminderRemoveButton = (ImageButton)alertItem.findViewById(R.id.button1);
reminderRemoveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertsContainer.removeView(alertItem);
}
});
}
public static String getDisplayString(Context context, long forDate) {
DateTime dateTime = newDateTime(forDate);
Date d = dateTime.toDate();
return (dateTime.getYear() == newDateTime().getYear()
? DateUtilities.getDateStringHideYear(d)
: DateUtilities.getDateString(d)) +
", " + DateUtilities.getTimeString(context, d);
}
}

@ -576,4 +576,8 @@ public class Task extends RemoteModel {
private boolean isReminderFlagSet(int flag) { private boolean isReminderFlagSet(int flag) {
return (getReminderFlags() & flag) > 0; return (getReminderFlags() & flag) > 0;
} }
public boolean hasRandomReminder() {
return getReminderPeriod() > 0;
}
} }

@ -16,7 +16,6 @@ import android.view.WindowManager;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.ImageButton;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
@ -211,9 +210,7 @@ public final class TagsControlSet extends PopupControlSet {
} }
}); });
ImageButton reminderRemoveButton; tagItem.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
reminderRemoveButton = (ImageButton)tagItem.findViewById(R.id.button1);
reminderRemoveButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
TextView lastView = getLastTextView(); TextView lastView = getLastTextView();

@ -156,9 +156,7 @@ public class HideUntilControlSet extends TaskEditControlSetBase implements OnIte
private void customDateFinished() { private void customDateFinished() {
HideUntilValue[] list = createHideUntilList(customDate.getTime()); HideUntilValue[] list = createHideUntilList(customDate.getTime());
adapter = new ArrayAdapter<>( adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, list);
activity, android.R.layout.simple_spinner_item,
list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter); spinner.setAdapter(adapter);
spinner.setSelection(0); spinner.setSelection(0);

@ -7,15 +7,11 @@ package com.todoroo.astrid.ui;
import android.app.Activity; import android.app.Activity;
import android.view.View; import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.Spinner; import android.widget.Spinner;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.tasks.R; import org.tasks.R;
@ -25,34 +21,15 @@ import org.tasks.R;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class RandomReminderControlSet extends TaskEditControlSetBase { public class RandomReminderControlSet {
private final CheckBox settingCheckbox;
private final Spinner periodSpinner; private final Spinner periodSpinner;
private boolean periodSpinnerInitialized = false;
private final int[] hours; private final int[] hours;
public RandomReminderControlSet(Activity activity, View parentView, int layout) { public RandomReminderControlSet(Activity activity, View parentView) {
super(activity, layout);
settingCheckbox = (CheckBox) parentView.findViewById(R.id.reminder_random);
periodSpinner = (Spinner) parentView.findViewById(R.id.reminder_random_interval); periodSpinner = (Spinner) parentView.findViewById(R.id.reminder_random_interval);
periodSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { periodSpinner.setVisibility(View.VISIBLE);
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if(periodSpinnerInitialized) {
settingCheckbox.setChecked(true);
}
periodSpinnerInitialized = true;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// ignore
}
});
// create adapter // create adapter
ArrayAdapter<String> adapter = new ArrayAdapter<>( ArrayAdapter<String> adapter = new ArrayAdapter<>(
activity, R.layout.simple_spinner_item, activity, R.layout.simple_spinner_item,
@ -68,16 +45,9 @@ public class RandomReminderControlSet extends TaskEditControlSetBase {
} }
} }
@Override public void readFromTaskOnInitialize(Task model) {
protected void afterInflate() {
// Nothing to do here
}
@Override
protected void readFromTaskOnInitialize() {
long time = model.getReminderPeriod(); long time = model.getReminderPeriod();
boolean enabled = time > 0;
if(time <= 0) { if(time <= 0) {
/* default interval for spinner if date is unselected */ /* default interval for spinner if date is unselected */
time = DateUtilities.ONE_WEEK * 2; time = DateUtilities.ONE_WEEK * 2;
@ -90,20 +60,10 @@ public class RandomReminderControlSet extends TaskEditControlSetBase {
} }
} }
periodSpinner.setSelection(i); periodSpinner.setSelection(i);
settingCheckbox.setChecked(enabled);
}
@Override
protected void writeToModelAfterInitialized(Task task) {
if(settingCheckbox.isChecked()) {
int hourValue = hours[periodSpinner.getSelectedItemPosition()];
task.setReminderPeriod(hourValue * DateUtilities.ONE_HOUR);
} else {
task.setReminderPeriod(0L);
}
} }
public boolean hasRandomReminder() { public long getReminderPeriod() {
return settingCheckbox.isChecked(); int hourValue = hours[periodSpinner.getSelectedItemPosition()];
return hourValue * DateUtilities.ONE_HOUR;
} }
} }

@ -5,23 +5,38 @@
*/ */
package com.todoroo.astrid.ui; package com.todoroo.astrid.ui;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.activity.TaskEditFragment; import com.todoroo.astrid.activity.TaskEditFragment;
import com.todoroo.astrid.alarms.AlarmControlSet; import com.todoroo.astrid.alarms.AlarmFields;
import com.todoroo.astrid.alarms.AlarmService; import com.todoroo.astrid.alarms.AlarmService;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.ActivityPreferences; import org.tasks.dialogs.DateAndTimePickerDialog;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.List;
import static org.tasks.date.DateTimeUtils.newDateTime;
/** /**
* Control set dealing with reminder settings * Control set dealing with reminder settings
@ -29,43 +44,36 @@ import org.tasks.preferences.ActivityPreferences;
* @author Tim Su <tim@todoroo.com> * @author Tim Su <tim@todoroo.com>
* *
*/ */
public class ReminderControlSet extends PopupControlSet { public class ReminderControlSet extends TaskEditControlSetBase implements AdapterView.OnItemSelectedListener {
private CheckBox during, after;
private static final Logger log = LoggerFactory.getLogger(ReminderControlSet.class);
private Spinner mode; private Spinner mode;
private Spinner addSpinner;
private TextView modeDisplay; private TextView modeDisplay;
private final TextView label;
private RandomReminderControlSet randomControlSet; private RandomReminderControlSet randomControlSet;
private AlarmControlSet alarmControl; private LinearLayout alertContainer;
private boolean whenDue;
public ReminderControlSet(ActivityPreferences preferences, AlarmService alarmService, TaskEditFragment taskEditFragment) { private boolean whenOverdue;
super(preferences, taskEditFragment.getActivity(), R.layout.control_set_reminders_dialog, R.layout.control_set_reminders, R.string.TEA_reminders_group_label); private AlarmService alarmService;
label = (TextView) getView().findViewById(R.id.display_row_edit); private TaskEditFragment taskEditFragment;
alarmControl = new AlarmControlSet(alarmService, taskEditFragment); private List<String> spinnerOptions = new ArrayList<>();
LinearLayout reminderRow = (LinearLayout) getView().findViewById(R.id.reminder_row); private ArrayAdapter<String> remindAdapter;
reminderRow.addView(alarmControl.getView());
}
public void setValue(int flags) {
during.setChecked((flags & Task.NOTIFY_AT_DEADLINE) > 0);
after.setChecked((flags &
Task.NOTIFY_AFTER_DEADLINE) > 0);
if((flags & Task.NOTIFY_MODE_NONSTOP) > 0) { public ReminderControlSet(AlarmService alarmService, TaskEditFragment taskEditFragment) {
mode.setSelection(2); super(taskEditFragment.getActivity(), R.layout.control_set_reminders);
} else if((flags & Task.NOTIFY_MODE_FIVE) > 0) { this.alarmService = alarmService;
mode.setSelection(1); this.taskEditFragment = taskEditFragment;
} else {
mode.setSelection(0);
}
} }
public int getValue() { public int getValue() {
int value = 0; int value = 0;
if(during.isChecked()) { if(whenDue) {
value |= Task.NOTIFY_AT_DEADLINE; value |= Task.NOTIFY_AT_DEADLINE;
} }
if(after.isChecked()) { if(whenOverdue) {
value |= Task.NOTIFY_AFTER_DEADLINE; value |= Task.NOTIFY_AFTER_DEADLINE;
} }
@ -79,48 +87,139 @@ public class ReminderControlSet extends PopupControlSet {
return value; return value;
} }
private void addAlarmRow(Long timestamp) {
addAlarmRow(getDisplayString(timestamp), timestamp, new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private View addAlarmRow(String text, Long timestamp, final View.OnClickListener onRemove) {
final View alertItem = LayoutInflater.from(activity).inflate(R.layout.alarm_edit_row, null);
alertContainer.addView(alertItem);
alertItem.setTag(timestamp);
TextView display = (TextView) alertItem.findViewById(R.id.alarm_string);
display.setText(text);
alertItem.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
alertContainer.removeView(alertItem);
onRemove.onClick(v);
updateSpinner();
}
});
updateSpinner();
return alertItem;
}
private void addNewAlarm() {
DateAndTimePickerDialog.dateAndTimePickerDialog(taskEditFragment.getFragmentManager(),
taskEditFragment.getActivity(), newDateTime().withMillisOfDay(0),
new DateAndTimePickerDialog.OnDateTimePicked() {
@Override
public void onDateTimePicked(DateTime dateTime) {
addAlarmRow(dateTime.getMillis());
}
}, new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
}
});
}
private void updateSpinner() {
addSpinner.setSelection(0);
spinnerOptions.clear();
spinnerOptions.add("");
if (!whenDue) {
spinnerOptions.add(taskEditFragment.getString(R.string.when_due));
}
if (!whenOverdue) {
spinnerOptions.add(taskEditFragment.getString(R.string.when_overdue));
}
if (randomControlSet == null) {
spinnerOptions.add(taskEditFragment.getString(R.string.randomly));
}
spinnerOptions.add(taskEditFragment.getString(R.string.pick_a_date_and_time));
remindAdapter.notifyDataSetChanged();
}
@Override @Override
protected void afterInflate() { protected void afterInflate() {
during = (CheckBox) getDialogView().findViewById(R.id.reminder_due); alertContainer = (LinearLayout) getView().findViewById(R.id.alert_container);
after = (CheckBox) getDialogView().findViewById(R.id.reminder_overdue); getView().findViewById(R.id.alarms_add).setOnClickListener(new OnClickListener() {
modeDisplay = (TextView) getDialogView().findViewById(R.id.reminder_alarm_display); @Override
mode = (Spinner) getDialogView().findViewById(R.id.reminder_alarm); public void onClick(View arg0) {
View modeContainer = getDialogView().findViewById(R.id.reminder_alarm_container); if (spinnerOptions.size() == 2) {
modeContainer.setOnClickListener(new OnClickListener() { addNewAlarm();
} else {
addSpinner.setOnItemSelectedListener(ReminderControlSet.this);
addSpinner.performClick();
}
}
});
addSpinner = (Spinner) getView().findViewById(R.id.alarms_add_spinner);
remindAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item, spinnerOptions) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v;
// If this is the initial dummy entry, make it hidden
if (position == 0) {
TextView tv = new TextView(getContext());
tv.setHeight(0);
tv.setVisibility(View.GONE);
v = tv;
}
else {
// Pass convertView as null to prevent reuse of special case views
v = super.getDropDownView(position, null, parent);
}
// Hide scroll bar because it appears sometimes unnecessarily, this does not prevent scrolling
parent.setVerticalScrollBarEnabled(false);
return v;
}
};
addSpinner.setAdapter(remindAdapter);
remindAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
modeDisplay = (TextView) getView().findViewById(R.id.reminder_alarm_display);
mode = (Spinner) getView().findViewById(R.id.reminder_alarm);
modeDisplay.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mode.performClick(); mode.performClick();
} }
}); });
randomControlSet = new RandomReminderControlSet(activity, getDialogView(), -1);
String[] list = new String[] { String[] list = new String[] {
activity.getString(R.string.TEA_reminder_mode_once), activity.getString(R.string.ring_once),
activity.getString(R.string.TEA_reminder_mode_five), activity.getString(R.string.ring_five_times),
activity.getString(R.string.TEA_reminder_mode_nonstop), activity.getString(R.string.ring_nonstop),
}; };
final ArrayAdapter<String> adapter = new ArrayAdapter<>( final ArrayAdapter<String> modeAdapter = new ArrayAdapter<>(
activity, android.R.layout.simple_spinner_item, list); activity, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); modeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mode.setOnItemSelectedListener(new OnItemSelectedListener() { mode.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override @Override
public void onItemSelected(AdapterView<?> parent, View view, public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) { int position, long id) {
modeDisplay.setText(adapter.getItem(position)); modeDisplay.setText(modeAdapter.getItem(position));
} }
@Override @Override
public void onNothingSelected(AdapterView<?> parent) { public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
}); });
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
mode.setAdapter(adapter); mode.setAdapter(modeAdapter);
} }
}); });
} }
@ -128,76 +227,120 @@ public class ReminderControlSet extends PopupControlSet {
@Override @Override
protected void readFromTaskOnInitialize() { protected void readFromTaskOnInitialize() {
setValue(model.getReminderFlags()); setValue(model.getReminderFlags());
// Calls to get view will force other control sets to load
randomControlSet.readFromTask(model); alertContainer.removeAllViews();
randomControlSet.readFromTaskOnInitialize(); if (whenDue) {
addDue();
}
if (whenOverdue) {
addOverdue();
}
if (model.hasRandomReminder()) {
addRandomReminder();
}
alarmService.getAlarms(model.getId(), new Callback<Metadata>() {
@Override
public void apply(Metadata entry) {
addAlarmRow(entry.getValue(AlarmFields.TIME));
}
});
updateSpinner();
} }
@Override private void addDue() {
protected void writeToModelAfterInitialized(Task task) { whenDue = true;
task.setReminderFlags(getValue()); addAlarmRow(taskEditFragment.getString(R.string.when_due), null, new OnClickListener() {
@Override
public void onClick(View v) {
whenDue = false;
}
});
}
randomControlSet.writeToModel(task); private void addOverdue() {
alarmControl.writeToModel(task); whenOverdue = true;
addAlarmRow(taskEditFragment.getString(R.string.when_overdue), null, new OnClickListener() {
@Override
public void onClick(View v) {
whenOverdue = false;
}
});
} }
@Override private void addRandomReminder() {
protected void refreshDisplayView() { View alarmRow = addAlarmRow(taskEditFragment.getString(R.string.randomly_once), null, new OnClickListener() {
int reminderCount = 0; @Override
StringBuilder reminderString = new StringBuilder(); public void onClick(View v) {
randomControlSet = null;
// Has random reminder? }
if ((randomControlSet != null && randomControlSet.hasRandomReminder()) || (randomControlSet == null && model.getReminderPeriod() > 0)) { });
reminderString.append(activity.getString(R.string.TEA_reminder_randomly_short)); randomControlSet = new RandomReminderControlSet(activity, alarmRow);
reminderCount++; randomControlSet.readFromTaskOnInitialize(model);
} }
private void setValue(int flags) {
whenDue = (flags & Task.NOTIFY_AT_DEADLINE) > 0;
whenOverdue = (flags & Task.NOTIFY_AFTER_DEADLINE) > 0;
int value; if((flags & Task.NOTIFY_MODE_NONSTOP) > 0) {
if (initialized) { mode.setSelection(2);
value = getValue(); } else if((flags & Task.NOTIFY_MODE_FIVE) > 0) {
mode.setSelection(1);
} else { } else {
value = model.getReminderFlags(); mode.setSelection(0);
} }
}
boolean appendedWhen = false; @Override
if ((value & Task.NOTIFY_AT_DEADLINE) > 0) { protected void writeToModelAfterInitialized(Task task) {
if (reminderCount > 0) { task.setReminderFlags(getValue());
reminderString.append(" & "); //$NON-NLS-1$
}
reminderString.append(activity.getString(R.string.TEA_reminder_when)).append(" "); //$NON-NLS-1$ task.setReminderPeriod(randomControlSet == null ? 0L : randomControlSet.getReminderPeriod());
reminderString.append(activity.getString(R.string.TEA_reminder_due_short));
reminderCount++;
appendedWhen = true;
}
if ((value & Task.NOTIFY_AFTER_DEADLINE) > 0 && reminderCount < 2) { LinkedHashSet<Long> alarms = new LinkedHashSet<>();
if (reminderCount > 0) { for(int i = 0; i < alertContainer.getChildCount(); i++) {
reminderString.append(" & "); //$NON-NLS-1$ Long dateValue = (Long) alertContainer.getChildAt(i).getTag();
if(dateValue == null) {
continue;
} }
alarms.add(dateValue);
}
if (!appendedWhen) { if(alarmService.synchronizeAlarms(task.getId(), alarms)) {
reminderString.append(activity.getString(R.string.TEA_reminder_when)).append(" "); //$NON-NLS-1$ task.setModificationDate(DateUtilities.now());
}
reminderString.append(activity.getString(R.string.TEA_reminder_overdue_short));
reminderCount++;
} }
}
if (reminderCount > 0) { private String getDisplayString(long forDate) {
String toDisplay; DateTime dateTime = newDateTime(forDate);
if (reminderCount == 1) { Date d = dateTime.toDate();
toDisplay = activity.getString(R.string.TEA_reminder_display_one, reminderString.toString()); return (dateTime.getYear() == newDateTime().getYear()
} else { ? DateUtilities.getDateStringHideYear(d)
toDisplay = activity.getString(R.string.TEA_reminder_display_multiple, reminderString.toString()); : DateUtilities.getDateString(d)) +
} ", " + DateUtilities.getTimeString(activity, d);
}
label.setText(toDisplay); @Override
label.setTextColor(themeColor); public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
} else { log.info("onItemSelected({}, {}, {}, {})", parent, view, position, id);
label.setText(R.string.TEA_reminders_group_label); addSpinner.setOnItemSelectedListener(null);
label.setTextColor(unsetColor); String selected = spinnerOptions.get(position);
if (selected.equals(taskEditFragment.getString(R.string.when_due))) {
addDue();
} else if(selected.equals(taskEditFragment.getString(R.string.when_overdue))) {
addOverdue();
} else if (selected.equals(taskEditFragment.getString(R.string.randomly))) {
addRandomReminder();
} else if (selected.equals(taskEditFragment.getString(R.string.pick_a_date_and_time))) {
addNewAlarm();
}
if (position != 0) {
updateSpinner();
} }
}
alarmControl.readFromTask(model); @Override
public void onNothingSelected(AdapterView<?> parent) {
addSpinner.setOnItemSelectedListener(null);
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 807 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/btn_dismiss_pressed" />
<item android:drawable="@drawable/btn_dismiss_normal" />
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

@ -4,21 +4,37 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingBottom="@dimen/task_edit_padding_top_bottom" android:paddingBottom="@dimen/task_edit_padding_top_bottom"
android:layout_marginBottom="@dimen/task_edit_padding_top_bottom" > android:layout_marginBottom="@dimen/task_edit_padding_top_bottom">
<TextView <LinearLayout
style="@android:style/TextAppearance"
android:id="@+id/alarm_string"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="100" android:orientation="horizontal"
android:textColor="?attr/asTextColor" /> android:layout_weight="100">
<ImageButton <TextView
style="@android:style/TextAppearance"
android:id="@+id/alarm_string"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/asTextColor" />
<Spinner
android:id="@+id/reminder_random_interval"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"/>
</LinearLayout>
<ImageView
android:id="@+id/button1" android:id="@+id/button1"
android:background="@drawable/btn_dismiss" android:src="?attr/ic_action_cancel"
android:contentDescription="@string/remove"
android:layout_width="32dip" android:layout_width="32dip"
android:layout_height="32dip" android:layout_height="32dip"
android:layout_gravity="center" android:layout_weight="1"
android:layout_weight="1" /> android:paddingRight="3dp"
android:paddingEnd="3dp" />
</LinearLayout> </LinearLayout>

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/alert_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
style="@android:style/TextAppearance"
android:id="@+id/alarms_add"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add_a_reminder"
android:textColor="?attr/asTextColorHint"
android:layout_marginBottom="@dimen/task_edit_padding_top_bottom"
android:paddingBottom="@dimen/task_edit_padding_top_bottom" />
</LinearLayout>

@ -24,26 +24,71 @@
<LinearLayout <LinearLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical"
android:paddingTop="@dimen/task_edit_padding_top_bottom"
android:paddingBottom="@dimen/task_edit_padding_top_bottom"
android:layout_marginTop="@dimen/task_edit_padding_top_bottom"
android:layout_marginBottom="@dimen/task_edit_padding_top_bottom">
<TextView <LinearLayout
android:id="@+id/display_row_edit" android:id="@+id/alert_container"
android:layout_width="wrap_content" android:orientation="vertical"
android:layout_height="wrap_content" android:layout_width="fill_parent"
android:gravity="start|center_vertical" android:layout_height="wrap_content" />
android:text="@string/TEA_importance_label"
android:textColor="?attr/asThemeTextColor"
android:textSize="@dimen/task_edit_text_size"
android:paddingTop="@dimen/task_edit_padding_top_bottom"
android:paddingBottom="@dimen/task_edit_padding_top_bottom"
android:layout_marginTop="@dimen/task_edit_padding_top_bottom"
android:layout_marginBottom="@dimen/task_edit_padding_top_bottom" />
<LinearLayout <LinearLayout
android:id="@+id/reminder_row"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" /> android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="start"
android:gravity="start"
android:layout_weight="50">
<TextView
android:textSize="@dimen/task_edit_text_size"
android:id="@+id/alarms_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add_a_reminder"
android:textColor="?attr/asTextColorHint" />
<Spinner
android:id="@+id/alarms_add_spinner"
android:layout_width="0dip"
android:layout_height="0dip" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="end"
android:gravity="end"
android:layout_weight="50">
<TextView
android:id="@+id/reminder_alarm_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/task_edit_text_size"
android:paddingRight="10dip"
android:paddingEnd="10dip"
android:textColor="?attr/asTextColor" />
<Spinner
android:id="@+id/reminder_alarm"
android:layout_width="0dip"
android:layout_height="0dip" />
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="utf-8"?><!--
** Copyright (c) 2012 Todoroo Inc
**
** See the file "LICENSE" for the full license governing this code.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="5dip"
android:paddingRight="5dip">
<LinearLayout
android:id="@+id/reminders_body"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- reminders -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:text="@string/TEA_reminder_label"
android:paddingTop="10dip"
style="@style/TextAppearance" />
<CheckBox
style="@style/TextAppearance"
android:id="@+id/reminder_due"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="@string/TEA_reminder_due" />
<CheckBox
style="@style/TextAppearance"
android:id="@+id/reminder_overdue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="@string/TEA_reminder_overdue" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<CheckBox
style="@style/TextAppearance"
android:id="@+id/reminder_random"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:text="@string/TEA_reminder_randomly" />
<Spinner
android:id="@+id/reminder_random_interval"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1px"
android:background="?android:attr/listDivider" />
<LinearLayout
android:id="@+id/reminder_alarm_container"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/TEA_reminder_alarm_label"
style="@style/TextAppearance" />
<TextView
android:id="@+id/reminder_alarm_display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:paddingLeft="10dip"
android:textColor="?attr/asThemeTextColor" />
<Spinner
android:id="@+id/reminder_alarm"
android:layout_width="0dip"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
<include layout="@layout/control_dialog_ok" />
</LinearLayout>

@ -28,10 +28,12 @@
android:textColorHint="?attr/asTextColorHint" android:textColorHint="?attr/asTextColorHint"
android:inputType="textCapSentences"/> android:inputType="textCapSentences"/>
<ImageButton android:id="@+id/button1" <ImageView
android:layout_width="32dip" android:id="@+id/button1"
android:layout_height="32dip" android:src="?attr/ic_action_cancel"
android:background="@drawable/btn_dismiss" android:contentDescription="@string/remove"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_margin="4dip"/> android:layout_margin="4dip"
android:layout_width="32dip"
android:layout_height="32dip" />
</LinearLayout> </LinearLayout>

@ -57,8 +57,6 @@
<item>Next Week</item> <item>Next Week</item>
<item>Next Month</item> <item>Next Month</item>
</string-array> </string-array>
<string name="TEA_reminder_display_one">ذكرني %s</string>
<string name="TEA_reminder_display_multiple">تذكير %s</string>
<string name="rmd_NoA_filter">تذكير!</string> <string name="rmd_NoA_filter">تذكير!</string>
<string name="rmd_NoA_done">اكمل</string> <string name="rmd_NoA_done">اكمل</string>
<string name="rmd_NoA_snooze">غفوة</string> <string name="rmd_NoA_snooze">غفوة</string>

@ -331,16 +331,6 @@
<string name="TEA_reminder_due">Когато задачата е към крайния срок</string> <string name="TEA_reminder_due">Когато задачата е към крайния срок</string>
<string name="TEA_reminder_overdue">Когато задачата е просрочена</string> <string name="TEA_reminder_overdue">Когато задачата е просрочена</string>
<string name="TEA_reminder_randomly">Случайно веднъж</string> <string name="TEA_reminder_randomly">Случайно веднъж</string>
<string name="TEA_reminder_alarm_label">Тип на Тон на звънене/вибрация</string>
<string name="TEA_reminder_mode_once">Веднъж</string>
<string name="TEA_reminder_mode_five">Пет пъти</string>
<string name="TEA_reminder_mode_nonstop">Докато не отхвърля алармата</string>
<string name="TEA_reminder_when">кога</string>
<string name="TEA_reminder_due_short">до</string>
<string name="TEA_reminder_overdue_short">просрочен</string>
<string name="TEA_reminder_randomly_short">произволно</string>
<string name="TEA_reminder_display_one">Напомни ми %s</string>
<string name="TEA_reminder_display_multiple">Напомни %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>час</item> <item>час</item>
<item>ден</item> <item>ден</item>

@ -199,9 +199,6 @@
<string name="gtasks_GLA_authenticating">S\'està autenticant...</string> <string name="gtasks_GLA_authenticating">S\'està autenticant...</string>
<string name="locale_notification">Té $NUM coincidència: $FILTER</string> <string name="locale_notification">Té $NUM coincidència: $FILTER</string>
<string name="TEA_reminders_group_label">Recordatoris</string> <string name="TEA_reminders_group_label">Recordatoris</string>
<string name="TEA_reminder_alarm_label">Tipus de So/Vibració</string>
<string name="TEA_reminder_mode_once">Sona una vegada</string>
<string name="TEA_reminder_mode_nonstop">Sona fins que es cancel·la l\'alarma</string>
<string name="rmd_NoA_filter">¡Recordatori!</string> <string name="rmd_NoA_filter">¡Recordatori!</string>
<string name="rmd_NoA_done">Acabat</string> <string name="rmd_NoA_done">Acabat</string>
<string name="rmd_NoA_snooze">Adorm</string> <string name="rmd_NoA_snooze">Adorm</string>

@ -316,15 +316,6 @@
<string name="TEA_reminder_due">Při termínu</string> <string name="TEA_reminder_due">Při termínu</string>
<string name="TEA_reminder_overdue">Úkol po termínu</string> <string name="TEA_reminder_overdue">Úkol po termínu</string>
<string name="TEA_reminder_randomly">Jednou náhodně</string> <string name="TEA_reminder_randomly">Jednou náhodně</string>
<string name="TEA_reminder_alarm_label">Typ vyzvánění/vybrací:</string>
<string name="TEA_reminder_mode_once">Vyzvánět jednou</string>
<string name="TEA_reminder_mode_five">Pět zazvonění</string>
<string name="TEA_reminder_mode_nonstop">Vyzvánět dokud nezruším Alarm</string>
<string name="TEA_reminder_due_short">končí</string>
<string name="TEA_reminder_overdue_short">po termínu</string>
<string name="TEA_reminder_randomly_short">náhodně</string>
<string name="TEA_reminder_display_one">Připomínat mi %s</string>
<string name="TEA_reminder_display_multiple">Připomenout %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>hodina</item> <item>hodina</item>
<item>den</item> <item>den</item>

@ -164,8 +164,6 @@
<string name="locale_notification">Du har $NUM der matcher: $FILTER</string> <string name="locale_notification">Du har $NUM der matcher: $FILTER</string>
<string name="TEA_reminder_due">når deadline er nået</string> <string name="TEA_reminder_due">når deadline er nået</string>
<string name="TEA_reminder_overdue">når deadline er overskredet</string> <string name="TEA_reminder_overdue">når deadline er overskredet</string>
<string name="TEA_reminder_mode_once">Ring en gang</string>
<string name="TEA_reminder_mode_nonstop">Ring indtil jeg slår alarmen fra</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>en time</item> <item>en time</item>
<item>en dag</item> <item>en dag</item>

@ -324,16 +324,6 @@
<string name="TEA_reminder_due">Wenn Aufgabe fällig ist</string> <string name="TEA_reminder_due">Wenn Aufgabe fällig ist</string>
<string name="TEA_reminder_overdue">Wenn Aufgabe überfällig ist</string> <string name="TEA_reminder_overdue">Wenn Aufgabe überfällig ist</string>
<string name="TEA_reminder_randomly">Einmal zufällig</string> <string name="TEA_reminder_randomly">Einmal zufällig</string>
<string name="TEA_reminder_alarm_label">Klingeln/Vibrieren Typ:</string>
<string name="TEA_reminder_mode_once">Einmal</string>
<string name="TEA_reminder_mode_five">Fünfmal</string>
<string name="TEA_reminder_mode_nonstop">Bis ich den Alarm abschalte</string>
<string name="TEA_reminder_when">wenn</string>
<string name="TEA_reminder_due_short">fällig</string>
<string name="TEA_reminder_overdue_short">überfällig</string>
<string name="TEA_reminder_randomly_short">zufällig</string>
<string name="TEA_reminder_display_one">Erinnere mich %s</string>
<string name="TEA_reminder_display_multiple">Erinnern %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>einer Stunde</item> <item>einer Stunde</item>
<item>einem Tag</item> <item>einem Tag</item>

@ -321,16 +321,6 @@
<string name="TEA_reminder_due">Πότε λήγει η εργασία</string> <string name="TEA_reminder_due">Πότε λήγει η εργασία</string>
<string name="TEA_reminder_overdue">Όταν η εργασία είναι καθυστερούμενη</string> <string name="TEA_reminder_overdue">Όταν η εργασία είναι καθυστερούμενη</string>
<string name="TEA_reminder_randomly">Τυχαία μια φορά</string> <string name="TEA_reminder_randomly">Τυχαία μια φορά</string>
<string name="TEA_reminder_alarm_label">Ήχος/τύπος δόνησης</string>
<string name="TEA_reminder_mode_once">Μία φορά</string>
<string name="TEA_reminder_mode_five">Πέντε φορές</string>
<string name="TEA_reminder_mode_nonstop">Μέχρι να κλείσω την ειδοποίηση </string>
<string name="TEA_reminder_when">Όταν</string>
<string name="TEA_reminder_due_short">λήξη</string>
<string name="TEA_reminder_overdue_short">καθυστερούμενη</string>
<string name="TEA_reminder_randomly_short">τυχαία</string>
<string name="TEA_reminder_display_one">Υπενθύμισε μου %s</string>
<string name="TEA_reminder_display_multiple">Υπενθύμιση %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>μια ώρα</item> <item>μια ώρα</item>
<item>μια μέρα</item> <item>μια μέρα</item>

@ -321,16 +321,6 @@
<string name="TEA_reminder_due">Cuando la tarea es finalizada</string> <string name="TEA_reminder_due">Cuando la tarea es finalizada</string>
<string name="TEA_reminder_overdue">Cuando la tarea está retrasada</string> <string name="TEA_reminder_overdue">Cuando la tarea está retrasada</string>
<string name="TEA_reminder_randomly">Aleatorio, una sola vez</string> <string name="TEA_reminder_randomly">Aleatorio, una sola vez</string>
<string name="TEA_reminder_alarm_label">Tipo de Tono/Vibración:</string>
<string name="TEA_reminder_mode_once">Una vez</string>
<string name="TEA_reminder_mode_five">Cinco veces</string>
<string name="TEA_reminder_mode_nonstop">Hasta que cancele la alarma</string>
<string name="TEA_reminder_when">cuando</string>
<string name="TEA_reminder_due_short">límite</string>
<string name="TEA_reminder_overdue_short">retrasado</string>
<string name="TEA_reminder_randomly_short">aleatoriamente</string>
<string name="TEA_reminder_display_one">Recordarme %s</string>
<string name="TEA_reminder_display_multiple">Recordar %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>una hora</item> <item>una hora</item>
<item>un día</item> <item>un día</item>

@ -320,16 +320,6 @@
<string name="TEA_reminder_due">... lorsque la tâche est échue</string> <string name="TEA_reminder_due">... lorsque la tâche est échue</string>
<string name="TEA_reminder_overdue">... lorsque la tâche est en retard</string> <string name="TEA_reminder_overdue">... lorsque la tâche est en retard</string>
<string name="TEA_reminder_randomly">Une fois aléatoirement</string> <string name="TEA_reminder_randomly">Une fois aléatoirement</string>
<string name="TEA_reminder_alarm_label">Type de sonnerie/vibration :</string>
<string name="TEA_reminder_mode_once">Une fois</string>
<string name="TEA_reminder_mode_five">Cinq fois</string>
<string name="TEA_reminder_mode_nonstop">Jusqu\'à ce que j\'annule l\'alarme</string>
<string name="TEA_reminder_when">Quand</string>
<string name="TEA_reminder_due_short">prévu</string>
<string name="TEA_reminder_overdue_short">en retard</string>
<string name="TEA_reminder_randomly_short">Aléatoirement</string>
<string name="TEA_reminder_display_one">Me rappeler %s</string>
<string name="TEA_reminder_display_multiple">Rappel %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>Une heure</item> <item>Une heure</item>
<item>Un jour</item> <item>Un jour</item>

@ -292,7 +292,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<string name="TEA_reminder_due">Alla scadenza dell\'attività</string> <string name="TEA_reminder_due">Alla scadenza dell\'attività</string>
<string name="TEA_reminder_overdue">Quando l\'attività è in ritardo</string> <string name="TEA_reminder_overdue">Quando l\'attività è in ritardo</string>
<string name="TEA_reminder_randomly">In modo casuale</string> <string name="TEA_reminder_randomly">In modo casuale</string>
<string name="TEA_reminder_alarm_label">Tipo di squillo/vibrazione:</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>an hour</item> <item>an hour</item>
<item>ogni giorno</item> <item>ogni giorno</item>

@ -322,14 +322,6 @@
<string name="TEA_reminder_due">כאשר הגיע מועד היעד</string> <string name="TEA_reminder_due">כאשר הגיע מועד היעד</string>
<string name="TEA_reminder_overdue">כשעבר מועד היעד</string> <string name="TEA_reminder_overdue">כשעבר מועד היעד</string>
<string name="TEA_reminder_randomly">אקראי יחיד</string> <string name="TEA_reminder_randomly">אקראי יחיד</string>
<string name="TEA_reminder_alarm_label">סוג צלצול/רטט:</string>
<string name="TEA_reminder_mode_once">פעם אחת</string>
<string name="TEA_reminder_mode_five">חמש פעמים</string>
<string name="TEA_reminder_mode_nonstop">עד אשר אבטל את התזכורות</string>
<string name="TEA_reminder_when">מתי</string>
<string name="TEA_reminder_due_short">מועד יעד</string>
<string name="TEA_reminder_randomly_short">באקראיות</string>
<string name="TEA_reminder_display_one">הזכר לי %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>שעה</item> <item>שעה</item>
<item>יום</item> <item>יום</item>

@ -329,16 +329,6 @@
<string name="TEA_reminder_due">何時がタスクの期限ですか?</string> <string name="TEA_reminder_due">何時がタスクの期限ですか?</string>
<string name="TEA_reminder_overdue">何時タスクが期限切れになりますか?</string> <string name="TEA_reminder_overdue">何時タスクが期限切れになりますか?</string>
<string name="TEA_reminder_randomly">ランダムに1回</string> <string name="TEA_reminder_randomly">ランダムに1回</string>
<string name="TEA_reminder_alarm_label">通知音、振動</string>
<string name="TEA_reminder_mode_once">1回</string>
<string name="TEA_reminder_mode_five">5回</string>
<string name="TEA_reminder_mode_nonstop">私がアラームを止めるまで</string>
<string name="TEA_reminder_when"></string>
<string name="TEA_reminder_due_short">期限</string>
<string name="TEA_reminder_overdue_short">期限過ぎ</string>
<string name="TEA_reminder_randomly_short">ランダムに</string>
<string name="TEA_reminder_display_one">通知する %s</string>
<string name="TEA_reminder_display_multiple">通知する %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>1時間</item> <item>1時間</item>
<item>1日</item> <item>1日</item>

@ -328,16 +328,6 @@
<string name="TEA_reminder_due">일정 마감일에</string> <string name="TEA_reminder_due">일정 마감일에</string>
<string name="TEA_reminder_overdue">일정 마감일이 지났을 때</string> <string name="TEA_reminder_overdue">일정 마감일이 지났을 때</string>
<string name="TEA_reminder_randomly">무작위로 한 번</string> <string name="TEA_reminder_randomly">무작위로 한 번</string>
<string name="TEA_reminder_alarm_label">소리/진동 선택:</string>
<string name="TEA_reminder_mode_once">한 번</string>
<string name="TEA_reminder_mode_five">다섯 번</string>
<string name="TEA_reminder_mode_nonstop">알람을 직접 끌 때까지</string>
<string name="TEA_reminder_when">언제</string>
<string name="TEA_reminder_due_short">마감</string>
<string name="TEA_reminder_overdue_short">기한 초과</string>
<string name="TEA_reminder_randomly_short">임의로</string>
<string name="TEA_reminder_display_one">%s를 알려주세요</string>
<string name="TEA_reminder_display_multiple">%s 알리기</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>한 시간</item> <item>한 시간</item>
<item>하루</item> <item>하루</item>

@ -156,9 +156,6 @@
<string name="TEA_reminder_label">Minn meg på...</string> <string name="TEA_reminder_label">Minn meg på...</string>
<string name="TEA_reminder_due">...når oppgaven forfaller</string> <string name="TEA_reminder_due">...når oppgaven forfaller</string>
<string name="TEA_reminder_overdue">... når oppgaven har forfalt</string> <string name="TEA_reminder_overdue">... når oppgaven har forfalt</string>
<string name="TEA_reminder_alarm_label">Ringe- og vibrasjonstype:</string>
<string name="TEA_reminder_mode_once">Ring én gang</string>
<string name="TEA_reminder_mode_nonstop">Ring til jeg slår av alarmen</string>
<string name="rmd_NoA_filter">Påminnelse!</string> <string name="rmd_NoA_filter">Påminnelse!</string>
<string name="rmd_NoA_done">Allerede utført!</string> <string name="rmd_NoA_done">Allerede utført!</string>
<string name="rmd_NoA_snooze">Slumre</string> <string name="rmd_NoA_snooze">Slumre</string>

@ -323,16 +323,6 @@
<string name="TEA_reminder_due">op einddatum taak</string> <string name="TEA_reminder_due">op einddatum taak</string>
<string name="TEA_reminder_overdue">op of na einddatum taak</string> <string name="TEA_reminder_overdue">op of na einddatum taak</string>
<string name="TEA_reminder_randomly">Willekeurig eenmalig</string> <string name="TEA_reminder_randomly">Willekeurig eenmalig</string>
<string name="TEA_reminder_alarm_label">Geluid/Trillen:</string>
<string name="TEA_reminder_mode_once">Eenmaal</string>
<string name="TEA_reminder_mode_five">Vijf maal</string>
<string name="TEA_reminder_mode_nonstop">Totdat ik het alarm stop</string>
<string name="TEA_reminder_when">wanneer</string>
<string name="TEA_reminder_due_short">einddatum</string>
<string name="TEA_reminder_overdue_short">te laat</string>
<string name="TEA_reminder_randomly_short">willekeurig</string>
<string name="TEA_reminder_display_one">Herinner me %s</string>
<string name="TEA_reminder_display_multiple">Herinner %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>een uur</item> <item>een uur</item>
<item>een dag</item> <item>een dag</item>

@ -325,16 +325,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<string name="TEA_reminder_due">W terminie</string> <string name="TEA_reminder_due">W terminie</string>
<string name="TEA_reminder_overdue">Gdy zadanie jest zaległe</string> <string name="TEA_reminder_overdue">Gdy zadanie jest zaległe</string>
<string name="TEA_reminder_randomly">Losowo raz</string> <string name="TEA_reminder_randomly">Losowo raz</string>
<string name="TEA_reminder_alarm_label">Rodzaj dzwonka/wibracji:</string>
<string name="TEA_reminder_mode_once">Pojedynczy</string>
<string name="TEA_reminder_mode_five">Pięć razy</string>
<string name="TEA_reminder_mode_nonstop">Aż odwołam alarm</string>
<string name="TEA_reminder_when">kiedy</string>
<string name="TEA_reminder_due_short">termin</string>
<string name="TEA_reminder_overdue_short">zaległe</string>
<string name="TEA_reminder_randomly_short">losowo</string>
<string name="TEA_reminder_display_one">Przypomnij za %s</string>
<string name="TEA_reminder_display_multiple">Przypomnij %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>na godzinę</item> <item>na godzinę</item>
<item>dziennie</item> <item>dziennie</item>

@ -322,13 +322,6 @@
<string name="TEA_reminder_due">no dia que a tarefa vencer</string> <string name="TEA_reminder_due">no dia que a tarefa vencer</string>
<string name="TEA_reminder_overdue">quando a tarefa estiver atrasada</string> <string name="TEA_reminder_overdue">quando a tarefa estiver atrasada</string>
<string name="TEA_reminder_randomly">Aleatoriamente uma vez</string> <string name="TEA_reminder_randomly">Aleatoriamente uma vez</string>
<string name="TEA_reminder_alarm_label">Tipo de toque/vibração:</string>
<string name="TEA_reminder_mode_once">Uma vez</string>
<string name="TEA_reminder_mode_five">Cinco vezes</string>
<string name="TEA_reminder_mode_nonstop">Até que eu descarte o alarme</string>
<string name="TEA_reminder_when">Quando</string>
<string name="TEA_reminder_display_one">Lembre me %s</string>
<string name="TEA_reminder_display_multiple">Lembrar %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>por hora</item> <item>por hora</item>
<item>por dia</item> <item>por dia</item>

@ -326,16 +326,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<string name="TEA_reminder_due">Na data limite</string> <string name="TEA_reminder_due">Na data limite</string>
<string name="TEA_reminder_overdue">Se data limite ultrapassada</string> <string name="TEA_reminder_overdue">Se data limite ultrapassada</string>
<string name="TEA_reminder_randomly">Uma vez aleatória</string> <string name="TEA_reminder_randomly">Uma vez aleatória</string>
<string name="TEA_reminder_alarm_label">Tipo de toque/vibração</string>
<string name="TEA_reminder_mode_once">Uma vez</string>
<string name="TEA_reminder_mode_five">5 vezes</string>
<string name="TEA_reminder_mode_nonstop">Até remover o alarme</string>
<string name="TEA_reminder_when">quando</string>
<string name="TEA_reminder_due_short">data limite</string>
<string name="TEA_reminder_overdue_short">ultrapassada</string>
<string name="TEA_reminder_randomly_short">aleatoriamente</string>
<string name="TEA_reminder_display_one">Lembrar-me %s</string>
<string name="TEA_reminder_display_multiple">Lembrar %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>uma hora</item> <item>uma hora</item>
<item>um dia</item> <item>um dia</item>

@ -328,16 +328,6 @@
<string name="TEA_reminder_due">При наступлении срока выполнения задания</string> <string name="TEA_reminder_due">При наступлении срока выполнения задания</string>
<string name="TEA_reminder_overdue">Когда задание просрочено</string> <string name="TEA_reminder_overdue">Когда задание просрочено</string>
<string name="TEA_reminder_randomly">Случайно один раз</string> <string name="TEA_reminder_randomly">Случайно один раз</string>
<string name="TEA_reminder_alarm_label">Тип звонка/вибрации</string>
<string name="TEA_reminder_mode_once">Один раз</string>
<string name="TEA_reminder_mode_five">Пять раз</string>
<string name="TEA_reminder_mode_nonstop">Пока я не отключу сигнал</string>
<string name="TEA_reminder_when">Когда</string>
<string name="TEA_reminder_due_short">Срок</string>
<string name="TEA_reminder_overdue_short">просрочена</string>
<string name="TEA_reminder_randomly_short">случайно</string>
<string name="TEA_reminder_display_one">Напомнить мне %s</string>
<string name="TEA_reminder_display_multiple">Напомнить %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>час</item> <item>час</item>
<item>день</item> <item>день</item>

@ -326,16 +326,6 @@
<string name="TEA_reminder_due">Ko opravek dospe</string> <string name="TEA_reminder_due">Ko opravek dospe</string>
<string name="TEA_reminder_overdue">Po dospelosti opravka</string> <string name="TEA_reminder_overdue">Po dospelosti opravka</string>
<string name="TEA_reminder_randomly">Naključno enkrat</string> <string name="TEA_reminder_randomly">Naključno enkrat</string>
<string name="TEA_reminder_alarm_label">Način zvonenja/vibriranja</string>
<string name="TEA_reminder_mode_once">Enkrat</string>
<string name="TEA_reminder_mode_five">Petkrat</string>
<string name="TEA_reminder_mode_nonstop">Dokler ne ugasnem</string>
<string name="TEA_reminder_when">kdaj</string>
<string name="TEA_reminder_due_short">dospelo</string>
<string name="TEA_reminder_overdue_short">že dospelo</string>
<string name="TEA_reminder_randomly_short">naključno</string>
<string name="TEA_reminder_display_one">Opomni me %s</string>
<string name="TEA_reminder_display_multiple">Opomni %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>na uro</item> <item>na uro</item>
<item>dan</item> <item>dan</item>

@ -319,14 +319,6 @@ och återställer dina aktuella uppgifter från en backup
<string name="TEA_reminder_due">...när uppgiften förfaller</string> <string name="TEA_reminder_due">...när uppgiften förfaller</string>
<string name="TEA_reminder_overdue">...när uppgiften har förfallit</string> <string name="TEA_reminder_overdue">...när uppgiften har förfallit</string>
<string name="TEA_reminder_randomly">En gång slumpmässigt</string> <string name="TEA_reminder_randomly">En gång slumpmässigt</string>
<string name="TEA_reminder_alarm_label">Ring/Vibrationsinställning:</string>
<string name="TEA_reminder_mode_once">En</string>
<string name="TEA_reminder_mode_five">Fem gånger</string>
<string name="TEA_reminder_mode_nonstop">Tills jag stänger av alarmet</string>
<string name="TEA_reminder_when">när</string>
<string name="TEA_reminder_randomly_short">slumpvis</string>
<string name="TEA_reminder_display_one">Påminn mig %s</string>
<string name="TEA_reminder_display_multiple">Påminn %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>en timme</item> <item>en timme</item>
<item>ett dygn</item> <item>ett dygn</item>

@ -295,7 +295,6 @@
<string name="TEA_reminder_due">Görev son tarihinde</string> <string name="TEA_reminder_due">Görev son tarihinde</string>
<string name="TEA_reminder_overdue">Görev son tarihi aşıldığında</string> <string name="TEA_reminder_overdue">Görev son tarihi aşıldığında</string>
<string name="TEA_reminder_randomly">Bir kere gelişigüzel</string> <string name="TEA_reminder_randomly">Bir kere gelişigüzel</string>
<string name="TEA_reminder_alarm_label">Çalma/Titreme Tipi:</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>bir saat</item> <item>bir saat</item>
<item>bir gün</item> <item>bir gün</item>

@ -328,16 +328,6 @@
<string name="TEA_reminder_due">Коли настане термін виконання завдання</string> <string name="TEA_reminder_due">Коли настане термін виконання завдання</string>
<string name="TEA_reminder_overdue">Коли завдання прострочено</string> <string name="TEA_reminder_overdue">Коли завдання прострочено</string>
<string name="TEA_reminder_randomly">Випадково раз</string> <string name="TEA_reminder_randomly">Випадково раз</string>
<string name="TEA_reminder_alarm_label">Тип дзвінка/вібрації</string>
<string name="TEA_reminder_mode_once">Тільки раз</string>
<string name="TEA_reminder_mode_five">5 раз</string>
<string name="TEA_reminder_mode_nonstop">Поки я не відключу сигнал</string>
<string name="TEA_reminder_when">коли</string>
<string name="TEA_reminder_due_short">до</string>
<string name="TEA_reminder_overdue_short">прострочено</string>
<string name="TEA_reminder_randomly_short">випадково</string>
<string name="TEA_reminder_display_one">Нагадати мені %s</string>
<string name="TEA_reminder_display_multiple">Нагадати %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>година</item> <item>година</item>
<item>дня</item> <item>дня</item>

@ -273,7 +273,6 @@
<string name="TEA_reminder_due">当任务到期时</string> <string name="TEA_reminder_due">当任务到期时</string>
<string name="TEA_reminder_overdue">当任务过期时</string> <string name="TEA_reminder_overdue">当任务过期时</string>
<string name="TEA_reminder_randomly">随机一次</string> <string name="TEA_reminder_randomly">随机一次</string>
<string name="TEA_reminder_alarm_label">铃响/震动类型:</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>一个小时</item> <item>一个小时</item>
<item>一天</item> <item>一天</item>

@ -309,9 +309,6 @@
<string name="TEA_reminder_due">當任務工作到期時</string> <string name="TEA_reminder_due">當任務工作到期時</string>
<string name="TEA_reminder_overdue">當任務工作過期時</string> <string name="TEA_reminder_overdue">當任務工作過期時</string>
<string name="TEA_reminder_randomly">隨機一次</string> <string name="TEA_reminder_randomly">隨機一次</string>
<string name="TEA_reminder_alarm_label">鈴響/震動類型:</string>
<string name="TEA_reminder_display_one">提醒我 %s</string>
<string name="TEA_reminder_display_multiple">提醒 %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<item>一個小時</item> <item>一個小時</item>
<item>一天</item> <item>一天</item>

@ -261,4 +261,14 @@
<item>@string/TEA_ctrl_hide_section_pref</item> <item>@string/TEA_ctrl_hide_section_pref</item>
</string-array> </string-array>
<string-array name="EPr_default_reminders_mode">
<item>@string/ring_once</item>
<item>@string/ring_five_times</item>
<item>@string/ring_nonstop</item>
</string-array>
<string-array name="EPr_default_addtocalendar">
<item>@string/EPr_deactivated</item>
</string-array>
</resources> </resources>

@ -451,13 +451,6 @@
<string name="EPr_cal_end_at_due_time">End calendar events at due time</string> <string name="EPr_cal_end_at_due_time">End calendar events at due time</string>
<string name="EPr_cal_start_at_due_time">Start calendar events at due time</string> <string name="EPr_cal_start_at_due_time">Start calendar events at due time</string>
<string-array name="EPr_default_reminders_mode">
<!-- reminders duration: labels for "Task Defaults" preference item. -->
<item>@string/TEA_reminder_mode_once</item>
<item>@string/TEA_reminder_mode_five</item>
<item>@string/TEA_reminder_mode_nonstop</item>
</string-array>
<!-- ========================================== Task Management Settings == --> <!-- ========================================== Task Management Settings == -->
<!-- slide 33a/47c: Preference Screen Header: Old Task Management --> <!-- slide 33a/47c: Preference Screen Header: Old Task Management -->

@ -67,8 +67,4 @@
<item>At deadline or overdue</item> <item>At deadline or overdue</item>
</string-array> </string-array>
<string-array name="EPr_default_addtocalendar">
<!-- addtocalendar: labels for "Task Defaults" preference item. -->
<item>@string/EPr_deactivated</item>
</string-array>
</resources> </resources>

@ -20,29 +20,14 @@
<!-- Task Edit: Reminder at random times (%s => time plural)--> <!-- Task Edit: Reminder at random times (%s => time plural)-->
<string name="TEA_reminder_randomly">Randomly once</string> <string name="TEA_reminder_randomly">Randomly once</string>
<!-- Task Edit: Reminder alarm clock label -->
<string name="TEA_reminder_alarm_label">Ring/vibrate type</string>
<!-- slide 45a: Task Edit: Reminder mode: ring once --> <!-- slide 45a: Task Edit: Reminder mode: ring once -->
<string name="TEA_reminder_mode_once">Once</string> <string name="ring_once">Ring once</string>
<!-- slide 45b: Task Edit: Reminder mode: ring five times --> <!-- slide 45b: Task Edit: Reminder mode: ring five times -->
<string name="TEA_reminder_mode_five">Five times</string> <string name="ring_five_times">Ring five times</string>
<!-- slide 45c: Task Edit: Reminder mode: ring nonstop --> <!-- slide 45c: Task Edit: Reminder mode: ring nonstop -->
<string name="TEA_reminder_mode_nonstop">Until I dismiss alarm</string> <string name="ring_nonstop">Ring nonstop</string>
<string name="TEA_reminder_when">when</string>
<string name="TEA_reminder_due_short">due</string>
<string name="TEA_reminder_overdue_short">overdue</string>
<string name="TEA_reminder_randomly_short">randomly</string>
<string name="TEA_reminder_display_one">Remind me %s</string>
<string name="TEA_reminder_display_multiple">Remind %s</string>
<string-array name="TEA_reminder_random"> <string-array name="TEA_reminder_random">
<!-- random reminder choices for task edit page. --> <!-- random reminder choices for task edit page. -->

@ -94,6 +94,12 @@
<string name="notification_actions">Notification Actions</string> <string name="notification_actions">Notification Actions</string>
<string name="notification_actions_summary">Show snooze and complete actions in notification</string> <string name="notification_actions_summary">Show snooze and complete actions in notification</string>
<string name="add_a_reminder">Add a reminder</string> <string name="add_a_reminder">Add a reminder</string>
<string name="remove">Remove</string>
<string name="randomly_once">Randomly once</string>
<string name="randomly">Randomly</string>
<string name="pick_a_date_and_time">Pick a date and time</string>
<string name="when_overdue">When overdue</string>
<string name="when_due">When due</string>
<string-array name="sync_SPr_interval_entries"> <string-array name="sync_SPr_interval_entries">
<!-- sync_SPr_interval_entries: Synchronization Intervals --> <!-- sync_SPr_interval_entries: Synchronization Intervals -->

@ -103,6 +103,7 @@
<item name="ic_action_reload">@drawable/ic_action_reload_white</item> <item name="ic_action_reload">@drawable/ic_action_reload_white</item>
<item name="ic_action_calendar_month">@drawable/ic_action_calendar_month_white</item> <item name="ic_action_calendar_month">@drawable/ic_action_calendar_month_white</item>
<item name="ic_action_help">@drawable/ic_action_help_white</item> <item name="ic_action_help">@drawable/ic_action_help_white</item>
<item name="ic_action_cancel">@drawable/ic_action_cancel_white</item>
<item name="asDueDateColor">#c3c3c3</item> <item name="asDueDateColor">#c3c3c3</item>
<item name="fab_background">@android:color/white</item> <item name="fab_background">@android:color/white</item>

Loading…
Cancel
Save