Add deadline clear button

pull/321/head
Alex Baker 9 years ago
parent 351c6696b5
commit bc2265dcb5

@ -32,7 +32,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastHoneycomb;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static org.tasks.date.DateTimeUtils.newDate; import static org.tasks.date.DateTimeUtils.newDate;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import static org.tasks.preferences.ResourceResolver.getData;
import static org.tasks.preferences.ResourceResolver.getResource; import static org.tasks.preferences.ResourceResolver.getResource;
public class DeadlineControlSet extends TaskEditControlSetBase { public class DeadlineControlSet extends TaskEditControlSetBase {
@ -58,6 +57,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
private FragmentActivity activity; private FragmentActivity activity;
private Spinner dueDateSpinner; private Spinner dueDateSpinner;
private Spinner dueTimeSpinner; private Spinner dueTimeSpinner;
private View clearButton;
private ArrayAdapter<String> dueDateAdapter; private ArrayAdapter<String> dueDateAdapter;
private ArrayAdapter<String> dueTimeAdapter; private ArrayAdapter<String> dueTimeAdapter;
private long date = 0; private long date = 0;
@ -86,7 +86,6 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
tomorrowString = activity.getString(R.string.tomorrow); tomorrowString = activity.getString(R.string.tomorrow);
dueDateOptions.addAll(asList( dueDateOptions.addAll(asList(
"", "",
activity.getString(R.string.TEA_no_date),
todayString, todayString,
tomorrowString, tomorrowString,
"", "",
@ -109,6 +108,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
private void refreshDisplayView() { private void refreshDisplayView() {
updateDueDateOptions(); updateDueDateOptions();
updateDueTimeOptions(); updateDueTimeOptions();
clearButton.setVisibility(date > 0 ? View.VISIBLE : View.GONE);
} }
private void updateDueDateOptions() { private void updateDueDateOptions() {
@ -127,7 +127,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
dueDateOptions.set(0, DateUtilities.getLongDateStringHideYear(newDate(date))); dueDateOptions.set(0, DateUtilities.getLongDateStringHideYear(newDate(date)));
} }
} }
dueDateOptions.set(4, nextWeekString); dueDateOptions.set(3, nextWeekString);
dueDateAdapter.notifyDataSetChanged(); dueDateAdapter.notifyDataSetChanged();
dueDateSpinner.setSelection(0); dueDateSpinner.setSelection(0);
} }
@ -160,6 +160,15 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
@Override @Override
protected void afterInflate() { protected void afterInflate() {
View view = getView(); View view = getView();
clearButton = view.findViewById(R.id.clear_due_date);
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
date = 0;
time = -1;
refreshDisplayView();
}
});
dueDateSpinner = (Spinner) view.findViewById(R.id.due_date); dueDateSpinner = (Spinner) view.findViewById(R.id.due_date);
dueDateAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item, dueDateOptions) { dueDateAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_item, dueDateOptions) {
@Override @Override
@ -298,26 +307,20 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
case 0: case 0:
return; return;
case 1: case 1:
date = 0; setDate(today.getMillis());
setTime(-1);
dueDateAdapter.notifyDataSetChanged();
break; break;
case 2: case 2:
date = today.getMillis(); setDate(today.plusDays(1).getMillis());
break; break;
case 3: case 3:
date = today.plusDays(1).getMillis(); setDate(today.plusWeeks(1).getMillis());
break; break;
case 4: case 4:
date = today.plusWeeks(1).getMillis();
break;
case 5:
MyDatePickerDialog dialog = new MyDatePickerDialog(); MyDatePickerDialog dialog = new MyDatePickerDialog();
dialog.initialize(new DatePickerDialog.OnDateSetListener() { dialog.initialize(new DatePickerDialog.OnDateSetListener() {
@Override @Override
public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) { public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
date = new DateTime(year, month + 1, day, 0, 0, 0, 0).getMillis(); setDate(new DateTime(year, month + 1, day, 0, 0, 0, 0).getMillis());
refreshDisplayView();
} }
}, today.getYear(), today.getMonthOfYear() - 1, today.getDayOfMonth(), false); }, today.getYear(), today.getMonthOfYear() - 1, today.getDayOfMonth(), false);
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@ -329,9 +332,6 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
dialog.show(activity.getSupportFragmentManager(), FRAG_TAG_PICK_A_DATE); dialog.show(activity.getSupportFragmentManager(), FRAG_TAG_PICK_A_DATE);
break; break;
} }
dueDateAdapter.notifyDataSetChanged();
updateDueTimeOptions();
} }
@Override @Override
@ -372,7 +372,7 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override @Override
public void onDismiss(DialogInterface dialog) { public void onDismiss(DialogInterface dialog) {
updateDueTimeOptions(); refreshDisplayView();
} }
}); });
dialog.show(activity.getSupportFragmentManager(), FRAG_TAG_PICK_A_TIME); dialog.show(activity.getSupportFragmentManager(), FRAG_TAG_PICK_A_TIME);
@ -387,6 +387,14 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
}); });
} }
private void setDate(long millis) {
date = millis;
if (date == 0) {
time = -1;
}
refreshDisplayView();
}
private void setTime(int millisOfDay) { private void setTime(int millisOfDay) {
time = millisOfDay; time = millisOfDay;
@ -396,10 +404,9 @@ public class DeadlineControlSet extends TaskEditControlSetBase {
dateTime = dateTime.plusDays(1); dateTime = dateTime.plusDays(1);
} }
date = dateTime.withMillisOfDay(0).getMillis(); date = dateTime.withMillisOfDay(0).getMillis();
updateDueDateOptions();
} }
updateDueTimeOptions(); refreshDisplayView();
} }
@Override @Override

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

