diff --git a/app/src/main/java/com/kbs/kbsintranett/CalendarAdapter.java b/app/src/main/java/com/kbs/kbsintranett/CalendarAdapter.java index 35d0254..51028d7 100644 --- a/app/src/main/java/com/kbs/kbsintranett/CalendarAdapter.java +++ b/app/src/main/java/com/kbs/kbsintranett/CalendarAdapter.java @@ -1,8 +1,11 @@ package com.kbs.kbsintranett; +import android.content.res.ColorStateList; +import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -17,7 +20,6 @@ public class CalendarAdapter extends RecyclerView.Adapter events, OnItemClickListener listener) { this.events = events; this.listener = listener; @@ -38,6 +40,15 @@ public class CalendarAdapter extends RecyclerView.Adapter { if (listener != null) { listener.onItemClick(event); @@ -52,6 +63,7 @@ public class CalendarAdapter extends RecyclerView.Adapter confirmDelete()); + boolean canEdit = UserManager.getInstance().getWriteableCalendars().contains(event.getCalendarName()) + || UserManager.getInstance().isAdmin(); - btnEdit.setOnClickListener(v -> { - // Send eventet videre til redigering - Bundle bundle = new Bundle(); - bundle.putSerializable("edit_event", event); - // Vi må navigere via parent fragmentets navController - NavHostFragment.findNavController(this).navigate(R.id.navigation_create_event, bundle); - dismiss(); - }); + if (canEdit) { + adminLayout.setVisibility(View.VISIBLE); + btnDelete.setOnClickListener(v -> confirmDelete()); + btnEdit.setOnClickListener(v -> { + Bundle bundle = new Bundle(); + bundle.putSerializable("edit_event", event); + NavHostFragment.findNavController(this).navigate(R.id.navigation_create_event, bundle); + dismiss(); + }); + } else { + adminLayout.setVisibility(View.GONE); + } } return view; @@ -92,15 +112,8 @@ public class CalendarDetailsBottomSheet extends BottomSheetDialogFragment { } private void deleteEvent() { - // Vi må sende en CreateEventRequest med ID for å slette - // Vi trenger ikke fylle ut alt, bare ID og kalendertype - // Siden vi ikke vet nøyaktig hvilken kalender den kom fra (APIet gir ikke det), - // prøver vi "Felles" som default, eller prøver å slette fra ID. - // PHP-koden vi lagde støtter sletting basert på ID hvis vi sender riktig kalendertype. - // For nå antar vi "Felles" eller looper i backend. I V11.3 PHP scriptet sletter den basert på ID i valgt kalender. - CreateEventRequest req = new CreateEventRequest( - "", "", "", "", "", "Felles", new ArrayList<>(), false, "" + "", "", "", "", "", event.getCalendarName(), new ArrayList<>(), false, "" ); req.id = event.getId(); @@ -110,9 +123,8 @@ public class CalendarDetailsBottomSheet extends BottomSheetDialogFragment { if (response.isSuccessful()) { Toast.makeText(getContext(), "Slettet!", Toast.LENGTH_SHORT).show(); dismiss(); - // Her burde vi ideelt sett oppdatert listen bak, men brukeren kan dra for å oppdatere } else { - Toast.makeText(getContext(), "Kunne ikke slette (Er det en felles-hendelse?)", Toast.LENGTH_LONG).show(); + Toast.makeText(getContext(), "Kunne ikke slette", Toast.LENGTH_LONG).show(); } } diff --git a/app/src/main/java/com/kbs/kbsintranett/CalendarEvent.java b/app/src/main/java/com/kbs/kbsintranett/CalendarEvent.java index 40fe62a..9ef3b46 100644 --- a/app/src/main/java/com/kbs/kbsintranett/CalendarEvent.java +++ b/app/src/main/java/com/kbs/kbsintranett/CalendarEvent.java @@ -23,10 +23,16 @@ public class CalendarEvent implements Serializable { @SerializedName("location") private String location; - // V11.0: Liste av minutter (f.eks [15, 60]) @SerializedName("reminders") private List reminders = new ArrayList<>(); + // NYE FELTER V12.2 + @SerializedName("calendar_name") + private String calendarName; + + @SerializedName("calendar_color") + private String calendarColor; + // UI-hjelpefelter private String day; private String month; @@ -48,14 +54,18 @@ public class CalendarEvent implements Serializable { public String getDescription() { return description != null ? description : ""; } public String getLocation() { return location != null ? location : ""; } - // Henter listen. Hvis den er null (gamle data), returner tom liste. public List getReminders() { return reminders != null ? reminders : new ArrayList<>(); } -// --- KOMPATIBILITETS-METODER (For å fikse build-feil i CalendarManager og Worker) --- + // NYE GETTERS/SETTERS + public String getCalendarName() { return calendarName != null ? calendarName : "Ukjent"; } + public void setCalendarName(String name) { this.calendarName = name; } - // Brukes av CalendarManager.java for lokale events + public String getCalendarColor() { return calendarColor != null ? calendarColor : "#888888"; } + public void setCalendarColor(String color) { this.calendarColor = color; } + + // --- KOMPATIBILITETS-METODER --- public void setReminderMinutes(int minutes) { this.reminders = new ArrayList<>(); if (minutes > 0) { @@ -63,7 +73,6 @@ public class CalendarEvent implements Serializable { } } - // Brukes hvis gammel kode prøver å hente ett tall. Returnerer det første i listen. public int getReminderMinutes() { if (reminders != null && !reminders.isEmpty()) { return reminders.get(0); diff --git a/app/src/main/java/com/kbs/kbsintranett/CalendarManager.java b/app/src/main/java/com/kbs/kbsintranett/CalendarManager.java index ea7c107..dec83be 100644 --- a/app/src/main/java/com/kbs/kbsintranett/CalendarManager.java +++ b/app/src/main/java/com/kbs/kbsintranett/CalendarManager.java @@ -118,9 +118,12 @@ public class CalendarManager { } CalendarEvent event = new CalendarEvent(title, rawStart, rawEnd, desc, loc); - // Denne metoden eksisterer nå i CalendarEvent (se fil 1) event.setReminderMinutes(0); + // NYTT V12.2: Sett standardfarge for lokale kalendere + event.setCalendarColor("#888888"); // Grå for lokale events + event.setCalendarName("Min Kalender (Lokal)"); + formatEventForUI(event); deviceEvents.add(event); } diff --git a/app/src/main/res/drawable/bg_date_box.xml b/app/src/main/res/drawable/bg_date_box.xml new file mode 100644 index 0000000..c4a7aeb --- /dev/null +++ b/app/src/main/res/drawable/bg_date_box.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_calendar_details.xml b/app/src/main/res/layout/bottom_sheet_calendar_details.xml index 096346b..8dd1950 100644 --- a/app/src/main/res/layout/bottom_sheet_calendar_details.xml +++ b/app/src/main/res/layout/bottom_sheet_calendar_details.xml @@ -6,6 +6,21 @@ android:orientation="vertical" android:padding="24dp" android:background="@android:color/white"> + + + + -