Før effektivisering
|
|
@ -1,11 +1,14 @@
|
||||||
package com.kbs.kbsintranett;
|
package com.kbs.kbsintranett;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.text.util.Linkify;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
@ -64,18 +67,50 @@ public class CalendarDetailsBottomSheet extends BottomSheetDialogFragment {
|
||||||
calName.setBackgroundTintList(ColorStateList.valueOf(color));
|
calName.setBackgroundTintList(ColorStateList.valueOf(color));
|
||||||
} catch (Exception e) {}
|
} catch (Exception e) {}
|
||||||
|
|
||||||
|
// --- BESKRIVELSE OG LENKER ---
|
||||||
if (!event.getDescription().isEmpty()) {
|
if (!event.getDescription().isEmpty()) {
|
||||||
String cleanDesc = event.getDescription().replaceAll("#varsel:[\\d,]+", "").trim();
|
String cleanDesc = event.getDescription().replaceAll("#varsel:[\\d,]+", "").trim();
|
||||||
|
|
||||||
|
// Konverter HTML til Spannable
|
||||||
desc.setText(Html.fromHtml(cleanDesc, Html.FROM_HTML_MODE_COMPACT));
|
desc.setText(Html.fromHtml(cleanDesc, Html.FROM_HTML_MODE_COMPACT));
|
||||||
desc.setVisibility(View.VISIBLE);
|
|
||||||
|
// Sørg for at rene tekst-lenker (uten <a href>) også blir klikkbare
|
||||||
|
Linkify.addLinks(desc, Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS);
|
||||||
|
|
||||||
|
// Gjør at man kan klikke på lenkene
|
||||||
desc.setMovementMethod(LinkMovementMethod.getInstance());
|
desc.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
|
||||||
|
desc.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
desc.setVisibility(View.GONE);
|
desc.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- ADRESSE OG KART ---
|
||||||
if (!event.getLocation().isEmpty()) {
|
if (!event.getLocation().isEmpty()) {
|
||||||
loc.setText("Sted: " + event.getLocation());
|
loc.setText(event.getLocation()); // Viser kun teksten, ikonet ligger i XML
|
||||||
loc.setVisibility(View.VISIBLE);
|
loc.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
// Gjør adressen klikkbar for å åpne kart
|
||||||
|
loc.setOnClickListener(v -> {
|
||||||
|
String location = event.getLocation();
|
||||||
|
// Opprett en geo-URI. "q=" søker etter stedet.
|
||||||
|
Uri gmmIntentUri = Uri.parse("geo:0,0?q=" + Uri.encode(location));
|
||||||
|
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
|
||||||
|
// Sett pakke til Google Maps for å foretrekke det, men la systemet velge hvis ikke installert
|
||||||
|
mapIntent.setPackage("com.google.android.apps.maps");
|
||||||
|
|
||||||
|
try {
|
||||||
|
startActivity(mapIntent);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Fallback: Hvis Google Maps ikke finnes, prøv uten pakkenavn (hvilken som helst kart-app)
|
||||||
|
mapIntent.setPackage(null);
|
||||||
|
try {
|
||||||
|
startActivity(mapIntent);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Toast.makeText(getContext(), "Fant ingen kart-app", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
loc.setVisibility(View.GONE);
|
loc.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 630 B After Width: | Height: | Size: 762 B |
|
Before Width: | Height: | Size: 395 B After Width: | Height: | Size: 504 B |
|
Before Width: | Height: | Size: 895 B After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
|
|
@ -7,7 +7,7 @@
|
||||||
android:padding="24dp"
|
android:padding="24dp"
|
||||||
android:background="@android:color/white">
|
android:background="@android:color/white">
|
||||||
|
|
||||||
<!-- NYTT: Kalendernavn (Lite merke øverst) -->
|
<!-- Kalendernavn (Lite merke øverst) -->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_calendar_name"
|
android:id="@+id/sheet_calendar_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
@ -38,20 +38,34 @@
|
||||||
android:text="Tidspunkt"
|
android:text="Tidspunkt"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/kbs_muted_blue_gray"
|
android:textColor="@color/kbs_muted_blue_gray"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="12dp"
|
||||||
android:drawablePadding="8dp"
|
android:drawablePadding="8dp"
|
||||||
app:drawableStartCompat="@android:drawable/ic_menu_recent_history"/>
|
app:drawableStartCompat="@android:drawable/ic_menu_recent_history"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
ENDRET: Lagt til kart-ikon, blå tekstfarge, og gjort den klikkbar visuelt
|
||||||
|
med background="?attr/selectableItemBackground"
|
||||||
|
-->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_location"
|
android:id="@+id/sheet_location"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Sted"
|
android:text="Sted"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="#333"
|
android:textColor="@color/kbs_logo_blue"
|
||||||
|
android:textStyle="bold"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"
|
||||||
|
android:drawablePadding="8dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingVertical="8dp"
|
||||||
|
app:drawableStartCompat="@android:drawable/ic_dialog_map"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
ENDRET: Lagt til autoLink for web, email og phone
|
||||||
|
Dette hjelper TextView å forstå linker automatisk
|
||||||
|
-->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_desc"
|
android:id="@+id/sheet_desc"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -59,7 +73,9 @@
|
||||||
android:text="Beskrivelse..."
|
android:text="Beskrivelse..."
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="#555"
|
android:textColor="#555"
|
||||||
android:layout_marginBottom="24dp"/>
|
android:layout_marginBottom="24dp"
|
||||||
|
android:autoLink="web|email|phone"
|
||||||
|
android:linksClickable="true"/>
|
||||||
|
|
||||||
<!-- ADMIN KNAPPER (Vises kun for admin) -->
|
<!-- ADMIN KNAPPER (Vises kun for admin) -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
|
||||||
|
|
@ -598,11 +598,14 @@ FILSTI: app\src\main\java\com\kbs\kbsintranett\CalendarDetailsBottomSheet.java
|
||||||
package com.kbs.kbsintranett;
|
package com.kbs.kbsintranett;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.method.LinkMovementMethod;
|
import android.text.method.LinkMovementMethod;
|
||||||
|
import android.text.util.Linkify;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
@ -661,18 +664,50 @@ public class CalendarDetailsBottomSheet extends BottomSheetDialogFragment {
|
||||||
calName.setBackgroundTintList(ColorStateList.valueOf(color));
|
calName.setBackgroundTintList(ColorStateList.valueOf(color));
|
||||||
} catch (Exception e) {}
|
} catch (Exception e) {}
|
||||||
|
|
||||||
|
// --- BESKRIVELSE OG LENKER ---
|
||||||
if (!event.getDescription().isEmpty()) {
|
if (!event.getDescription().isEmpty()) {
|
||||||
String cleanDesc = event.getDescription().replaceAll("#varsel:[\\d,]+", "").trim();
|
String cleanDesc = event.getDescription().replaceAll("#varsel:[\\d,]+", "").trim();
|
||||||
|
|
||||||
|
// Konverter HTML til Spannable
|
||||||
desc.setText(Html.fromHtml(cleanDesc, Html.FROM_HTML_MODE_COMPACT));
|
desc.setText(Html.fromHtml(cleanDesc, Html.FROM_HTML_MODE_COMPACT));
|
||||||
desc.setVisibility(View.VISIBLE);
|
|
||||||
|
// Sørg for at rene tekst-lenker (uten <a href>) også blir klikkbare
|
||||||
|
Linkify.addLinks(desc, Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS);
|
||||||
|
|
||||||
|
// Gjør at man kan klikke på lenkene
|
||||||
desc.setMovementMethod(LinkMovementMethod.getInstance());
|
desc.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
|
||||||
|
desc.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
desc.setVisibility(View.GONE);
|
desc.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- ADRESSE OG KART ---
|
||||||
if (!event.getLocation().isEmpty()) {
|
if (!event.getLocation().isEmpty()) {
|
||||||
loc.setText("Sted: " + event.getLocation());
|
loc.setText(event.getLocation()); // Viser kun teksten, ikonet ligger i XML
|
||||||
loc.setVisibility(View.VISIBLE);
|
loc.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
// Gjør adressen klikkbar for å åpne kart
|
||||||
|
loc.setOnClickListener(v -> {
|
||||||
|
String location = event.getLocation();
|
||||||
|
// Opprett en geo-URI. "q=" søker etter stedet.
|
||||||
|
Uri gmmIntentUri = Uri.parse("geo:0,0?q=" + Uri.encode(location));
|
||||||
|
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
|
||||||
|
// Sett pakke til Google Maps for å foretrekke det, men la systemet velge hvis ikke installert
|
||||||
|
mapIntent.setPackage("com.google.android.apps.maps");
|
||||||
|
|
||||||
|
try {
|
||||||
|
startActivity(mapIntent);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Fallback: Hvis Google Maps ikke finnes, prøv uten pakkenavn (hvilken som helst kart-app)
|
||||||
|
mapIntent.setPackage(null);
|
||||||
|
try {
|
||||||
|
startActivity(mapIntent);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Toast.makeText(getContext(), "Fant ingen kart-app", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
loc.setVisibility(View.GONE);
|
loc.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
@ -5552,7 +5587,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
public static final String GOOGLE_WEB_CLIENT_ID = "738325360287-cidl3plnqv9ei74vm9vm5muustj6eenb.apps.googleusercontent.com"; // Bytt med din egen hvis denne er feil
|
public static final String GOOGLE_WEB_CLIENT_ID = "SECRET.apps.googleusercontent.com"; // Bytt med din egen hvis denne er feil
|
||||||
|
|
||||||
private static final String TAG = "MainActivity";
|
private static final String TAG = "MainActivity";
|
||||||
private NavController navController;
|
private NavController navController;
|
||||||
|
|
@ -7140,7 +7175,7 @@ FILSTI: app\src\main\res\layout\bottom_sheet_calendar_details.xml
|
||||||
android:padding="24dp"
|
android:padding="24dp"
|
||||||
android:background="@android:color/white">
|
android:background="@android:color/white">
|
||||||
|
|
||||||
<!-- NYTT: Kalendernavn (Lite merke øverst) -->
|
<!-- Kalendernavn (Lite merke øverst) -->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_calendar_name"
|
android:id="@+id/sheet_calendar_name"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
@ -7171,20 +7206,34 @@ FILSTI: app\src\main\res\layout\bottom_sheet_calendar_details.xml
|
||||||
android:text="Tidspunkt"
|
android:text="Tidspunkt"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="@color/kbs_muted_blue_gray"
|
android:textColor="@color/kbs_muted_blue_gray"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="12dp"
|
||||||
android:drawablePadding="8dp"
|
android:drawablePadding="8dp"
|
||||||
app:drawableStartCompat="@android:drawable/ic_menu_recent_history"/>
|
app:drawableStartCompat="@android:drawable/ic_menu_recent_history"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
ENDRET: Lagt til kart-ikon, blå tekstfarge, og gjort den klikkbar visuelt
|
||||||
|
med background="?attr/selectableItemBackground"
|
||||||
|
-->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_location"
|
android:id="@+id/sheet_location"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Sted"
|
android:text="Sted"
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
android:textColor="#333"
|
android:textColor="@color/kbs_logo_blue"
|
||||||
|
android:textStyle="bold"
|
||||||
android:layout_marginBottom="16dp"
|
android:layout_marginBottom="16dp"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"
|
||||||
|
android:drawablePadding="8dp"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
|
android:paddingVertical="8dp"
|
||||||
|
app:drawableStartCompat="@android:drawable/ic_dialog_map"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
ENDRET: Lagt til autoLink for web, email og phone
|
||||||
|
Dette hjelper TextView å forstå linker automatisk
|
||||||
|
-->
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/sheet_desc"
|
android:id="@+id/sheet_desc"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -7192,7 +7241,9 @@ FILSTI: app\src\main\res\layout\bottom_sheet_calendar_details.xml
|
||||||
android:text="Beskrivelse..."
|
android:text="Beskrivelse..."
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:textColor="#555"
|
android:textColor="#555"
|
||||||
android:layout_marginBottom="24dp"/>
|
android:layout_marginBottom="24dp"
|
||||||
|
android:autoLink="web|email|phone"
|
||||||
|
android:linksClickable="true"/>
|
||||||
|
|
||||||
<!-- ADMIN KNAPPER (Vises kun for admin) -->
|
<!-- ADMIN KNAPPER (Vises kun for admin) -->
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
|
||||||