@ -29,14 +29,18 @@
<ImageView <ImageView
android:id="@+id/button1" android:id="@+id/button1"
android:src="?attr/ic_action_cancel" android:src="?attr/ic_cancel"
android:layout_gravity="center" android:layout_gravity="center"
android:contentDescription="@string/remove" android:contentDescription="@android:string/cancel"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1" android:layout_weight="1"
android:clickable="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:alpha="@dimen/drawer_icon_alpha" android:alpha="@dimen/drawer_icon_alpha"
android:paddingRight="5dp" android:paddingStart="10dp"
android:paddingEnd="5dp" /> android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingEnd="10dp" />
</LinearLayout> </LinearLayout>

@ -1,22 +1,47 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="top" android:layout_gravity="top"
android:orientation="horizontal"> android:orientation="horizontal">
<Spinner <LinearLayout
android:id="@+id/due_date" android:layout_width="fill_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="?attr/textfield_underline" /> android:layout_weight="100"
android:orientation="horizontal">
<Spinner
android:id="@+id/due_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/textfield_underline" />
<Spinner
android:id="@+id/due_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginStart="15dp"
android:background="?attr/textfield_underline" />
<Spinner </LinearLayout>
android:id="@+id/due_time"
<ImageView
android:id="@+id/clear_due_date"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="fill_parent"
android:layout_marginLeft="15dp" android:layout_gravity="center"
android:layout_marginStart="15dp" android:layout_weight="1"
android:background="?attr/textfield_underline" /> android:alpha="@dimen/drawer_icon_alpha"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:contentDescription="@android:string/cancel"
android:paddingEnd="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingStart="10dp"
android:src="?attr/ic_cancel"
android:visibility="gone" />
</LinearLayout> </LinearLayout>

@ -58,6 +58,7 @@
<attr name="ic_folder" format="reference" /> <attr name="ic_folder" format="reference" />
<attr name="ic_file" format="reference" /> <attr name="ic_file" format="reference" />
<attr name="textfield_underline" format="reference" /> <attr name="textfield_underline" format="reference" />
<attr name="ic_cancel" format="reference" />
<declare-styleable name="DateAndTimePicker"> <declare-styleable name="DateAndTimePicker">
<attr name="shortcutLabels" format="reference" /> <attr name="shortcutLabels" format="reference" />

@ -66,6 +66,7 @@
<item name="ic_action_discard">@drawable/ic_close_white_24dp</item> <item name="ic_action_discard">@drawable/ic_close_white_24dp</item>
<item name="textfield_underline">@drawable/textfield_underline_white</item> <item name="textfield_underline">@drawable/textfield_underline_white</item>
<item name="android:spinnerItemStyle">@style/SpinnerNoPadding</item> <item name="android:spinnerItemStyle">@style/SpinnerNoPadding</item>
<item name="ic_cancel">@drawable/ic_cancel_white_24dp</item>
</style> </style>
<style name="TasksDialogDark" parent="@style/Theme.AppCompat.Dialog"> <style name="TasksDialogDark" parent="@style/Theme.AppCompat.Dialog">

@ -66,6 +66,7 @@
<item name="ic_action_discard">@drawable/ic_close_white_24dp</item> <item name="ic_action_discard">@drawable/ic_close_white_24dp</item>
<item name="textfield_underline">@drawable/textfield_underline_black</item> <item name="textfield_underline">@drawable/textfield_underline_black</item>
<item name="android:spinnerItemStyle">@style/SpinnerNoPadding</item> <item name="android:spinnerItemStyle">@style/SpinnerNoPadding</item>
<item name="ic_cancel">@drawable/ic_cancel_black_24dp</item>
</style> </style>
<style name="TasksDialog" parent="@style/Theme.AppCompat.Light.Dialog"> <style name="TasksDialog" parent="@style/Theme.AppCompat.Light.Dialog">

Loading…
Cancel
Save