From fca34f893b422d1833a882f6c402784e933e08c7 Mon Sep 17 00:00:00 2001 From: Ole-Morten Duesund Date: Mon, 9 Mar 2026 09:32:55 +0100 Subject: [PATCH] Legg til sivilforsvarsinformasjon med offisielle DSB-retningslinjer (v1.4.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ny info-knapp (ℹ) i statuslinja opnar ein dialog med sivilforsvars- instruksjonar: viktig melding-signal, flyalarm, søk dekning, lytt til NRK P1 på DAB-radio, og faren over-signal. Alt innhald er verifisert mot offisielle DSB-retningslinjer og fungerer utan nett. Støttar alle tre språk (en, nb, nn). Fixes #4 Co-Authored-By: Claude Opus 4.6 --- .../java/no/naiv/tilfluktsrom/MainActivity.kt | 5 + .../tilfluktsrom/ui/CivilDefenseInfoDialog.kt | 44 +++++++ app/src/main/res/drawable/ic_info.xml | 11 ++ app/src/main/res/layout/activity_main.xml | 9 ++ .../main/res/layout/dialog_civil_defense.xml | 118 ++++++++++++++++++ app/src/main/res/values-nb/strings.xml | 15 +++ app/src/main/res/values-nn/strings.xml | 15 +++ app/src/main/res/values/strings.xml | 15 +++ app/src/main/res/values/themes.xml | 5 + version.properties | 6 +- 10 files changed, 240 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/no/naiv/tilfluktsrom/ui/CivilDefenseInfoDialog.kt create mode 100644 app/src/main/res/drawable/ic_info.xml create mode 100644 app/src/main/res/layout/dialog_civil_defense.xml 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