Implemented Event Click Listener
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package de.sebse.fuplanner.fragments;
|
package de.sebse.fuplanner.fragments;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.graphics.RectF;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
@@ -13,7 +15,6 @@ import java.util.Calendar;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import de.sebse.fuplanner.MainActivity;
|
|
||||||
import de.sebse.fuplanner.R;
|
import de.sebse.fuplanner.R;
|
||||||
import de.sebse.fuplanner.services.KVV.KVV;
|
import de.sebse.fuplanner.services.KVV.KVV;
|
||||||
import de.sebse.fuplanner.services.KVV.types.Event;
|
import de.sebse.fuplanner.services.KVV.types.Event;
|
||||||
@@ -34,7 +35,7 @@ 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 {
|
public class ScheduleFragment extends Fragment implements MonthLoader.MonthChangeListener, WeekView.ScrollListener, WeekView.DoubleTapListener, WeekView.EventClickListener {
|
||||||
private MainAcitivityListener mListener;
|
private MainAcitivityListener mListener;
|
||||||
private WeekView mWeekView;
|
private WeekView mWeekView;
|
||||||
private final Logger log = new Logger(this);
|
private final Logger log = new Logger(this);
|
||||||
@@ -58,8 +59,8 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void invalidate(boolean forceRefresh) {
|
public void invalidate(boolean forceRefresh) {
|
||||||
if (getActivity() != null) {
|
if (mListener != null) {
|
||||||
KVV kvv = ((MainActivity) getActivity()).getKVV();
|
KVV kvv = mListener.getKVV();
|
||||||
kvv.getModuleList((Modules success) -> {
|
kvv.getModuleList((Modules success) -> {
|
||||||
mModules = success;
|
mModules = success;
|
||||||
final int[] i = {0};
|
final int[] i = {0};
|
||||||
@@ -85,7 +86,8 @@ 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.setEventDoubleTapListener(this);
|
mWeekView.setDoubleTapListener(this);
|
||||||
|
mWeekView.setOnEventClickListener(this);
|
||||||
invalidate(false);
|
invalidate(false);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
@@ -122,14 +124,13 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
|||||||
while (it_modEvents.hasNext()) {
|
while (it_modEvents.hasNext()) {
|
||||||
Event e = it_modEvents.next();
|
Event e = it_modEvents.next();
|
||||||
|
|
||||||
Calendar ende = Calendar.getInstance();
|
Calendar end = Calendar.getInstance();
|
||||||
ende.setTimeInMillis(e.getEndDate());
|
end.setTimeInMillis(e.getEndDate());
|
||||||
Calendar start = Calendar.getInstance();
|
Calendar start = Calendar.getInstance();
|
||||||
start.setTimeInMillis(e.getStartDate());
|
start.setTimeInMillis(e.getStartDate());
|
||||||
|
|
||||||
WeekViewEvent weekViewEvent = new WeekViewEvent(e.getId(), e.getTitle(), start.get(Calendar.YEAR), start.get(Calendar.MONTH) + 1, start.get(Calendar.DAY_OF_MONTH), start.get(Calendar.HOUR_OF_DAY), start.get(Calendar.MINUTE), ende.get(Calendar.YEAR), ende.get(Calendar.MONTH) + 1, ende.get(Calendar.DAY_OF_MONTH), ende.get(Calendar.HOUR_OF_DAY), ende.get(Calendar.MINUTE));
|
WeekViewEvent weekViewEvent = new WeekViewEvent(e.getModuleId()+"/"+e.getId(), e.getTitle(), e.getLocation(), start, end);
|
||||||
weekViewEvent.setColor(e.getColor());
|
weekViewEvent.setColor(e.getColor());
|
||||||
weekViewEvent.setLocation(e.getLocation());
|
|
||||||
events.add(weekViewEvent);
|
events.add(weekViewEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,15 +138,12 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
|||||||
|
|
||||||
}
|
}
|
||||||
return events;
|
return events;
|
||||||
//(List<? extends WeekViewEvent>) new WeekViewEvent(l,"Test", 2018, 7, 3,15,00,2018, 7, 3, 20,00);
|
|
||||||
//int id, String title, int startYear, int startMonth, int startDay, int startHour, int startMinute, int endYear, int endMonth, int endDay, int endHour, int endMinute
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay) {
|
public void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay) {
|
||||||
Calendar newLastVisibleDay = (Calendar) newFirstVisibleDay.clone();
|
Calendar newLastVisibleDay = (Calendar) newFirstVisibleDay.clone();
|
||||||
newLastVisibleDay.add(Calendar.HOUR, 24*mWeekView.getNumberOfVisibleDays());
|
newLastVisibleDay.add(Calendar.HOUR, 24*mWeekView.getNumberOfVisibleDays());
|
||||||
//mListener.onScheduleFragmentInteraction(newFirstVisibleDay, newLastVisibleDay);
|
|
||||||
mListener.onTitleTextChange(getResources().getString(R.string.date_scale, DateUtils.getModifiedDate(newFirstVisibleDay.getTimeInMillis()), DateUtils.getModifiedDate(newLastVisibleDay.getTimeInMillis())));
|
mListener.onTitleTextChange(getResources().getString(R.string.date_scale, DateUtils.getModifiedDate(newFirstVisibleDay.getTimeInMillis()), DateUtils.getModifiedDate(newLastVisibleDay.getTimeInMillis())));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +153,7 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mOnDoubleTapListener(Calendar time) {
|
public void onDoubleTapListener(Calendar time) {
|
||||||
Calendar firstVisibleDay = mWeekView.getFirstVisibleDay();
|
Calendar firstVisibleDay = mWeekView.getFirstVisibleDay();
|
||||||
Calendar c = Calendar.getInstance();
|
Calendar c = Calendar.getInstance();
|
||||||
c.set(firstVisibleDay.get(Calendar.YEAR), firstVisibleDay.get(Calendar.MONTH), firstVisibleDay.get(Calendar.DAY_OF_MONTH), 0,0 );
|
c.set(firstVisibleDay.get(Calendar.YEAR), firstVisibleDay.get(Calendar.MONTH), firstVisibleDay.get(Calendar.DAY_OF_MONTH), 0,0 );
|
||||||
@@ -174,6 +172,32 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
mWeekView.goToDate(firstVisibleDay);
|
mWeekView.goToDate(firstVisibleDay);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEventClick(WeekViewEvent event, RectF eventRect) {
|
||||||
|
String[] idParts = event.getIdentifier().split("/");
|
||||||
|
String moduleId = idParts[0];
|
||||||
|
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
|
||||||
|
|
||||||
|
if (mListener != null) {
|
||||||
|
KVV kvv = mListener.getKVV();
|
||||||
|
kvv.getModuleList((Modules success) -> {
|
||||||
|
Modules.Module module = success.get(moduleId);
|
||||||
|
String moduleName = module.title;
|
||||||
|
alertDialogBuilder
|
||||||
|
.setTitle(event.getName())
|
||||||
|
.setMessage(
|
||||||
|
getResources().getString(R.string.module_name, moduleName) + "\n" +
|
||||||
|
getResources().getString(R.string.location_name, event.getLocation()) + "\n" +
|
||||||
|
getResources().getString(R.string.date_scale, DateUtils.getModifiedTime(getContext(), event.getStartTime().getTimeInMillis()), DateUtils.getModifiedTime(getContext(), event.getEndTime().getTimeInMillis()+1))
|
||||||
|
)
|
||||||
|
.setCancelable(true)
|
||||||
|
.setNeutralButton(R.string.close, (dialog, id) -> dialog.cancel());
|
||||||
|
|
||||||
|
AlertDialog alertDialog = alertDialogBuilder.create();
|
||||||
|
alertDialog.show();
|
||||||
|
}, log::e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,21 +8,21 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
import de.sebse.fuplanner.tools.ColorRGB;
|
import de.sebse.fuplanner.tools.ColorRGB;
|
||||||
|
|
||||||
public class Event implements Serializable {
|
public class Event implements Serializable {
|
||||||
|
private final String siteId;
|
||||||
private final String id;
|
private final String id;
|
||||||
private final String type;
|
private final String type;
|
||||||
private final String title;
|
private final String title;
|
||||||
private final long duration;
|
private final long duration;
|
||||||
private final long firstTime;
|
private final long firstTime;
|
||||||
private final String siteId;
|
|
||||||
private final String location;
|
private final String location;
|
||||||
|
|
||||||
public Event(String id, String type, String title, long duration, long firstTime, String siteId, String location) {
|
public Event(String id, String type, String title, long duration, long firstTime, String siteId, String location) {
|
||||||
|
this.siteId = siteId;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.duration = duration;
|
this.duration = duration;
|
||||||
this.firstTime = firstTime;
|
this.firstTime = firstTime;
|
||||||
this.siteId = siteId;
|
|
||||||
this.location = location
|
this.location = location
|
||||||
.replace(" Übungsraum", "")
|
.replace(" Übungsraum", "")
|
||||||
.replace(" Konferenzraum", "")
|
.replace(" Konferenzraum", "")
|
||||||
@@ -53,6 +53,10 @@ public class Event implements Serializable {
|
|||||||
return location;
|
return location;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getModuleId() {
|
||||||
|
return siteId;
|
||||||
|
}
|
||||||
|
|
||||||
public ColorRGB getColor() {
|
public ColorRGB getColor() {
|
||||||
MessageDigest digest;
|
MessageDigest digest;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -182,11 +182,10 @@ public class WeekView extends View {
|
|||||||
// Listeners.
|
// Listeners.
|
||||||
private EventClickListener mEventClickListener;
|
private EventClickListener mEventClickListener;
|
||||||
private EventLongPressListener mEventLongPressListener;
|
private EventLongPressListener mEventLongPressListener;
|
||||||
private GestureDetector.OnDoubleTapListener mOnDoubleTapListener;//////////////////////////////////////////////////////
|
|
||||||
private WeekViewLoader mWeekViewLoader;
|
private WeekViewLoader mWeekViewLoader;
|
||||||
private EmptyViewClickListener mEmptyViewClickListener;
|
private EmptyViewClickListener mEmptyViewClickListener;
|
||||||
private EmptyViewLongPressListener mEmptyViewLongPressListener;
|
private EmptyViewLongPressListener mEmptyViewLongPressListener;
|
||||||
private DoubleTapListener mDoubleTapListener; //////////////////////////////
|
private DoubleTapListener mDoubleTapListener;
|
||||||
private DateTimeInterpreter mDateTimeInterpreter;
|
private DateTimeInterpreter mDateTimeInterpreter;
|
||||||
private ScrollListener mScrollListener;
|
private ScrollListener mScrollListener;
|
||||||
private AddEventClickListener mAddEventClickListener;
|
private AddEventClickListener mAddEventClickListener;
|
||||||
@@ -307,7 +306,7 @@ public class WeekView extends View {
|
|||||||
public boolean onDoubleTap(MotionEvent e){
|
public boolean onDoubleTap(MotionEvent e){
|
||||||
Calendar selectedTime = getTimeFromPoint(e.getX(), e.getY());
|
Calendar selectedTime = getTimeFromPoint(e.getX(), e.getY());
|
||||||
if (selectedTime != null && mDoubleTapListener != null) {
|
if (selectedTime != null && mDoubleTapListener != null) {
|
||||||
mDoubleTapListener.mOnDoubleTapListener((Calendar) selectedTime.clone());
|
mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone());
|
||||||
}
|
}
|
||||||
return super.onDoubleTap(e);
|
return super.onDoubleTap(e);
|
||||||
}
|
}
|
||||||
@@ -1583,15 +1582,15 @@ public class WeekView extends View {
|
|||||||
return mEventLongPressListener;
|
return mEventLongPressListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GestureDetector.OnDoubleTapListener getEventDoubleTapListener() {
|
public DoubleTapListener getDoubleTapListener() {
|
||||||
return mOnDoubleTapListener;
|
return mDoubleTapListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEventLongPressListener(EventLongPressListener eventLongPressListener) {
|
public void setEventLongPressListener(EventLongPressListener eventLongPressListener) {
|
||||||
this.mEventLongPressListener = eventLongPressListener;
|
this.mEventLongPressListener = eventLongPressListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEventDoubleTapListener(DoubleTapListener eventDoubleTapListener) {
|
public void setDoubleTapListener(DoubleTapListener eventDoubleTapListener) {
|
||||||
this.mDoubleTapListener = eventDoubleTapListener;
|
this.mDoubleTapListener = eventDoubleTapListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2747,7 +2746,7 @@ public class WeekView extends View {
|
|||||||
*
|
*
|
||||||
* @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 long pressed position on the view.
|
||||||
*/
|
*/
|
||||||
void mOnDoubleTapListener(Calendar time);
|
void onDoubleTapListener(Calendar time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ScrollListener {
|
public interface ScrollListener {
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ public class WeekViewEvent {
|
|||||||
this.mStartTime.set(Calendar.DAY_OF_MONTH, startDay);
|
this.mStartTime.set(Calendar.DAY_OF_MONTH, startDay);
|
||||||
this.mStartTime.set(Calendar.HOUR_OF_DAY, startHour);
|
this.mStartTime.set(Calendar.HOUR_OF_DAY, startHour);
|
||||||
this.mStartTime.set(Calendar.MINUTE, startMinute);
|
this.mStartTime.set(Calendar.MINUTE, startMinute);
|
||||||
|
this.mStartTime.set(Calendar.SECOND, 0);
|
||||||
|
this.mStartTime.set(Calendar.MILLISECOND, 0);
|
||||||
|
|
||||||
this.mEndTime = Calendar.getInstance();
|
this.mEndTime = Calendar.getInstance();
|
||||||
this.mEndTime.set(Calendar.YEAR, endYear);
|
this.mEndTime.set(Calendar.YEAR, endYear);
|
||||||
@@ -57,6 +59,8 @@ public class WeekViewEvent {
|
|||||||
this.mEndTime.set(Calendar.DAY_OF_MONTH, endDay);
|
this.mEndTime.set(Calendar.DAY_OF_MONTH, endDay);
|
||||||
this.mEndTime.set(Calendar.HOUR_OF_DAY, endHour);
|
this.mEndTime.set(Calendar.HOUR_OF_DAY, endHour);
|
||||||
this.mEndTime.set(Calendar.MINUTE, endMinute);
|
this.mEndTime.set(Calendar.MINUTE, endMinute);
|
||||||
|
this.mEndTime.set(Calendar.SECOND, 0);
|
||||||
|
this.mEndTime.set(Calendar.MILLISECOND, 0);
|
||||||
|
|
||||||
this.mName = name;
|
this.mName = name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,4 +38,6 @@
|
|||||||
<string name="refresh">"Aktualisieren"</string>
|
<string name="refresh">"Aktualisieren"</string>
|
||||||
<string name="go_to_today">Heute</string>
|
<string name="go_to_today">Heute</string>
|
||||||
<string name="canteens">Kantinen</string>
|
<string name="canteens">Kantinen</string>
|
||||||
|
<string name="location_name">Ort: %1$s</string>
|
||||||
|
<string name="module_name">Modul: %1$s</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="grade_separator">/</string>
|
|
||||||
</resources>
|
|
||||||
@@ -43,5 +43,7 @@
|
|||||||
<string name="canteens">Canteens</string>
|
<string name="canteens">Canteens</string>
|
||||||
<string name="prices" translatable="false">%1$.2f€ / %2$.2f€ / %3$.2f€</string>
|
<string name="prices" translatable="false">%1$.2f€ / %2$.2f€ / %3$.2f€</string>
|
||||||
<string name="price" translatable="false">%1$.2f€</string>
|
<string name="price" translatable="false">%1$.2f€</string>
|
||||||
<string name="grade_separator" translatable="false"> / </string>
|
<string name="grade_separator">/</string>
|
||||||
|
<string name="location_name">Location: %1$s</string>
|
||||||
|
<string name="module_name">Module: %1$s</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user