Skip to content

Adjust edge to edge in BarcodeActivity for API 36 and landscape #5353

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import io.homeassistant.companion.android.barcode.BarcodeScannerActivity
import io.homeassistant.companion.android.settings.SettingsActivity
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme

Expand Down Expand Up @@ -69,6 +70,11 @@ private fun DevPlayGroundScreen(context: Context? = null) {
}) {
Text("Start Settings")
}
Button(modifier = Modifier.padding(top = 16.dp), onClick = {
context?.run { startActivity(BarcodeScannerActivity.newInstance(this, 0, "Title", "Subtitle", "Action")) }
}) {
Text("Start barcode")
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import androidx.activity.SystemBarStyle
import androidx.activity.addCallback
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
Expand All @@ -16,15 +15,14 @@ import androidx.appcompat.app.AlertDialog
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.toArgb
import androidx.core.view.WindowCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.zxing.BarcodeFormat
import dagger.hilt.android.AndroidEntryPoint
import io.homeassistant.companion.android.BaseActivity
import io.homeassistant.companion.android.barcode.view.BarcodeScannerView
import io.homeassistant.companion.android.barcode.view.barcodeScannerOverlayColor
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme
import java.util.Locale
Expand Down Expand Up @@ -65,8 +63,7 @@ class BarcodeScannerActivity : BaseActivity() {
private var requestSilently by mutableStateOf(true)

override fun onCreate(savedInstanceState: Bundle?) {
val overlaySystemBarStyle = SystemBarStyle.dark(barcodeScannerOverlayColor.toArgb())
enableEdgeToEdge(overlaySystemBarStyle, overlaySystemBarStyle)
enableEdgeToEdge()
super.onCreate(savedInstanceState)

val messageId = intent.getIntExtra(EXTRA_MESSAGE_ID, -1)
Expand All @@ -76,6 +73,9 @@ class BarcodeScannerActivity : BaseActivity() {
if (title == null || subtitle == null) finish() // Invalid state
val action = if (intent.hasExtra(EXTRA_ACTION)) intent.getStringExtra(EXTRA_ACTION) else null

// Enforce status bar to be always light so we can see it above the blur of the screen
WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = false

setContent {
HomeAssistantAppTheme {
BarcodeScannerView(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,4 @@ fun BarcodeScannerOverlay(
}
}

val barcodeScannerOverlayColor = Color(0xAA000000)
private val barcodeScannerOverlayColor = Color(0xAA000000)
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.homeassistant.companion.android.barcode.view

import android.annotation.SuppressLint
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
Expand All @@ -10,7 +11,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.ButtonDefaults
Expand Down Expand Up @@ -55,7 +55,9 @@ import io.homeassistant.companion.android.util.compose.darkColorBackground
import io.homeassistant.companion.android.util.compose.safeScreenHeight
import io.homeassistant.companion.android.util.compose.screenWidth
import io.homeassistant.companion.android.util.getActivity
import io.homeassistant.companion.android.util.safeTopWindowInsets

@SuppressLint("UnusedBoxWithConstraintsScope")
@Composable
fun BarcodeScannerView(
title: String,
Expand Down Expand Up @@ -112,7 +114,6 @@ fun BarcodeScannerView(

BoxWithConstraints(
modifier = Modifier
.safeDrawingPadding()
.fillMaxSize()
) {
val screenHeight = safeScreenHeight()
Expand Down Expand Up @@ -151,6 +152,7 @@ fun BarcodeScannerView(
}
},
backgroundColor = Color.Transparent,
windowInsets = safeTopWindowInsets(),
elevation = 0.dp
)
},
Expand Down