Improved Schedule Double Tap Listener
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user