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.
*
*/
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,15 +154,10 @@ 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);

View File

@@ -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.