From 556b5908d292da02406a72417b35653653c14834 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 30 Mar 2020 09:45:18 -0500 Subject: [PATCH] Improve some task edit touch targets --- .../com/todoroo/astrid/repeats/RepeatControlSet.java | 12 ++++++++---- .../java/com/todoroo/astrid/tags/TagsControlSet.java | 12 ++++++++---- .../com/todoroo/astrid/timers/TimerControlSet.java | 9 +++++++-- .../com/todoroo/astrid/ui/HideUntilControlSet.java | 10 ++++++++++ .../main/java/org/tasks/ui/CalendarControlSet.java | 11 ++++++++--- .../main/java/org/tasks/ui/DeadlineControlSet.java | 10 +++++++--- .../main/java/org/tasks/ui/LocationControlSet.java | 9 +++++++-- .../main/java/org/tasks/ui/RemoteListFragment.java | 10 +++++++--- .../java/org/tasks/ui/TaskEditControlFragment.java | 9 +++++++++ app/src/main/res/layout/control_set_clear_button.xml | 1 - app/src/main/res/layout/control_set_remote_list.xml | 1 - app/src/main/res/layout/control_set_tags.xml | 1 - app/src/main/res/layout/control_set_template.xml | 1 + app/src/main/res/layout/location_row.xml | 6 ------ 14 files changed, 72 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java b/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java index 275cfb8f4..02b73fa6a 100644 --- a/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/repeats/RepeatControlSet.java @@ -28,7 +28,6 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; import butterknife.BindView; -import butterknife.OnClick; import butterknife.OnItemSelected; import com.google.common.base.Strings; import com.google.ical.values.RRule; @@ -191,10 +190,15 @@ public class RepeatControlSet extends TaskEditControlFragment { component.inject(this); } - @OnClick(R.id.display_row_edit) - void openPopup(View view) { + @Override + protected void onRowClick() { newBasicRecurrenceDialog(this, rrule, dueDate) - .show(getFragmentManager(), FRAG_TAG_BASIC_RECURRENCE); + .show(getParentFragmentManager(), FRAG_TAG_BASIC_RECURRENCE); + } + + @Override + protected boolean isClickable() { + return true; } @Override diff --git a/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java b/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java index 779c3b4c6..965bca8d7 100644 --- a/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/tags/TagsControlSet.java @@ -19,7 +19,6 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable; import butterknife.BindView; -import butterknife.OnClick; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; import com.google.common.base.Predicates; @@ -111,13 +110,18 @@ public final class TagsControlSet extends TaskEditControlFragment { } } - @OnClick(R.id.tag_row) - void onClickRow() { + @Override + protected void onRowClick() { Intent intent = new Intent(getContext(), TagPickerActivity.class); intent.putParcelableArrayListExtra(TagPickerActivity.EXTRA_SELECTED, selectedTags); startActivityForResult(intent, REQUEST_TAG_PICKER_ACTIVITY); } + @Override + protected boolean isClickable() { + return true; + } + @Override public int getIcon() { return R.drawable.ic_outline_label_24px; @@ -149,7 +153,7 @@ public final class TagsControlSet extends TaskEditControlFragment { } Chip chip = chipProvider.newClosableChip(tagData); chipProvider.apply(chip, tagData); - chip.setOnClickListener(view -> onClickRow()); + chip.setOnClickListener(view -> onRowClick()); chip.setOnCloseIconClickListener( view -> { selectedTags.remove(tagData); diff --git a/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java b/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java index 269b09aa4..6b01fa1b6 100644 --- a/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/timers/TimerControlSet.java @@ -112,14 +112,19 @@ public class TimerControlSet extends TaskEditControlFragment { outState.putLong(EXTRA_STARTED, timerStarted); } - @OnClick(R.id.display_row_edit) - void openPopup(View view) { + @Override + protected void onRowClick() { if (dialog == null) { dialog = buildDialog(); } dialog.show(); } + @Override + protected boolean isClickable() { + return true; + } + private AlertDialog buildDialog() { return dialogBuilder .newDialog() diff --git a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java index e59052c85..d8fe7ccb7 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java +++ b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.java @@ -89,6 +89,16 @@ public class HideUntilControlSet extends TaskEditControlFragment implements OnIt refreshDisplayView(); } + @Override + protected void onRowClick() { + spinner.performClick(); + } + + @Override + protected boolean isClickable() { + return true; + } + @Nullable @Override public View onCreateView( diff --git a/app/src/main/java/org/tasks/ui/CalendarControlSet.java b/app/src/main/java/org/tasks/ui/CalendarControlSet.java index 36a5f61cd..2d88dea7b 100644 --- a/app/src/main/java/org/tasks/ui/CalendarControlSet.java +++ b/app/src/main/java/org/tasks/ui/CalendarControlSet.java @@ -27,10 +27,10 @@ import com.todoroo.astrid.data.Task; import com.todoroo.astrid.gcal.GCalHelper; import javax.inject.Inject; import org.tasks.R; -import org.tasks.calendars.CalendarPicker; import org.tasks.analytics.Tracker; import org.tasks.calendars.AndroidCalendar; import org.tasks.calendars.CalendarEventProvider; +import org.tasks.calendars.CalendarPicker; import org.tasks.calendars.CalendarProvider; import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForActivity; @@ -226,8 +226,8 @@ public class CalendarControlSet extends TaskEditControlFragment { refreshDisplayView(); } - @OnClick(R.id.calendar_display_which) - void clickCalendar(View view) { + @Override + protected void onRowClick() { if (Strings.isNullOrEmpty(eventUri)) { newCalendarPicker(this, REQUEST_CODE_PICK_CALENDAR, getCalendarName()) .show(getParentFragmentManager(), FRAG_TAG_CALENDAR_PICKER); @@ -238,6 +238,11 @@ public class CalendarControlSet extends TaskEditControlFragment { } } + @Override + protected boolean isClickable() { + return true; + } + private void openCalendarEvent() { ContentResolver cr = getActivity().getContentResolver(); Uri uri = Uri.parse(eventUri); diff --git a/app/src/main/java/org/tasks/ui/DeadlineControlSet.java b/app/src/main/java/org/tasks/ui/DeadlineControlSet.java index a2bc548d0..f6f653566 100644 --- a/app/src/main/java/org/tasks/ui/DeadlineControlSet.java +++ b/app/src/main/java/org/tasks/ui/DeadlineControlSet.java @@ -13,7 +13,6 @@ import android.widget.TextView; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import butterknife.BindView; -import butterknife.OnClick; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.data.Task; import javax.inject.Inject; @@ -70,12 +69,17 @@ public class DeadlineControlSet extends TaskEditControlFragment { return view; } - @OnClick(R.id.due_date) - void showDateTimePicker() { + @Override + protected void onRowClick() { DateTimePicker.Companion.newDateTimePicker(this, REQUEST_DATE, 0, getDueDateTime()) .show(getParentFragmentManager(), FRAG_TAG_DATE_PICKER); } + @Override + protected boolean isClickable() { + return true; + } + @Override protected int getLayout() { return R.layout.control_set_deadline; diff --git a/app/src/main/java/org/tasks/ui/LocationControlSet.java b/app/src/main/java/org/tasks/ui/LocationControlSet.java index c9cd0b78a..d2a232fb9 100644 --- a/app/src/main/java/org/tasks/ui/LocationControlSet.java +++ b/app/src/main/java/org/tasks/ui/LocationControlSet.java @@ -149,8 +149,8 @@ public class LocationControlSet extends TaskEditControlFragment { } } - @OnClick({R.id.location_name, R.id.location_address}) - void locationClick(View view) { + @Override + protected void onRowClick() { if (location == null) { chooseLocation(); } else { @@ -173,6 +173,11 @@ public class LocationControlSet extends TaskEditControlFragment { } } + @Override + protected boolean isClickable() { + return true; + } + private void chooseLocation() { Intent intent = new Intent(getActivity(), LocationPickerActivity.class); if (location != null) { diff --git a/app/src/main/java/org/tasks/ui/RemoteListFragment.java b/app/src/main/java/org/tasks/ui/RemoteListFragment.java index 125c1cdc6..e19c49a7a 100644 --- a/app/src/main/java/org/tasks/ui/RemoteListFragment.java +++ b/app/src/main/java/org/tasks/ui/RemoteListFragment.java @@ -12,7 +12,6 @@ import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable; import butterknife.BindView; -import butterknife.OnClick; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; import com.google.common.base.Objects; @@ -151,11 +150,16 @@ public class RemoteListFragment extends TaskEditControlFragment { return TAG; } - @OnClick({R.id.remote_list_row, R.id.chip_group}) - void clickGoogleTaskList(View view) { + @Override + protected void onRowClick() { openPicker(); } + @Override + protected boolean isClickable() { + return true; + } + private void openPicker() { newRemoteListSupportPicker(selectedList, this, REQUEST_CODE_SELECT_LIST) .show(getFragmentManager(), FRAG_TAG_GOOGLE_TASK_LIST_SELECTION); diff --git a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java index 5aee383ff..d79b5bcdd 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java +++ b/app/src/main/java/org/tasks/ui/TaskEditControlFragment.java @@ -33,6 +33,9 @@ public abstract class TaskEditControlFragment extends InjectingFragment { inflater.inflate(getLayout(), content); ImageView icon = view.findViewById(R.id.icon); icon.setImageResource(getIcon()); + if (isClickable()) { + content.setOnClickListener(v -> onRowClick()); + } ButterKnife.bind(this, view); return view; } @@ -49,6 +52,12 @@ public abstract class TaskEditControlFragment extends InjectingFragment { } } + protected void onRowClick() {} + + protected boolean isClickable() { + return false; + } + protected abstract int getLayout(); protected abstract int getIcon(); diff --git a/app/src/main/res/layout/control_set_clear_button.xml b/app/src/main/res/layout/control_set_clear_button.xml index fc2db79ca..fcb73ee92 100644 --- a/app/src/main/res/layout/control_set_clear_button.xml +++ b/app/src/main/res/layout/control_set_clear_button.xml @@ -8,6 +8,5 @@ android:layout_gravity="top|center" android:alpha="@dimen/alpha_secondary" android:background="?attr/selectableItemBackgroundBorderless" - android:clickable="true" android:src="@drawable/ic_outline_clear_24px" android:tint="@color/icon_tint"/> \ No newline at end of file diff --git a/app/src/main/res/layout/control_set_remote_list.xml b/app/src/main/res/layout/control_set_remote_list.xml index 7e61035a5..27820248b 100644 --- a/app/src/main/res/layout/control_set_remote_list.xml +++ b/app/src/main/res/layout/control_set_remote_list.xml @@ -2,7 +2,6 @@ diff --git a/app/src/main/res/layout/control_set_tags.xml b/app/src/main/res/layout/control_set_tags.xml index d71c9cf36..ed7d6082f 100644 --- a/app/src/main/res/layout/control_set_tags.xml +++ b/app/src/main/res/layout/control_set_tags.xml @@ -5,7 +5,6 @@ --> diff --git a/app/src/main/res/layout/control_set_template.xml b/app/src/main/res/layout/control_set_template.xml index 209495ecf..3fbf4e139 100644 --- a/app/src/main/res/layout/control_set_template.xml +++ b/app/src/main/res/layout/control_set_template.xml @@ -8,6 +8,7 @@ android:paddingBottom="@dimen/keyline_first" android:paddingStart="0dp" android:paddingEnd="@dimen/keyline_first" + android:background="?attr/selectableItemBackground" android:orientation="horizontal"> @@ -25,8 +23,6 @@ android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_toStartOf="@id/geofence_options" - android:clickable="true" - android:focusable="true" android:gravity="start" android:hint="@string/add_location" android:textAlignment="viewStart"/> @@ -39,9 +35,7 @@ android:layout_alignParentStart="true" android:layout_below="@id/location_name" android:layout_toStartOf="@id/geofence_options" - android:clickable="true" android:ellipsize="end" - android:focusable="true" android:gravity="start" android:maxLines="1" android:singleLine="true"