diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 913d49d..8096d6c 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -5,6 +5,9 @@
+
+
+
\ No newline at end of file
diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts
index 5af1799..d74fcec 100644
--- a/app-common/build.gradle.kts
+++ b/app-common/build.gradle.kts
@@ -5,7 +5,7 @@ plugins {
android {
namespace = "im.angry.openeuicc.common"
- compileSdk = 34
+ compileSdk = 35
defaultConfig {
minSdk = 28
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt
index 2b36468..558e69a 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt
@@ -7,6 +7,7 @@ import android.view.MenuItem
import android.view.View
import android.widget.ScrollView
import android.widget.TextView
+import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
@@ -37,9 +38,11 @@ class LogsActivity : AppCompatActivity() {
}
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_logs)
setSupportActionBar(requireViewById(R.id.toolbar))
+ setupToolbarInsets()
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
swipeRefresh = requireViewById(R.id.swipe_refresh)
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
index 0f504eb..183bbbd 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/MainActivity.kt
@@ -13,6 +13,7 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.ProgressBar
+import androidx.activity.enableEdgeToEdge
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
@@ -64,9 +65,11 @@ open class MainActivity : BaseEuiccAccessActivity(), OpenEuiccContextMarker {
@SuppressLint("WrongConstant", "UnspecifiedRegisterReceiverFlag")
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(requireViewById(R.id.toolbar))
+ setupToolbarInsets()
loadingProgress = requireViewById(R.id.loading)
tabs = requireViewById(R.id.main_tabs)
viewPager = requireViewById(R.id.view_pager)
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
index 59abbc5..dd14d8e 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/NotificationsActivity.kt
@@ -11,6 +11,7 @@ import android.view.MenuItem.OnMenuItemClickListener
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
+import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AlertDialog
import androidx.core.view.forEach
import androidx.lifecycle.lifecycleScope
@@ -35,9 +36,11 @@ class NotificationsActivity: BaseEuiccAccessActivity(), OpenEuiccContextMarker {
private lateinit var euiccChannel: EuiccChannel
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_notifications)
setSupportActionBar(requireViewById(R.id.toolbar))
+ setupToolbarInsets()
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
}
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsActivity.kt
index 426c546..52e3272 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsActivity.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsActivity.kt
@@ -2,14 +2,18 @@ package im.angry.openeuicc.ui
import android.os.Bundle
import android.view.MenuItem
+import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import im.angry.openeuicc.common.R
+import im.angry.openeuicc.util.*
class SettingsActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
setSupportActionBar(requireViewById(R.id.toolbar))
+ setupToolbarInsets()
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
supportFragmentManager.beginTransaction()
.replace(R.id.settings_container, SettingsFragment())
diff --git a/app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt b/app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt
index 24c1ad8..6aa62c2 100644
--- a/app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt
@@ -2,8 +2,16 @@ package im.angry.openeuicc.util
import android.content.res.Resources
import android.graphics.Rect
+import android.view.View
import android.view.ViewGroup
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.widget.Toolbar
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updateLayoutParams
+import androidx.core.view.updatePadding
import androidx.fragment.app.DialogFragment
+import im.angry.openeuicc.common.R
// Source:
/**
@@ -26,3 +34,25 @@ fun DialogFragment.setWidthPercent(percentage: Int) {
fun DialogFragment.setFullScreen() {
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
+
+fun AppCompatActivity.setupToolbarInsets() {
+ val spacer = requireViewById(R.id.toolbar_spacer)
+ ViewCompat.setOnApplyWindowInsetsListener(requireViewById(R.id.toolbar)) { v, insets ->
+ val bars = insets.getInsets(
+ WindowInsetsCompat.Type.systemBars()
+ or WindowInsetsCompat.Type.displayCutout()
+ )
+
+ v.updateLayoutParams {
+ topMargin = bars.top
+ }
+ v.updatePadding(bars.left, v.paddingTop, bars.right, v.paddingBottom)
+
+ spacer.updateLayoutParams {
+ height = v.top
+ }
+
+ android.util.Log.d("aaa", "${(v as Toolbar).minimumHeight}")
+ WindowInsetsCompat.CONSUMED
+ }
+}
diff --git a/app-common/src/main/res/layout/activity_logs.xml b/app-common/src/main/res/layout/activity_logs.xml
index c305d0a..8210d07 100644
--- a/app-common/src/main/res/layout/activity_logs.xml
+++ b/app-common/src/main/res/layout/activity_logs.xml
@@ -5,6 +5,15 @@
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
+
+
+
+
+
+
+
+
+
+
+ val bars = insets.getInsets(
+ WindowInsetsCompat.Type.systemBars()
+ or WindowInsetsCompat.Type.displayCutout()
+ )
+ v.updatePadding(bars.left, bars.top, bars.right, bars.bottom)
+ WindowInsetsCompat.CONSUMED
+ }
+
requireViewById(R.id.lui_skip).setOnClickListener { finish() }
// TODO: Deactivate LuiActivity if there is no eSIM found.
// TODO: Support pre-filled download info (from carrier apps); UX
diff --git a/app/src/main/res/layout/activity_lui.xml b/app/src/main/res/layout/activity_lui.xml
index ff4a302..b331156 100644
--- a/app/src/main/res/layout/activity_lui.xml
+++ b/app/src/main/res/layout/activity_lui.xml
@@ -2,6 +2,7 @@
diff --git a/libs/lpac-jni/build.gradle.kts b/libs/lpac-jni/build.gradle.kts
index 7f45177..ff34d56 100644
--- a/libs/lpac-jni/build.gradle.kts
+++ b/libs/lpac-jni/build.gradle.kts
@@ -5,7 +5,7 @@ plugins {
android {
namespace = "net.typeblog.lpac_jni"
- compileSdk = 34
+ compileSdk = 35
ndkVersion = "26.1.10909125"
defaultConfig {