diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java index 2dce81b..8d6bedf 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java @@ -34,7 +34,11 @@ import de.sebse.fuplanner.tools.ui.weekview.WeekViewEvent; * create an instance of this fragment. * */ -public class ScheduleFragment extends Fragment implements MonthLoader.MonthChangeListener, WeekView.ScrollListener, WeekView.DoubleTapListener, WeekView.EventClickListener { +public class ScheduleFragment extends Fragment implements + MonthLoader.MonthChangeListener, + WeekView.ScrollListener, + WeekView.DoubleTapLeftRightListener, + WeekView.EventClickListener { private MainActivityListener mListener; private WeekView mWeekView; private final Logger log = new Logger(this); @@ -83,7 +87,7 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang mWeekView = v.findViewById(R.id.weekView); mWeekView.setMonthChangeListener(this); mWeekView.setScrollListener(this); - mWeekView.setDoubleTapListener(this); + mWeekView.setDoubleTapLeftRightListener(this); mWeekView.setOnEventClickListener(this); invalidate(false); return v; @@ -150,21 +154,16 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang } @Override - public void onDoubleTapListener(Calendar time) { + public void onDoubleTapLeftRightListener(boolean isRight) { Calendar firstVisibleDay = mWeekView.getFirstVisibleDay(); - Calendar c = Calendar.getInstance(); - c.set(firstVisibleDay.get(Calendar.YEAR), firstVisibleDay.get(Calendar.MONTH), firstVisibleDay.get(Calendar.DAY_OF_MONTH), 0,0 ); - // Limit when to go a week backwards and when to the next week - c.add(Calendar.DATE, 2); - // skip to next week - if (c.getTimeInMillis() > time.getTimeInMillis()){ + if (isRight){ firstVisibleDay.add(Calendar.DATE, -1); while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { firstVisibleDay.add(Calendar.DATE, -1); } } - else{ + else { firstVisibleDay.add(Calendar.DATE, 1); while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { firstVisibleDay.add(Calendar.DATE, 1); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java index 3be24e7..7eb216a 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekView.java @@ -185,6 +185,7 @@ public class WeekView extends View { private EmptyViewClickListener mEmptyViewClickListener; private EmptyViewLongPressListener mEmptyViewLongPressListener; private DoubleTapListener mDoubleTapListener; + private DoubleTapLeftRightListener mDoubleTapLeftRightListener; private DateTimeInterpreter mDateTimeInterpreter; private ScrollListener mScrollListener; private AddEventClickListener mAddEventClickListener; @@ -307,6 +308,8 @@ public class WeekView extends View { if (selectedTime != null && mDoubleTapListener != null) { mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone()); } + if (mDoubleTapLeftRightListener != null) + mDoubleTapLeftRightListener.onDoubleTapLeftRightListener(getWidth()/2 < e.getX()); return super.onDoubleTap(e); } @@ -1601,6 +1604,10 @@ public class WeekView extends View { this.mDoubleTapListener = eventDoubleTapListener; } + public void setDoubleTapLeftRightListener(DoubleTapLeftRightListener eventDoubleTapLeftRightListener) { + this.mDoubleTapLeftRightListener = eventDoubleTapLeftRightListener; + } + public void setEmptyViewClickListener(EmptyViewClickListener emptyViewClickListener) { this.mEmptyViewClickListener = emptyViewClickListener; } @@ -2758,11 +2765,19 @@ public class WeekView extends View { public interface DoubleTapListener { /** * - * @param time: {@link Calendar} object set with the date and time of the long pressed position on the view. + * @param time: {@link Calendar} object set with the date and time of the double tapped position on the view. */ void onDoubleTapListener(Calendar time); } + public interface DoubleTapLeftRightListener { + /** + * + * @param isRight: {@link boolean} object set set true if double tapped on the right side on the view. + */ + void onDoubleTapLeftRightListener(boolean isRight); + } + public interface ScrollListener { /** * Called when the first visible day has changed.