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 5249275..720f7d5 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/ScheduleFragment.java @@ -1,6 +1,8 @@ package de.sebse.fuplanner.fragments; +import android.app.AlertDialog; import android.content.Context; +import android.graphics.RectF; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; @@ -13,7 +15,6 @@ import java.util.Calendar; import java.util.Iterator; import java.util.List; -import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; import de.sebse.fuplanner.services.KVV.KVV; 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. * */ -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 WeekView mWeekView; private final Logger log = new Logger(this); @@ -58,8 +59,8 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang } public void invalidate(boolean forceRefresh) { - if (getActivity() != null) { - KVV kvv = ((MainActivity) getActivity()).getKVV(); + if (mListener != null) { + KVV kvv = mListener.getKVV(); kvv.getModuleList((Modules success) -> { mModules = success; final int[] i = {0}; @@ -85,7 +86,8 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang mWeekView = v.findViewById(R.id.weekView); mWeekView.setMonthChangeListener(this); mWeekView.setScrollListener(this); - mWeekView.setEventDoubleTapListener(this); + mWeekView.setDoubleTapListener(this); + mWeekView.setOnEventClickListener(this); invalidate(false); return v; } @@ -122,14 +124,13 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang while (it_modEvents.hasNext()) { Event e = it_modEvents.next(); - Calendar ende = Calendar.getInstance(); - ende.setTimeInMillis(e.getEndDate()); + Calendar end = Calendar.getInstance(); + end.setTimeInMillis(e.getEndDate()); Calendar start = Calendar.getInstance(); 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.setLocation(e.getLocation()); events.add(weekViewEvent); } } @@ -137,15 +138,12 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang } return events; - //(List) 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 public void onFirstVisibleDayChanged(Calendar newFirstVisibleDay, Calendar oldFirstVisibleDay) { Calendar newLastVisibleDay = (Calendar) newFirstVisibleDay.clone(); 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()))); } @@ -155,7 +153,7 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang } @Override - public void mOnDoubleTapListener(Calendar time) { + public void onDoubleTapListener(Calendar time) { 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 ); @@ -174,6 +172,32 @@ public class ScheduleFragment extends Fragment implements MonthLoader.MonthChang } } 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); + } } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java index e4535d0..2a87cb7 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/types/Event.java @@ -8,21 +8,21 @@ import java.security.NoSuchAlgorithmException; import de.sebse.fuplanner.tools.ColorRGB; public class Event implements Serializable { + private final String siteId; private final String id; private final String type; private final String title; private final long duration; private final long firstTime; - private final String siteId; private final 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.type = type; this.title = title; this.duration = duration; this.firstTime = firstTime; - this.siteId = siteId; this.location = location .replace(" Übungsraum", "") .replace(" Konferenzraum", "") @@ -53,6 +53,10 @@ public class Event implements Serializable { return location; } + public String getModuleId() { + return siteId; + } + public ColorRGB getColor() { MessageDigest digest; try { 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 ed4db61..212f53b 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 @@ -182,11 +182,10 @@ public class WeekView extends View { // Listeners. private EventClickListener mEventClickListener; private EventLongPressListener mEventLongPressListener; - private GestureDetector.OnDoubleTapListener mOnDoubleTapListener;////////////////////////////////////////////////////// private WeekViewLoader mWeekViewLoader; private EmptyViewClickListener mEmptyViewClickListener; private EmptyViewLongPressListener mEmptyViewLongPressListener; - private DoubleTapListener mDoubleTapListener; ////////////////////////////// + private DoubleTapListener mDoubleTapListener; private DateTimeInterpreter mDateTimeInterpreter; private ScrollListener mScrollListener; private AddEventClickListener mAddEventClickListener; @@ -307,7 +306,7 @@ public class WeekView extends View { public boolean onDoubleTap(MotionEvent e){ Calendar selectedTime = getTimeFromPoint(e.getX(), e.getY()); if (selectedTime != null && mDoubleTapListener != null) { - mDoubleTapListener.mOnDoubleTapListener((Calendar) selectedTime.clone()); + mDoubleTapListener.onDoubleTapListener((Calendar) selectedTime.clone()); } return super.onDoubleTap(e); } @@ -1583,15 +1582,15 @@ public class WeekView extends View { return mEventLongPressListener; } - public GestureDetector.OnDoubleTapListener getEventDoubleTapListener() { - return mOnDoubleTapListener; + public DoubleTapListener getDoubleTapListener() { + return mDoubleTapListener; } public void setEventLongPressListener(EventLongPressListener eventLongPressListener) { this.mEventLongPressListener = eventLongPressListener; } - public void setEventDoubleTapListener(DoubleTapListener eventDoubleTapListener) { + public void setDoubleTapListener(DoubleTapListener 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. */ - void mOnDoubleTapListener(Calendar time); + void onDoubleTapListener(Calendar time); } public interface ScrollListener { diff --git a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekViewEvent.java b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekViewEvent.java index df08053..b12b106 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekViewEvent.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/ui/weekview/WeekViewEvent.java @@ -50,6 +50,8 @@ public class WeekViewEvent { this.mStartTime.set(Calendar.DAY_OF_MONTH, startDay); this.mStartTime.set(Calendar.HOUR_OF_DAY, startHour); this.mStartTime.set(Calendar.MINUTE, startMinute); + this.mStartTime.set(Calendar.SECOND, 0); + this.mStartTime.set(Calendar.MILLISECOND, 0); this.mEndTime = Calendar.getInstance(); 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.HOUR_OF_DAY, endHour); this.mEndTime.set(Calendar.MINUTE, endMinute); + this.mEndTime.set(Calendar.SECOND, 0); + this.mEndTime.set(Calendar.MILLISECOND, 0); this.mName = name; } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a0a1b95..623cf53 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -38,4 +38,6 @@ "Aktualisieren" Heute Kantinen + Ort: %1$s + Modul: %1$s \ No newline at end of file diff --git a/app/src/main/res/values-ldrtl/strings.xml b/app/src/main/res/values-ldrtl/strings.xml deleted file mode 100644 index d70d91f..0000000 --- a/app/src/main/res/values-ldrtl/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - / - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1aed874..2cf62ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,5 +43,7 @@ Canteens %1$.2f€ / %2$.2f€ / %3$.2f€ %1$.2f€ - / + / + Location: %1$s + Module: %1$s