Improved Schedule Double Tap Listener

This commit is contained in:
Caesar2011
2018-11-18 21:51:20 +01:00
parent 2d160d3b38
commit a79f59c66c
2 changed files with 25 additions and 11 deletions

View File

@@ -34,7 +34,11 @@ import de.sebse.fuplanner.tools.ui.weekview.WeekViewEvent;
* create an instance of this fragment. * 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 MainActivityListener mListener;
private WeekView mWeekView; private WeekView mWeekView;
private final Logger log = new Logger(this); 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 = v.findViewById(R.id.weekView);
mWeekView.setMonthChangeListener(this); mWeekView.setMonthChangeListener(this);
mWeekView.setScrollListener(this); mWeekView.setScrollListener(this);
mWeekView.setDoubleTapListener(this); mWeekView.setDoubleTapLeftRightListener(this);
mWeekView.setOnEventClickListener(this); mWeekView.setOnEventClickListener(this);
invalidate(false); invalidate(false);
return v; return v;
@@ -150,21 +154,16 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
} }
@Override @Override
public void onDoubleTapListener(Calendar time) { public void onDoubleTapLeftRightListener(boolean isRight) {
Calendar firstVisibleDay = mWeekView.getFirstVisibleDay(); 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 // skip to next week
if (c.getTimeInMillis() > time.getTimeInMillis()){ if (isRight){
firstVisibleDay.add(Calendar.DATE, -1); firstVisibleDay.add(Calendar.DATE, -1);
while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
firstVisibleDay.add(Calendar.DATE, -1); firstVisibleDay.add(Calendar.DATE, -1);
} }
} }
else{ else {
firstVisibleDay.add(Calendar.DATE, 1); firstVisibleDay.add(Calendar.DATE, 1);
while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { while (firstVisibleDay.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
firstVisibleDay.add(Calendar.DATE, 1); firstVisibleDay.add(Calendar.DATE, 1);

View File

@@ -185,6 +185,7 @@ public class WeekView extends View {
private EmptyViewClickListener mEmptyViewClickListener; private EmptyViewClickListener mEmptyViewClickListener;
private EmptyViewLongPressListener mEmptyViewLongPressListener; private EmptyViewLongPressListener mEmptyViewLongPressListener;
private DoubleTapListener mDoubleTapListener; private DoubleTapListener mDoubleTapListener;
private DoubleTapLeftRightListener mDoubleTapLeftRightListener;
private DateTimeInterpreter mDateTimeInterpreter; private DateTimeInterpreter mDateTimeInterpreter;
private ScrollListener mScrollListener; private ScrollListener mScrollListener;
private AddEventClickListener mAddEventClickListener; private AddEventClickListener mAddEventClickListener;
@@ -307,6 +308,8 @@ public class WeekView extends View {
if (selectedTime != null && mDoubleTapListener != null) { if (selectedTime != null && mDoubleTapListener != null) {
mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone()); mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone());
} }
if (mDoubleTapLeftRightListener != null)
mDoubleTapLeftRightListener.onDoubleTapLeftRightListener(getWidth()/2 < e.getX());
return super.onDoubleTap(e); return super.onDoubleTap(e);
} }
@@ -1601,6 +1604,10 @@ public class WeekView extends View {
this.mDoubleTapListener = eventDoubleTapListener; this.mDoubleTapListener = eventDoubleTapListener;
} }
public void setDoubleTapLeftRightListener(DoubleTapLeftRightListener eventDoubleTapLeftRightListener) {
this.mDoubleTapLeftRightListener = eventDoubleTapLeftRightListener;
}
public void setEmptyViewClickListener(EmptyViewClickListener emptyViewClickListener) { public void setEmptyViewClickListener(EmptyViewClickListener emptyViewClickListener) {
this.mEmptyViewClickListener = emptyViewClickListener; this.mEmptyViewClickListener = emptyViewClickListener;
} }
@@ -2758,11 +2765,19 @@ public class WeekView extends View {
public interface DoubleTapListener { 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); 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 { public interface ScrollListener {
/** /**
* Called when the first visible day has changed. * Called when the first visible day has changed.