Use new date picker in repeat control

pull/321/head
Alex Baker 9 years ago
parent a8958ac287
commit 0f1f692984

@ -11,6 +11,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@ -51,7 +52,7 @@ public class FilesControlSet extends PopupControlSet {
private final DialogBuilder dialogBuilder;
public FilesControlSet(ActivityPreferences preferences, TaskAttachmentDao taskAttachmentDao,
Activity activity, DialogBuilder dialogBuilder) {
FragmentActivity activity, DialogBuilder dialogBuilder) {
super(preferences, activity, R.layout.control_set_files_dialog, R.layout.control_set_files, R.string.TEA_control_files, dialogBuilder);
this.taskAttachmentDao = taskAttachmentDao;
this.dialogBuilder = new DialogBuilder(activity, preferences);

@ -5,12 +5,12 @@
*/
package com.todoroo.astrid.gcal;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
@ -53,7 +53,7 @@ public class GCalControlSet extends TaskEditControlSetBase {
private Spinner calendarSelector;
private TextView calendar;
public GCalControlSet(GCalHelper gcal, final Activity activity) {
public GCalControlSet(GCalHelper gcal, final FragmentActivity activity) {
super(activity, R.layout.control_set_gcal_display);
this.gcal = gcal;
this.calendars = gcal.getCalendars();

@ -5,17 +5,12 @@
*/
package com.todoroo.astrid.helper;
import android.app.Activity;
import android.content.res.ColorStateList;
import android.content.res.Resources.Theme;
import android.util.TypedValue;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.ui.EditDialogOkBackground;
import org.tasks.R;
@ -28,7 +23,7 @@ import static org.tasks.preferences.ResourceResolver.getData;
*/
public abstract class TaskEditControlSetBase implements TaskEditControlSet {
protected final Activity activity;
protected final FragmentActivity activity;
private final int viewLayout;
private boolean useTemplate;
private View view;
@ -37,11 +32,11 @@ public abstract class TaskEditControlSetBase implements TaskEditControlSet {
protected final int themeColor;
protected final int unsetColor;
public TaskEditControlSetBase(Activity activity, int viewLayout) {
public TaskEditControlSetBase(FragmentActivity activity, int viewLayout) {
this(activity, viewLayout, true);
}
public TaskEditControlSetBase(Activity activity, int viewLayout, boolean useTemplate) {
public TaskEditControlSetBase(FragmentActivity activity, int viewLayout, boolean useTemplate) {
this.activity = activity;
this.viewLayout = viewLayout;
this.useTemplate = useTemplate;

@ -5,12 +5,13 @@
*/
package com.todoroo.astrid.repeats;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
@ -22,23 +23,23 @@ import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import com.fourmob.datetimepicker.date.DatePickerDialog;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
import com.google.ical.values.Weekday;
import com.google.ical.values.WeekdayNum;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.ui.DateAndTimeDialog;
import com.todoroo.astrid.ui.DateAndTimeDialog.DateAndTimeDialogListener;
import com.todoroo.astrid.ui.DateAndTimePicker;
import com.todoroo.astrid.ui.NumberPickerDialog;
import com.todoroo.astrid.ui.NumberPickerDialog.OnNumberPickedListener;
import com.todoroo.astrid.ui.PopupControlSet;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.MyDatePickerDialog;
import org.tasks.preferences.ActivityPreferences;
import java.text.DateFormatSymbols;
@ -49,6 +50,7 @@ import java.util.LinkedList;
import java.util.List;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
/**
* Control Set for managing repeats
@ -60,6 +62,8 @@ public class RepeatControlSet extends PopupControlSet {
private static final Logger log = LoggerFactory.getLogger(RepeatControlSet.class);
private static final String FRAG_TAG_REPEAT_UNTIL = "frag_tag_repeat_until";
// --- spinner constants
public static final int INTERVAL_DAYS = 0;
@ -77,7 +81,9 @@ public class RepeatControlSet extends PopupControlSet {
private Button value;
private Spinner interval;
private Spinner type;
private Button repeatUntil;
private Spinner repeatUntil;
private ArrayAdapter<String> repeatUntilAdapter;
private final List<String> repeatUntilOptions = new ArrayList<>();
private LinearLayout daysOfWeekContainer;
private final CompoundButton[] daysOfWeek = new CompoundButton[7];
@ -95,7 +101,7 @@ public class RepeatControlSet extends PopupControlSet {
// --- implementation
public RepeatControlSet(ActivityPreferences preferences, Activity activity, DialogBuilder dialogBuilder) {
public RepeatControlSet(ActivityPreferences preferences, FragmentActivity activity, DialogBuilder dialogBuilder) {
super(preferences, activity, R.layout.control_set_repeat, R.layout.control_set_repeat_display, R.string.repeat_enabled, dialogBuilder);
}
@ -107,12 +113,7 @@ public class RepeatControlSet extends PopupControlSet {
private void setRepeatUntilValue(long newValue) {
repeatUntilValue = newValue;
if (newValue == 0) {
repeatUntil.setText(activity.getString(R.string.repeat_forever));
} else {
repeatUntil.setText(activity.getString(R.string.repeat_until, DateAndTimePicker.getDisplayString(activity, newValue, false, false)));
}
updateRepeatUntilOptions();
}
protected void repeatValueClick() {
@ -131,15 +132,21 @@ public class RepeatControlSet extends PopupControlSet {
}
private void repeatUntilClick() {
DateAndTimeDialog d = new DateAndTimeDialog(preferences, activity, repeatUntilValue,
R.layout.repeat_until_dialog, R.string.repeat_until_title);
d.setDateAndTimeDialogListener(new DateAndTimeDialogListener() {
MyDatePickerDialog dialog = new MyDatePickerDialog();
DateTime initial = newDateTime();
dialog.initialize(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
setRepeatUntilValue(new DateTime(year, month + 1, day, 0, 0, 0, 0).getMillis());
}
}, initial.getYear(), initial.getMonthOfYear() - 1, initial.getDayOfMonth(), false);
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onDateAndTimeSelected(long date) {
setRepeatUntilValue(date);
public void onCancel(DialogInterface dialog) {
setRepeatUntilValue(repeatUntilValue);
}
});
d.show();
dialog.show(activity.getSupportFragmentManager(), FRAG_TAG_REPEAT_UNTIL);
}
public void addListener(RepeatChangedListener listener) {
@ -251,17 +258,21 @@ public class RepeatControlSet extends PopupControlSet {
@Override
protected void afterInflate() {
value = (Button) getDialogView().findViewById(R.id.repeatValue);
interval = (Spinner) getDialogView().findViewById(R.id.repeatInterval);
interval.setAdapter(new ArrayAdapter<String>(activity, R.layout.simple_spinner_item, activity.getResources().getStringArray(R.array.repeat_interval)) {{
View dialogView = getDialogView();
value = (Button) dialogView.findViewById(R.id.repeatValue);
interval = (Spinner) dialogView.findViewById(R.id.repeatInterval);
interval.setAdapter(new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item, activity.getResources().getStringArray(R.array.repeat_interval)) {{
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}});
type = (Spinner) getDialogView().findViewById(R.id.repeatType);
type.setAdapter(new ArrayAdapter<String>(activity, R.layout.simple_spinner_item, activity.getResources().getStringArray(R.array.repeat_type)) {{
type = (Spinner) dialogView.findViewById(R.id.repeatType);
type.setAdapter(new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item, activity.getResources().getStringArray(R.array.repeat_type)) {{
setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}});
daysOfWeekContainer = (LinearLayout) getDialogView().findViewById(R.id.repeatDayOfWeekContainer);
repeatUntil = (Button) getDialogView().findViewById(R.id.repeatUntil);
daysOfWeekContainer = (LinearLayout) dialogView.findViewById(R.id.repeatDayOfWeekContainer);
repeatUntil = (Spinner) dialogView.findViewById(R.id.repeat_until);
repeatUntilAdapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, repeatUntilOptions);
repeatUntilAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
repeatUntil.setAdapter(repeatUntilAdapter);
setRepeatValue(1);
setRepeatUntilValue(0);
@ -312,12 +323,30 @@ public class RepeatControlSet extends PopupControlSet {
}
});
repeatUntil.setOnClickListener(new View.OnClickListener() {
repeatUntil.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onClick(View v) {
repeatUntilClick();
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (repeatUntilOptions.size() == 2) {
if (i == 0) {
setRepeatUntilValue(0);
} else {
repeatUntilClick();
}
} else {
if (i == 1) {
setRepeatUntilValue(0);
} else if (i == 2) {
repeatUntilClick();
}
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
//
}
});
daysOfWeekContainer.setVisibility(View.GONE);
}
@ -433,4 +462,15 @@ public class RepeatControlSet extends PopupControlSet {
}
});
}
private void updateRepeatUntilOptions() {
repeatUntilOptions.clear();
if (repeatUntilValue > 0) {
repeatUntilOptions.add(activity.getString(R.string.repeat_until, DateAndTimePicker.getDisplayString(activity, repeatUntilValue, false, false)));
}
repeatUntilOptions.add(activity.getString(R.string.repeat_forever));
repeatUntilOptions.add(activity.getString(R.string.repeat_until, "").trim());
repeatUntilAdapter.notifyDataSetChanged();
repeatUntil.setSelection(0);
}
}

@ -24,6 +24,7 @@ import com.todoroo.astrid.gcal.GCalHelper;
import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.utility.Flags;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tasks.injection.InjectingBroadcastReceiver;
@ -39,6 +40,7 @@ import java.util.TimeZone;
import javax.inject.Inject;
import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.date.DateTimeUtils.newDateUtc;
public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
@ -80,8 +82,7 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
long oldDueDate = task.getDueDate();
long repeatUntil = task.getRepeatUntil();
boolean repeatFinished = repeatUntil > 0 && newDueDate >= repeatUntil;
if (repeatFinished) {
if (repeatFinished(newDueDate, repeatUntil)) {
return;
}
@ -97,6 +98,12 @@ public class RepeatTaskCompleteListener extends InjectingBroadcastReceiver {
}
}
static boolean repeatFinished(long newDueDate, long repeatUntil) {
return repeatUntil > 0 && newDateTime(repeatUntil).getMillisOfDay() == 0
? newDateTime(newDueDate).withMillisOfDay(0).isAfter(repeatUntil)
: newDueDate >= repeatUntil;
}
public static void rescheduleTask(Context context, GCalHelper gcalHelper, TaskService taskService, Task task, long newDueDate) {
long hideUntil = task.getHideUntil();
if(hideUntil > 0 && task.getDueDate() > 0) {

@ -6,6 +6,7 @@
package com.todoroo.astrid.tags;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.text.Editable;
import android.text.TextUtils;
@ -72,7 +73,7 @@ public final class TagsControlSet extends PopupControlSet {
private final TagDataDao tagDataDao;
private final TagService tagService;
public TagsControlSet(MetadataDao metadataDao, TagDataDao tagDataDao, ActivityPreferences preferences, TagService tagService, Activity activity, DialogBuilder dialogBuilder) {
public TagsControlSet(MetadataDao metadataDao, TagDataDao tagDataDao, ActivityPreferences preferences, TagService tagService, FragmentActivity activity, DialogBuilder dialogBuilder) {
super(preferences, activity, R.layout.control_set_tag_list, R.layout.control_set_tags, R.string.TEA_tags_label_long, dialogBuilder);
this.metadataDao = metadataDao;
this.tagDataDao = tagDataDao;

@ -5,8 +5,8 @@
*/
package com.todoroo.astrid.timers;
import android.app.Activity;
import android.os.SystemClock;
import android.support.v4.app.FragmentActivity;
import android.text.format.DateFormat;
import android.view.View;
import android.view.View.OnClickListener;
@ -33,7 +33,7 @@ public class TimerActionControlSet extends TaskEditControlSetBase {
private boolean timerActive;
private final List<TimerActionListener> listeners = new LinkedList<>();
public TimerActionControlSet(final NotificationManager notificationManager, final TaskService taskService, final Activity activity, View parent) {
public TimerActionControlSet(final NotificationManager notificationManager, final TaskService taskService, final FragmentActivity activity, View parent) {
super(activity, -1);
LinearLayout timerContainer = (LinearLayout) parent.findViewById(R.id.timer_container);

@ -5,7 +5,7 @@
*/
package com.todoroo.astrid.timers;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.view.View;
@ -34,7 +34,7 @@ public class TimerControlSet extends PopupControlSet implements TimerActionListe
private final TextView displayEdit;
private ActivityPreferences preferences;
public TimerControlSet(ActivityPreferences preferences, final Activity activity, DialogBuilder dialogBuilder) {
public TimerControlSet(ActivityPreferences preferences, final FragmentActivity activity, DialogBuilder dialogBuilder) {
super(preferences, activity, R.layout.control_set_timers_dialog, R.layout.control_set_timers, R.string.TEA_timer_controls, dialogBuilder);
this.preferences = preferences;
@ -81,7 +81,7 @@ public class TimerControlSet extends PopupControlSet implements TimerActionListe
private final TimeDurationControlSet controlSet;
private final IntegerProperty property;
public TimeDurationTaskEditControlSet(Activity activity, View v, IntegerProperty property, int timeButtonId) {
public TimeDurationTaskEditControlSet(FragmentActivity activity, View v, IntegerProperty property, int timeButtonId) {
super(activity, -1);
this.property = property;
this.controlSet = new TimeDurationControlSet(activity, v, property, timeButtonId, preferences);

@ -1,87 +0,0 @@
/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.ui;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.View;
import android.view.Window;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import org.tasks.R;
import org.tasks.preferences.ActivityPreferences;
public class DateAndTimeDialog extends Dialog {
public interface DateAndTimeDialogListener {
void onDateAndTimeSelected(long date);
}
private final DateAndTimePicker dateAndTimePicker;
private boolean cancelled = false;
private DateAndTimeDialogListener listener;
public DateAndTimeDialog(ActivityPreferences preferences, Context context, long startDate, int contentView, int title) {
super(context, preferences.getEditDialogTheme());
if (title == 0) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
} else {
setTitle(title);
}
/** Design the dialog in main.xml file */
setContentView(contentView);
LayoutParams params = getWindow().getAttributes();
params.height = LayoutParams.FILL_PARENT;
params.width = LayoutParams.FILL_PARENT;
getWindow().setAttributes(params);
dateAndTimePicker = (DateAndTimePicker) findViewById(R.id.date_and_time);
dateAndTimePicker.initializeWithDate(startDate);
Button okButton = (Button) findViewById(R.id.ok);
Button cancelButton = (Button) findViewById(R.id.cancel);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
if (listener != null) {
listener.onDateAndTimeSelected(dateAndTimePicker.constructDueDate());
}
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelled = true;
cancel();
}
});
setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (!cancelled) { // i.e. if back button pressed, which we treat as an "OK"
if (listener != null) {
listener.onDateAndTimeSelected(dateAndTimePicker.constructDueDate());
}
} else {
cancelled = false; // reset
}
}
});
}
public void setDateAndTimeDialogListener(DateAndTimeDialogListener listener) {
this.listener = listener;
}
}

@ -5,7 +5,7 @@
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.Gravity;
import android.widget.LinearLayout;
@ -22,7 +22,7 @@ public class DeadlineControlSet extends PopupControlSet {
private DateAndTimePicker dateAndTimePicker;
public DeadlineControlSet(ActivityPreferences preferences, Activity activity, DialogBuilder dialogBuilder) {
public DeadlineControlSet(ActivityPreferences preferences, FragmentActivity activity, DialogBuilder dialogBuilder) {
super(preferences, activity, R.layout.control_set_deadline_dialog, R.layout.control_set_deadline, 0, dialogBuilder);
}

@ -5,7 +5,7 @@
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.widget.EditText;
import com.todoroo.astrid.data.Task;
@ -17,7 +17,7 @@ public class DescriptionControlSet extends TaskEditControlSetBase {
protected EditText editText;
public DescriptionControlSet(Activity activity) {
public DescriptionControlSet(FragmentActivity activity) {
super(activity, R.layout.control_set_description);
}

@ -5,7 +5,7 @@
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
@ -40,7 +40,7 @@ public class ImportanceControlSet extends TaskEditControlSetBase {
void importanceChanged(int i);
}
public ImportanceControlSet(Activity activity) {
public ImportanceControlSet(FragmentActivity activity) {
super(activity, R.layout.control_set_importance);
colors = Task.getImportanceColors(activity.getResources());
}

@ -5,21 +5,16 @@
*/
package com.todoroo.astrid.ui;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AlertDialog;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.TaskEditControlSetBase;
import org.tasks.R;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.ActivityPreferences;
@ -50,7 +45,7 @@ public abstract class PopupControlSet extends TaskEditControlSetBase {
}
};
public PopupControlSet(ActivityPreferences preferences, Activity activity, int viewLayout,
public PopupControlSet(ActivityPreferences preferences, FragmentActivity activity, int viewLayout,
int taskEditViewLayout, final int title, DialogBuilder dialogBuilder) {
super(activity, viewLayout, false);
this.preferences = preferences;

@ -32,7 +32,7 @@ public class RandomReminderControlSet {
periodSpinner.setVisibility(View.VISIBLE);
// create adapter
ArrayAdapter<String> adapter = new ArrayAdapter<>(
activity, R.layout.simple_spinner_item,
activity, android.R.layout.simple_spinner_item,
activity.getResources().getStringArray(R.array.TEA_reminder_random));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
periodSpinner.setAdapter(adapter);

@ -196,7 +196,7 @@ public class ReminderControlSet extends TaskEditControlSetBase implements Adapte
});
addSpinner = (Spinner) getView().findViewById(R.id.alarms_add_spinner);
addSpinner.setOnItemSelectedListener(ReminderControlSet.this);
remindAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item, spinnerOptions) {
remindAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item, spinnerOptions) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v;

@ -80,10 +80,6 @@ public class ActivityPreferences extends Preferences {
return isDarkTheme() ? R.style.TasksDialogDark : R.style.TasksDialog;
}
public int getEditDialogTheme() {
return isDarkTheme() ? R.style.TEA_Dialog_Dark : R.style.TEA_Dialog;
}
public boolean isDarkTheme() {
return getBoolean(R.string.p_use_dark_theme, false);
}

@ -1,57 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?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"
<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"
android:orientation="vertical">
<LinearLayout android:id="@+id/repeatContainer"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100">
android:paddingRight="5dip">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/repeatContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/repeatValue"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Spinner android:id="@+id/repeatInterval"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:prompt="@string/repeat_interval_prompt"/>
android:layout_height="0dp"
android:layout_weight="100"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingTop="5dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/repeatValue"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Spinner
android:id="@+id/repeatInterval"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:prompt="@string/repeat_interval_prompt" />
</LinearLayout>
<Spinner
android:id="@+id/repeatType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingTop="5dp" />
<LinearLayout
android:id="@+id/repeatDayOfWeekContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp" />
</LinearLayout>
<Spinner
android:id="@+id/repeatType"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout android:id="@+id/repeatDayOfWeekContainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"/>
</LinearLayout>
<Button android:id="@+id/repeatUntil"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"/>
android:id="@+id/repeat_until"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5dp"
android:paddingTop="5dp" />
</LinearLayout>

@ -1,42 +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.
-->
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:astrid="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.todoroo.astrid.ui.DateAndTimePicker
android:id="@+id/date_and_time"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
astrid:shortcutLabels="@array/repeat_until_shortcuts"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="7dip"
android:paddingRight="7dip"
android:orientation="horizontal">
<Button
android:id="@+id/ok"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_weight="1"
android:text="@android:string/ok"/>
<Button
android:id="@+id/cancel"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:layout_weight="1"
android:text="@android:string/cancel"/>
</LinearLayout>
</LinearLayout>
</ScrollView>

@ -1,9 +0,0 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textColor="?attr/asTextColor"
android:textAlignment="inherit"/>

@ -199,16 +199,6 @@
<item>دقائق</item>
<item>سنين</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>للأبد</item>
<item>يوم محدد</item>
<item>اليوم</item>
<item>غدا</item>
<item>(day after)</item>
<item>الأسبوع القادم</item>
<item>خلال أسبوعين</item>
<item>الشهر القادم</item>
</string-array>
<string-array name="repeat_type">
<item>من تاريخ الموعد</item>
<item>من تاريخ الاتمام</item>

@ -313,17 +313,6 @@
<item>Минута(и)</item>
<item>Година(и)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Завинаги</item>
<item>Определен ден</item>
<item>Днес</item>
<item>Утре</item>
<item>(ден след)</item>
<item>Следваща седмица</item>
<item>За две седмици</item>
<item>Следващия месец</item>
</string-array>
<string name="repeat_until_title">Повтаряй до...</string>
<string-array name="repeat_type">
<item>от краен срок</item>
<item>от датата на завършване</item>

@ -167,17 +167,6 @@
<string name="repeat_every">Cada %d</string>
<string name="repeat_interval_prompt">Interval de Repecitiò</string>
<string name="repeat_never">Sense repetir</string>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>Avui</item>
<item>Demà</item>
<item>(day after)</item>
<item>La setmana que ve</item>
<item>In Two Weeks</item>
<item>El mes que ve</item>
</string-array>
<string name="repeat_until_title">Repetir fins...</string>
<string name="repeat_detail_byday">$I en $D</string>
<string name="repeat_detail_duedate">Cada %s</string>
<string name="repeat_detail_duedate_until">Cada %1$s\nfins %2$s</string>

@ -293,17 +293,6 @@
<item>Minuta(-y)</item>
<item>Rok(y)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Vždy</item>
<item>Určitý den</item>
<item>Dnes</item>
<item>Zítra</item>
<item>(den poté)</item>
<item>Příští týden</item>
<item>Za dva týdny</item>
<item>Příští měsíc</item>
</string-array>
<string name="repeat_until_title">Opakuje dokud ...</string>
<string-array name="repeat_type">
<item>od data splnění</item>
<item>od data dokončení</item>

@ -157,17 +157,6 @@
<string name="repeat_interval_prompt">Interval for gentagelse</string>
<string name="repeat_never">Gentages ikke</string>
<string name="repeat_dont">Gentag ikke</string>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>I dag</item>
<item>I morgen</item>
<item>(day after)</item>
<item>Next Week</item>
<item>In Two Weeks</item>
<item>Next Month</item>
</string-array>
<string name="repeat_until_title">Gentag indtil...</string>
<string name="repeat_detail_byday">$I på $D</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="repeat_detail_duedate_until">Hver %1$s\nindtil %2$s</string>

@ -306,17 +306,6 @@
<item>Minute(n)</item>
<item>Jahr(e)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Für immer</item>
<item>Bestimmter Tag</item>
<item>Heute</item>
<item>Morgen</item>
<item>(Tag danach)</item>
<item>Nächste Woche</item>
<item>In zwei Wochen</item>
<item>Nächster Monat</item>
</string-array>
<string name="repeat_until_title">Wiederhole bis...</string>
<string-array name="repeat_type">
<item>bei Fälligkeit</item>
<item>bei Erledigung</item>

@ -294,17 +294,6 @@
<item>Λεπτό(ά)</item>
<item>Χρόνος(ια)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Επ\'αόριστον</item>
<item>Συγκεκριμένη ημέρα</item>
<item>Σήμερα</item>
<item>Αύριο</item>
<item>(μεθαύριο)</item>
<item>Την επόμενη εβδομάδα</item>
<item>Σε δύο εβδομάδες</item>
<item>Τον επόμενο μήνα</item>
</string-array>
<string name="repeat_until_title">Επανάληψη εως ότου</string>
<string-array name="repeat_type">
<item>απο την ημερομηνία λήξης</item>
<item>απο την ημερομηνία ολοκλήρωσης </item>

@ -307,17 +307,6 @@
<item>Minuto(s)</item>
<item>Año(s)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Para siempre</item>
<item>Día específico</item>
<item>Hoy</item>
<item>Mañana</item>
<item>(día siguiente)</item>
<item>Próxima semana</item>
<item>En dos semanas</item>
<item>Próximo mes</item>
</string-array>
<string name="repeat_until_title">Repetir hasta...</string>
<string-array name="repeat_type">
<item>desde la fecha de vencimiento</item>
<item>Desde la fecha de finalización</item>

@ -72,7 +72,6 @@
<string name="repeat_interval_prompt">Toistoväli</string>
<string name="repeat_never">Ei toistuva</string>
<string name="repeat_dont">Älä toista</string>
<string name="repeat_until_title">Toista kunnes...</string>
<string name="repeat_detail_duedate">Joka %s</string>
<string name="repeat_detail_duedate_until">Joka %1$s\nkunnes %2$s</string>
<string name="repeat_forever">Toista loputtomiin</string>

@ -307,17 +307,6 @@
<item>Minute(s)</item>
<item>Année(s)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Indéfiniment</item>
<item>Jour précis</item>
<item>Aujourd\'hui</item>
<item>Demain</item>
<item>(jour d\'après)</item>
<item>Semaine Prochaine</item>
<item>Dans deux semaines</item>
<item>Mois suivant</item>
</string-array>
<string name="repeat_until_title">Répéter jusqu\'à...</string>
<string-array name="repeat_type">
<item>à partir de la date due</item>
<item>à partir de la date d\'achèvement</item>

@ -310,17 +310,6 @@ Se visualizzi questo errore più volte, ti consigliamo di cancellare tutti i dat
<item>Minuto(i)</item>
<item>Anno(i)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Per sempre</item>
<item>Giorno specifico</item>
<item>Oggi</item>
<item>Domani</item>
<item>(giorno dopo)</item>
<item>Settimana Successiva</item>
<item>Ogni Due Settimane</item>
<item>Mese Successivo</item>
</string-array>
<string name="repeat_until_title">Ripeti fino a...</string>
<string-array name="repeat_type">
<item>dalla data di scadenza</item>
<item>dalla data di completamento</item>

@ -296,17 +296,6 @@
<item>דקה/דקות</item>
<item>שנה/שנים</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>לנצח</item>
<item>תאריך מסויים</item>
<item>היום</item>
<item>מחר</item>
<item>(יום אחרי)</item>
<item>שבוע הבא</item>
<item>שבועיים</item>
<item>החודש הבא</item>
</string-array>
<string name="repeat_until_title">חזור עד...</string>
<string-array name="repeat_type">
<item>מתאריך היעד</item>
<item>מהיום שהמשימה הושלמה</item>

@ -312,17 +312,6 @@
<item></item>
<item></item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>永久に</item>
<item>指定した日</item>
<item>今日</item>
<item>明日</item>
<item>(日後)</item>
<item>来週</item>
<item>2週間以内</item>
<item>来月</item>
</string-array>
<string name="repeat_until_title">繰り返し期限...</string>
<string-array name="repeat_type">
<item>期限から</item>
<item>完了日から</item>

@ -311,17 +311,6 @@ Tasks의 백업에서 당신의 일정을 복구하시기 바랍니다.
<item>분마다</item>
<item>년마다</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>영원히</item>
<item>특정일</item>
<item>오늘</item>
<item>내일</item>
<item>(며칠 후)</item>
<item>다음 주</item>
<item>2주에</item>
<item>다음 달</item>
</string-array>
<string name="repeat_until_title">다음까지 반복하기...</string>
<string-array name="repeat_type">
<item>마감일로부터</item>
<item>완료일로부터</item>

@ -144,16 +144,6 @@
<string name="repeat_every">Hver %d</string>
<string name="repeat_interval_prompt">Gjentakelsesintervall</string>
<string name="repeat_dont">Ikke gjenta</string>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>I dag</item>
<item>I morgen</item>
<item>(day after)</item>
<item>Next Week</item>
<item>In Two Weeks</item>
<item>Next Month</item>
</string-array>
<string name="repeat_detail_byday">$I på $D</string>
<string name="repeat_detail_duedate">Hver %s</string>
<string name="TPl_notification">Tidtaker aktiv for %s!</string>

@ -298,17 +298,6 @@
<item>Minu(u)t(en)</item>
<item>Ja(a)r(en)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Altijd</item>
<item>Specifieke dag</item>
<item>Vandaag</item>
<item>Morgen</item>
<item>(volgende dag)</item>
<item>Volgende week</item>
<item>Binnen twee weken</item>
<item>Volgende maand</item>
</string-array>
<string name="repeat_until_title">Herhalen tot...</string>
<string-array name="repeat_type">
<item>vanaf einddatum</item>
<item>vanaf datum voltooid</item>

@ -300,17 +300,6 @@ i odzyskanie zadań z kopi zapasowej (Settings-&gt;Sync and backup-&gt;Backup-&g
<item>Minut(a/y)</item>
<item>Rok/lata</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Zawsze</item>
<item>Konkretny dzień</item>
<item>Dzisiaj</item>
<item>Jutro</item>
<item>(pojutrze)</item>
<item>Następny tydzień</item>
<item>W ciągu dwóch tygodni</item>
<item>Przyszły miesiąc</item>
</string-array>
<string name="repeat_until_title">Powtarzaj do...</string>
<string-array name="repeat_type">
<item>od planowanego terminu</item>
<item>od daty ukończenia</item>

@ -296,17 +296,6 @@
<item>Minuto(s)</item>
<item>Ano(s)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Para sempre</item>
<item>Dia Específico</item>
<item>Hoje</item>
<item>Amanhã</item>
<item>(depois de amanhã)</item>
<item>Próxima semana</item>
<item>Em Duas Semanas</item>
<item>Próximo mês</item>
</string-array>
<string name="repeat_until_title">Repetir até...</string>
<string-array name="repeat_type">
<item>à partir do dia do prazo final</item>
<item>à partir do dia de realização</item>

@ -308,17 +308,6 @@ das tarefas através de um backup em Definições-&gt;Sincronização e backup-&
<item>Minuto(s)</item>
<item>Ano(s)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Eternamente</item>
<item>Dia concreto</item>
<item>Hoje</item>
<item>Amanhã</item>
<item>(dia antes)</item>
<item>Próxima semana</item>
<item>Em duas semanas</item>
<item>Próximo mês</item>
</string-array>
<string name="repeat_until_title">Repetir até...</string>
<string-array name="repeat_type">
<item>da data limite</item>
<item>desde a data de conclusão</item>

@ -308,17 +308,6 @@
<item>Минута(ы)</item>
<item>Лет (Года)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Всегда</item>
<item>Определённый день</item>
<item>Сегодня</item>
<item>Завтра</item>
<item>(день спустя)</item>
<item>На следующей неделе</item>
<item>В течении двух недель</item>
<item>Следующий месяц</item>
</string-array>
<string name="repeat_until_title">Повторять до ...</string>
<string-array name="repeat_type">
<item>с намеченного времени</item>
<item>со времени завершения</item>

@ -306,17 +306,6 @@
<item>Minúta</item>
<item>Rok</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Navždy</item>
<item>Konkrétny deň</item>
<item>Dnes</item>
<item>Zajtra</item>
<item>(deň po)</item>
<item>Nasledujúci týždeň</item>
<item>V dvoch týždňoch</item>
<item>Nasledujúci mesiac</item>
</string-array>
<string name="repeat_until_title">Opakovať do...</string>
<string-array name="repeat_type">
<item>od dátumu ukončenia</item>
<item>od dátumu dokončenia</item>

@ -300,17 +300,6 @@
<item>V minutah</item>
<item>Let/o /i /a</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Do preklica</item>
<item>Določen dan</item>
<item>Danes</item>
<item>Jutri</item>
<item>(dan kasneje)</item>
<item>Naslednji teden</item>
<item>V roku dveh tednov</item>
<item>Naslednji mesec</item>
</string-array>
<string name="repeat_until_title">Ponavljaj, dokler ...</string>
<string-array name="repeat_type">
<item>od datuma dospelosti</item>
<item>od datuma dokončanja</item>

@ -294,17 +294,6 @@ och återställer dina aktuella uppgifter från en backup
<item>Minut(er)</item>
<item>År</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specifik dag</item>
<item>Idag</item>
<item>Imorgon</item>
<item>(i övermorgon)</item>
<item>Nästa Vecka</item>
<item>Om två veckor</item>
<item>Nästa månad</item>
</string-array>
<string name="repeat_until_title">Repetera tills...</string>
<string-array name="repeat_type">
<item>från förfallodatumet</item>
<item>från avslutningsdatumet</item>

@ -86,16 +86,6 @@
<string name="rmd_NoA_done">เสร็จเรียบร้อยแล้ว!</string>
<string name="rmd_NoA_snooze">หลับ..</string>
<string name="repeat_enabled">การเกิดซ้ำ</string>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>วันนี้</item>
<item>พรุ่งนี้</item>
<item>(day after)</item>
<item>Next Week</item>
<item>In Two Weeks</item>
<item>Next Month</item>
</string-array>
<string name="today">วันนี้</string>
<string name="tomorrow">พรุ่งนี้</string>
<string name="yesterday">เมื่อวาน</string>

@ -272,17 +272,6 @@
<item>Dakika</item>
<item>Yıl</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Sürekli</item>
<item>Belirli Gün</item>
<item>Bugün</item>
<item>Yarın</item>
<item>(ertesi gün)</item>
<item>Gelecek Hafta</item>
<item>2 Hafta İçinde</item>
<item>Gelecek Ay</item>
</string-array>
<string name="repeat_until_title">Bu kadar yinele...</string>
<string-array name="repeat_type">
<item>son tarihten itibaren</item>
<item>tamamlanma tarihinden itibaren</item>

@ -296,17 +296,6 @@
<string name="repeat_interval_prompt">Інтервал повторення</string>
<string name="repeat_never">Не повторювати</string>
<string name="repeat_dont">Не повторювати</string>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>Сьогодні</item>
<item>Завтра</item>
<item>(day after)</item>
<item>Next Week</item>
<item>In Two Weeks</item>
<item>Next Month</item>
</string-array>
<string name="repeat_until_title">Повторювати поки...</string>
<string name="repeat_detail_byday">$I кожен $D</string>
<string name="repeat_detail_duedate">З інтервалом в %s</string>
<string name="repeat_detail_duedate_until">Кожні %1$s\nпоки %2$s</string>

@ -251,17 +251,6 @@
<item>分钟</item>
<item></item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>永远重复</item>
<item>具体的一天</item>
<item>今天</item>
<item>明天</item>
<item>(后天)</item>
<item>下星期</item>
<item>两星期内</item>
<item>下个月</item>
</string-array>
<string name="repeat_until_title">重复到……</string>
<string-array name="repeat_type">
<item>自到期日</item>
<item>自完成日</item>

@ -283,17 +283,6 @@
<item>分鐘</item>
<item></item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>永遠重複</item>
<item>具體的一天</item>
<item>今天</item>
<item>明天</item>
<item>(後天)</item>
<item>下星期</item>
<item>兩星期內</item>
<item>下個月</item>
</string-array>
<string name="repeat_until_title">重複到……</string>
<string-array name="repeat_type">
<item>自到期日</item>
<item>自完成日</item>

@ -27,19 +27,6 @@
<item>Year(s)</item>
</string-array>
<string-array name="repeat_until_shortcuts">
<item>Forever</item>
<item>Specific Day</item>
<item>Today</item>
<item>Tomorrow</item>
<item>(day after)</item>
<item>Next Week</item>
<item>In Two Weeks</item>
<item>Next Month</item>
</string-array>
<string name="repeat_until_title">Repeat until...</string>
<string-array name="repeat_type">
<!-- slide 20c: repeat type (date to repeat from) -->
<item>from due date</item>

@ -56,18 +56,6 @@
<style name="TaskListView" parent="ListView">
</style>
<!-- =============================================== TaskEditActivity == -->
<style name="TEA_Dialog" parent="Theme.AppCompat.Light.Dialog">
<item name="asTextColor">@android:color/black</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="TEA_Dialog_Dark" parent="Theme.AppCompat.Dialog">
<item name="asTextColor">@android:color/white</item>
<item name="android:windowNoTitle">true</item>
</style>
<!-- ==================================================== TaskAdapter == -->
<style name="TextAppearance.TAd_ItemTitle">

Loading…
Cancel
Save