QR code Full Screen added
This commit is contained in:
8
.idea/deploymentTargetSelector.xml
generated
8
.idea/deploymentTargetSelector.xml
generated
@@ -4,6 +4,14 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2024-10-18T08:33:17.054668Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/Users/chandrashekharreddy/.android/avd/Pixel_5_API_33.avd" />
|
||||
</handle>
|
||||
</Target>
|
||||
</DropdownSelection>
|
||||
<DialogSelection />
|
||||
</SelectionState>
|
||||
</selectionStates>
|
||||
</component>
|
||||
|
||||
11
.idea/other.xml
generated
11
.idea/other.xml
generated
@@ -256,6 +256,17 @@
|
||||
<option name="screenX" value="1812" />
|
||||
<option name="screenY" value="2176" />
|
||||
</PersistentDeviceSelectionData>
|
||||
<PersistentDeviceSelectionData>
|
||||
<option name="api" value="34" />
|
||||
<option name="brand" value="samsung" />
|
||||
<option name="codename" value="q6q" />
|
||||
<option name="id" value="q6q" />
|
||||
<option name="manufacturer" value="Samsung" />
|
||||
<option name="name" value="SM-F956B" />
|
||||
<option name="screenDensity" value="420" />
|
||||
<option name="screenX" value="1856" />
|
||||
<option name="screenY" value="2160" />
|
||||
</PersistentDeviceSelectionData>
|
||||
<PersistentDeviceSelectionData>
|
||||
<option name="api" value="30" />
|
||||
<option name="brand" value="google" />
|
||||
|
||||
@@ -5,13 +5,6 @@ import android.view.WindowManager
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import `in`.sminnovations.smi_attendance_admin.ui.theme.SMIAdminAttendanceTheme
|
||||
|
||||
|
||||
@@ -4,8 +4,10 @@ import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import `in`.sminnovations.smi_attendance_admin.navigation.BottomNavigationBar
|
||||
import `in`.sminnovations.smi_attendance_admin.navigation.Navigation
|
||||
@@ -20,13 +22,18 @@ fun MainScreen(
|
||||
|
||||
Scaffold(
|
||||
bottomBar = {
|
||||
BottomNavigationBar(navController, navItems)
|
||||
val navBackStackEntry by navController.currentBackStackEntryAsState()
|
||||
val currentRoute = navBackStackEntry?.destination?.route
|
||||
|
||||
// Show BottomNavigationBar only on certain screens
|
||||
if (currentRoute != "FullScreenQRCode") {
|
||||
BottomNavigationBar(navController, navItems)
|
||||
}
|
||||
},
|
||||
content = { padding ->
|
||||
Box(modifier = Modifier.padding(padding)) {
|
||||
Navigation(navController = navController, navItems,mainNavHostController =mainNavHostController)
|
||||
Navigation(navController = navController, navItems, mainNavHostController = mainNavHostController)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import androidx.navigation.compose.composable
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.home.ui.HomeScreen
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.settings.SettingsScreen
|
||||
import `in`.sminnovations.smi_attendance_admin.navigation.data.BottomNavItem
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.home.ui.FullScreenQRCodeScreen
|
||||
|
||||
|
||||
@Composable
|
||||
@@ -18,11 +19,14 @@ fun Navigation(
|
||||
) {
|
||||
NavHost(navController, startDestination = items[0].route) {
|
||||
composable(items[0].route) {
|
||||
HomeScreen()
|
||||
HomeScreen(navController)
|
||||
}
|
||||
composable(items[1].route) {
|
||||
SettingsScreen(mainNavHostController = mainNavHostController)
|
||||
}
|
||||
composable("FullScreenQRCode") {
|
||||
FullScreenQRCodeScreen(navController)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package `in`.sminnovations.smi_attendance_admin.screens.home.ui
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.asImageBitmap
|
||||
import androidx.navigation.NavController
|
||||
|
||||
@Composable
|
||||
fun FullScreenQRCodeScreen(navController: NavController) {
|
||||
var qrCodeBitmap by remember { mutableStateOf<Bitmap?>(null) }
|
||||
|
||||
// Simulate QR code being passed or generated here
|
||||
qrCodeBitmap = generateQRCode("SMI")
|
||||
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.background(color = MaterialTheme.colorScheme.onBackground)
|
||||
.clickable {
|
||||
// Navigate back when clicked
|
||||
//navController.popBackStack()
|
||||
}
|
||||
) {
|
||||
qrCodeBitmap?.let { bitmap ->
|
||||
Image(
|
||||
bitmap = bitmap.asImageBitmap(),
|
||||
contentDescription = "Full Screen QR Code",
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.clickable {
|
||||
// Navigate back when clicked
|
||||
//navController.popBackStack()
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import android.graphics.Canvas
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -15,10 +14,8 @@ import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
@@ -26,24 +23,19 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.RectangleShape
|
||||
import androidx.compose.ui.graphics.asImageBitmap
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.NavController
|
||||
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
||||
import com.google.accompanist.permissions.isGranted
|
||||
import com.google.accompanist.permissions.rememberPermissionState
|
||||
import com.google.zxing.BarcodeFormat
|
||||
import com.journeyapps.barcodescanner.BarcodeEncoder
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.home.viewModel.HomeViewModel
|
||||
|
||||
|
||||
@OptIn(ExperimentalPermissionsApi::class)
|
||||
@Composable
|
||||
fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
|
||||
val isScanning by viewModel.isScanning.collectAsState()
|
||||
val qrCodeValue by viewModel.qrCodeValue.collectAsState()
|
||||
fun HomeScreen(navController: NavController) {
|
||||
|
||||
val cameraPermissionState = rememberPermissionState(Manifest.permission.CAMERA)
|
||||
val locationPermissionState = rememberPermissionState(Manifest.permission.ACCESS_FINE_LOCATION)
|
||||
@@ -56,14 +48,13 @@ fun HomeScreen(viewModel: HomeViewModel = viewModel()) {
|
||||
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
|
||||
QRCodeGeneratorScreen()
|
||||
QRCodeGeneratorScreen(navController = navController)
|
||||
}
|
||||
}
|
||||
@Composable
|
||||
fun QRCodeGeneratorScreen() {
|
||||
fun QRCodeGeneratorScreen(navController: NavController) {
|
||||
var qrCodeBitmap by remember { mutableStateOf<Bitmap?>(null) }
|
||||
var isButtonVisible by remember { mutableStateOf(true) }
|
||||
var isFullScreen by remember { mutableStateOf(false) }
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
@@ -76,7 +67,7 @@ fun QRCodeGeneratorScreen() {
|
||||
if (isButtonVisible) {
|
||||
Button(
|
||||
onClick = {
|
||||
val qrData = ""
|
||||
val qrData = "SMI"
|
||||
qrCodeBitmap = generateQRCode(qrData)
|
||||
isButtonVisible = false // Hide the button once QR is generated
|
||||
},
|
||||
@@ -95,35 +86,11 @@ fun QRCodeGeneratorScreen() {
|
||||
.size(250.dp)
|
||||
.padding(16.dp)
|
||||
.clickable {
|
||||
isFullScreen = true // Open full-screen mode on click
|
||||
navController.navigate("FullScreenQRCode")
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// Full-Screen Dialog for QR Code
|
||||
if (isFullScreen) {
|
||||
Dialog(onDismissRequest = { isFullScreen = false }) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.background(color = MaterialTheme.colorScheme.onBackground, shape = RectangleShape)
|
||||
.fillMaxSize()
|
||||
.clickable { isFullScreen = false } // Close full screen when clicked
|
||||
) {
|
||||
qrCodeBitmap?.let { bitmap ->
|
||||
Image(
|
||||
bitmap = bitmap.asImageBitmap(),
|
||||
contentDescription = "Full Screen QR Code",
|
||||
modifier = Modifier
|
||||
.fillMaxSize() // Make the image fill the entire screen
|
||||
.clickable {
|
||||
isFullScreen = false // Close full-screen mode on click
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Function to generate QR Code bitmap with black background and white QR code
|
||||
|
||||
@@ -51,7 +51,7 @@ fun TopComponents(
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
Text(
|
||||
text = "Sathwik C S",
|
||||
text = "Account Name",
|
||||
style = MaterialTheme.typography.titleMedium,
|
||||
fontWeight = FontWeight.Bold,
|
||||
fontSize = 20.sp,
|
||||
@@ -70,7 +70,7 @@ fun TopComponents(
|
||||
Spacer(modifier = Modifier.height(4.dp))
|
||||
|
||||
Text(
|
||||
text = "Android Developer",
|
||||
text = "Designation",
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
fontSize = 16.sp
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.content.Context
|
||||
import android.widget.Toast
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Button
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.OutlinedCard
|
||||
import androidx.compose.material3.Text
|
||||
@@ -25,7 +24,6 @@ import `in`.sminnovations.smi_attendance_admin.R
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.settings.data.SettingsData
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.settings.components.settingsComponents.ClickableCard
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.settings.components.settingsComponents.CombinedClickableCard
|
||||
import `in`.sminnovations.smi_attendance_admin.screens.settings.viewModel.SettingsViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
@@ -56,9 +54,10 @@ fun AboutSettings(context: Context,)
|
||||
OutlinedCard{
|
||||
ClickableCard(
|
||||
title = "Version",
|
||||
subtitle = "1.0.04",
|
||||
subtitle = context.packageManager
|
||||
.getPackageInfo(context.packageName, 0).versionName,
|
||||
onClick = {
|
||||
clickCount++
|
||||
// clickCount++
|
||||
},
|
||||
icon = ImageVector.vectorResource(id = R.drawable.round_info_24)
|
||||
|
||||
Reference in New Issue
Block a user