M app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt => app/src/main/java/com/github/nacabaro/vbhelper/components/CharacterEntry.kt +8 -23
@@ 1,24 1,19 @@
package com.github.nacabaro.vbhelper.components
import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Card
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.FilterQuality
import androidx.compose.ui.graphics.ImageBitmap
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
@Composable
fun CharacterEntry(
- name: ImageBitmap,
icon: ImageBitmap,
modifier: Modifier = Modifier,
onClick: () -> Unit = { }
@@ 28,25 23,15 @@ fun CharacterEntry(
onClick = onClick,
modifier = modifier
.padding(8.dp)
+ .size(96.dp)
) {
- Column(
- horizontalAlignment = Alignment.CenterHorizontally,
+ Image(
+ bitmap = icon,
+ contentDescription = "Icon",
+ filterQuality = FilterQuality.None,
modifier = Modifier
+ .padding(8.dp)
.fillMaxSize()
- ) {
- Image(
- bitmap = icon,
- contentDescription = "Icon",
- modifier = Modifier
- .padding(8.dp)
- .size(64.dp)
- )
- Image(
- bitmap = name,
- contentDescription = "Name",
- modifier = Modifier
- .padding(8.dp)
- )
- }
+ )
}
}=
\ No newline at end of file
M app/src/main/java/com/github/nacabaro/vbhelper/components/TopBanner.kt => app/src/main/java/com/github/nacabaro/vbhelper/components/TopBanner.kt +3 -0
@@ 1,10 1,12 @@
package com.github.nacabaro.vbhelper.components
+import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
@@ 24,6 26,7 @@ fun TopBanner(
) {
Box( // Use Box to overlay elements
modifier = modifier
+ .background(MaterialTheme.colorScheme.background)
.fillMaxWidth()
.padding(16.dp)
) {
M app/src/main/java/com/github/nacabaro/vbhelper/screens/DexScreen.kt => app/src/main/java/com/github/nacabaro/vbhelper/screens/DexScreen.kt +7 -10
@@ 1,7 1,6 @@
package com.github.nacabaro.vbhelper.screens
import android.graphics.Bitmap
-import android.util.Log
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
@@ 16,18 15,17 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.mutableStateListOf
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.FilterQuality
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.navigation.NavController
-import com.github.nacabaro.vbhelper.R
import com.github.nacabaro.vbhelper.components.TopBanner
import com.github.nacabaro.vbhelper.di.VBHelper
import com.github.nacabaro.vbhelper.domain.Dim
@@ 44,12 42,12 @@ fun DexScreen(
val application = LocalContext.current.applicationContext as VBHelper
val dexRepository = DexRepository(application.container.db)
- val dimList = remember { mutableStateListOf<Dim>() }
+ val dimList = remember { mutableStateOf<List<Dim>>(emptyList()) }
LaunchedEffect(dexRepository) {
coroutineScope.launch {
- dimList.clear()
- dimList.addAll(dexRepository.getAllDims())
+ val newDimList = dexRepository.getAllDims()
+ dimList.value = newDimList // Replace the entire list atomically
}
}
@@ 67,7 65,7 @@ fun DexScreen(
modifier = Modifier
.padding(top = contentPadding.calculateTopPadding())
) {
- items(dimList) {
+ items(dimList.value) {
val bitmap = remember (it.logo) {
Bitmap.createBitmap(it.logoWidth, it.logoHeight, Bitmap.Config.RGB_565).apply {
copyPixelsFromBuffer(ByteBuffer.wrap(it.logo))
@@ 75,8 73,6 @@ fun DexScreen(
}
val imageBitmap = remember(bitmap) { bitmap.asImageBitmap() }
- Log.d("DexScreen", "dimList: ${it.id}")
-
DexDiMEntry(
name = it.name,
logo = imageBitmap,
@@ 118,6 114,7 @@ fun DexDiMEntry(
Image (
bitmap = logo,
contentDescription = name,
+ filterQuality = FilterQuality.None,
modifier = Modifier
.padding(8.dp)
.size(64.dp)
M app/src/main/java/com/github/nacabaro/vbhelper/screens/DimScreen.kt => app/src/main/java/com/github/nacabaro/vbhelper/screens/DimScreen.kt +5 -17
@@ 1,25 1,22 @@
package com.github.nacabaro.vbhelper.screens
import android.graphics.Bitmap
-import android.util.Log
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.mutableStateListOf
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavController
import com.github.nacabaro.vbhelper.components.CharacterEntry
-import com.github.nacabaro.vbhelper.components.StorageEntry
import com.github.nacabaro.vbhelper.components.TopBanner
import com.github.nacabaro.vbhelper.domain.Character
import com.github.nacabaro.vbhelper.di.VBHelper
-import com.github.nacabaro.vbhelper.navigation.BottomNavItem
import com.github.nacabaro.vbhelper.source.DexRepository
import kotlinx.coroutines.launch
import java.nio.ByteBuffer
@@ 33,14 30,12 @@ fun DiMScreen(
val application = LocalContext.current.applicationContext as VBHelper
val dexRepository = DexRepository(application.container.db)
- val characterList = remember { mutableStateListOf<Character>() }
-
- Log.d("dimId", dimId.toString())
+ val characterList = remember { mutableStateOf<List<Character>>(emptyList()) }
LaunchedEffect(dexRepository) {
coroutineScope.launch {
- characterList.clear()
- characterList.addAll(dexRepository.getCharactersByDimId(dimId))
+ val newCharacterList = dexRepository.getCharactersByDimId(dimId)
+ characterList.value = newCharacterList
}
}
@@ 58,21 53,14 @@ fun DiMScreen(
columns = GridCells.Fixed(3),
contentPadding = contentPadding
) {
- items(characterList) { character ->
- val bitmapName = remember (character.name) {
- Bitmap.createBitmap(character.nameWidth, character.nameHeight, Bitmap.Config.RGB_565).apply {
- copyPixelsFromBuffer(ByteBuffer.wrap(character.name))
- }
- }
+ items(characterList.value) { character ->
val bitmapCharacter = remember (character.sprite1) {
Bitmap.createBitmap(character.spritesWidth, character.spritesHeight, Bitmap.Config.RGB_565).apply {
copyPixelsFromBuffer(ByteBuffer.wrap(character.sprite1))
}
}
- val imageBitmapName = remember(bitmapName) { bitmapName.asImageBitmap() }
val imageBitmapCharacter = remember(bitmapCharacter) { bitmapCharacter.asImageBitmap() }
CharacterEntry(
- name = imageBitmapName,
icon = imageBitmapCharacter,
onClick = { }
)