diff --git a/app/src/main/java/no/naiv/tilfluktsrom/MainActivity.kt b/app/src/main/java/no/naiv/tilfluktsrom/MainActivity.kt
index 7d64bc2..0b88d87 100644
--- a/app/src/main/java/no/naiv/tilfluktsrom/MainActivity.kt
+++ b/app/src/main/java/no/naiv/tilfluktsrom/MainActivity.kt
@@ -37,6 +37,7 @@ import no.naiv.tilfluktsrom.databinding.ActivityMainBinding
import no.naiv.tilfluktsrom.location.LocationProvider
import no.naiv.tilfluktsrom.location.ShelterFinder
import no.naiv.tilfluktsrom.location.ShelterWithDistance
+import no.naiv.tilfluktsrom.ui.CivilDefenseInfoDialog
import no.naiv.tilfluktsrom.ui.ShelterListAdapter
import no.naiv.tilfluktsrom.util.DistanceUtils
import no.naiv.tilfluktsrom.widget.ShelterWidgetProvider
@@ -220,6 +221,10 @@ class MainActivity : AppCompatActivity(), SensorEventListener {
selectedShelter?.let { highlightShelterOnMap(it) }
}
+ binding.infoButton.setOnClickListener {
+ CivilDefenseInfoDialog().show(supportFragmentManager, CivilDefenseInfoDialog.TAG)
+ }
+
binding.refreshButton.setOnClickListener {
forceRefresh()
}
diff --git a/app/src/main/java/no/naiv/tilfluktsrom/ui/CivilDefenseInfoDialog.kt b/app/src/main/java/no/naiv/tilfluktsrom/ui/CivilDefenseInfoDialog.kt
new file mode 100644
index 0000000..dd5aa2d
--- /dev/null
+++ b/app/src/main/java/no/naiv/tilfluktsrom/ui/CivilDefenseInfoDialog.kt
@@ -0,0 +1,44 @@
+package no.naiv.tilfluktsrom.ui
+
+import android.app.Dialog
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import androidx.fragment.app.DialogFragment
+import no.naiv.tilfluktsrom.R
+
+/**
+ * Full-screen dialog showing civil defense instructions.
+ * Static content — all text comes from string resources for offline use and i18n.
+ */
+class CivilDefenseInfoDialog : DialogFragment() {
+
+ companion object {
+ const val TAG = "CivilDefenseInfoDialog"
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setStyle(STYLE_NO_TITLE, R.style.Theme_Tilfluktsrom_Dialog)
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ return inflater.inflate(R.layout.dialog_civil_defense, container, false)
+ }
+
+ override fun onStart() {
+ super.onStart()
+ dialog?.window?.apply {
+ setLayout(
+ WindowManager.LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.WRAP_CONTENT
+ )
+ }
+ }
+}
diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/drawable/ic_info.xml
new file mode 100644
index 0000000..59969c8
--- /dev/null
+++ b/app/src/main/res/drawable/ic_info.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 821cc87..d5c3c30 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -35,6 +35,15 @@
android:textSize="12sp"
tools:text="@string/status_ready" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 8bf7021..48ccd18 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -64,4 +64,19 @@
Retning til tilfluktsrom, %s unna
+
+
+ Sivilforsvarsinformasjon
+ Hva du skal gjøre når alarmen går
+ 1. Viktig melding-signalet
+ Tre serier med korte støt med ett minutts stillhet mellom hver serie. Dette betyr: søk informasjon umiddelbart. Slå på DAB-radio, TV, eller sjekk offisielle kilder på nett.
+ 2. Flyalarm
+ Korte støt som varer omtrent ett minutt. Dette betyr umiddelbar fare for angrep — søk dekning nå. Gå til nærmeste tilfluktsrom, kjeller eller innerrom umiddelbart.
+ 3. Gå innendørs og finn dekning
+ Kom deg innendørs. Lukk alle vinduer, dører og ventilasjonsåpninger. Bruk denne appen for å finne nærmeste offentlige tilfluktsrom. Kompasset og kartet fungerer uten internett. Hvis det ikke er noe tilfluktsrom i nærheten, gå til en kjeller eller et innerrom bort fra vinduer.
+ 4. Lytt til NRK på DAB-radio
+ Lytt til NRK P1 på DAB-radio for offisielle oppdateringer og instruksjoner fra myndighetene. DAB-radio fungerer selv når mobilnettet og internett er nede. Ha en batteridrevet eller sveivbar DAB-radio som del av beredskapsutstyret ditt.
+ 5. Faren over
+ Én sammenhengende tone på omtrent 30 sekunder. Faren eller angrepet er over. Fortsett å følge instruksjoner fra myndighetene.
+ Kilde: DSB (Direktoratet for samfunnssikkerhet og beredskap)
diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml
index 7fefd34..9a8f085 100644
--- a/app/src/main/res/values-nn/strings.xml
+++ b/app/src/main/res/values-nn/strings.xml
@@ -64,4 +64,19 @@
Retning til tilfluktsrom, %s unna
+
+
+ Sivilforsvarsinformasjon
+ Kva du skal gjere når alarmen går
+ 1. Viktig melding-signalet
+ Tre seriar med korte støyt med eitt minutt stille mellom kvar serie. Dette tyder: søk informasjon med ein gong. Slå på DAB-radio, TV, eller sjekk offisielle kjelder på nett.
+ 2. Flyalarm
+ Korte støyt som varar omtrent eitt minutt. Dette tyder umiddelbar fare for åtak — søk dekning no. Gå til næraste tilfluktsrom, kjellar eller innerrom med ein gong.
+ 3. Gå innandørs og finn dekning
+ Kom deg innandørs. Lukk alle vindauge, dører og ventilasjonsopningar. Bruk denne appen for å finne næraste offentlege tilfluktsrom. Kompasset og kartet fungerer utan internett. Om det ikkje er noko tilfluktsrom i nærleiken, gå til ein kjellar eller eit innerrom bort frå vindauge.
+ 4. Lytt til NRK på DAB-radio
+ Lytt til NRK P1 på DAB-radio for offisielle oppdateringar og instruksjonar frå styresmaktene. DAB-radio fungerer sjølv når mobilnettet og internett er nede. Ha ein batteridrive eller sveivbar DAB-radio som del av beredskapsutstyret ditt.
+ 5. Faren over
+ Éin samanhengande tone på omtrent 30 sekund. Faren eller åtaket er over. Hald fram med å følgje instruksjonar frå styresmaktene.
+ Kjelde: DSB (Direktoratet for samfunnstryggleik og beredskap)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 6fbf843..03e0e04 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -64,4 +64,19 @@
Direction to shelter, %s away
+
+
+ Civil defense information
+ What to do when the alarm sounds
+ 1. Important message signal
+ Three series of short blasts with one minute of silence between each series. This means: seek information immediately. Turn on DAB radio, TV, or check official sources online.
+ 2. Air raid alarm
+ Short blasts lasting approximately one minute. This means immediate danger of attack — seek shelter now. Go to the nearest shelter, basement, or inner room immediately.
+ 3. Go indoors and find shelter
+ Get indoors. Close all windows, doors, and ventilation openings. Use this app to find the nearest public shelter (tilfluktsrom). The compass and map work offline. If no shelter is nearby, go to a basement or an inner room away from windows.
+ 4. Listen to NRK on DAB radio
+ Tune in to NRK P1 on DAB radio for official updates and instructions from authorities. DAB radio works even when mobile networks and the internet are down. Keep a battery-powered or hand-crank DAB radio as part of your emergency kit.
+ 5. All clear
+ One continuous tone lasting approximately 30 seconds. The danger or attack is over. Continue to follow instructions from authorities.
+ Source: DSB (Norwegian Directorate for Civil Protection)
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index aa679b7..098a7f3 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -8,4 +8,9 @@
- @color/status_bar_bg
- @color/background
+
+
diff --git a/version.properties b/version.properties
index bb37353..9c5f127 100644
--- a/version.properties
+++ b/version.properties
@@ -1,4 +1,4 @@
versionMajor=1
-versionMinor=3
-versionPatch=1
-versionCode=5
+versionMinor=4
+versionPatch=0
+versionCode=6