recipe-kt/app/src/main/java/xyz/pixelatedw/recipe/MainActivity.kt

74 lines
1.9 KiB
Kotlin
Raw Normal View History

2025-08-07 10:28:56 +03:00
package xyz.pixelatedw.recipe
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
2025-08-07 10:28:56 +03:00
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import androidx.room.Room
2026-02-22 00:47:44 +02:00
import xyz.pixelatedw.recipe.ui.theme.RecipeTheme
import xyz.pixelatedw.recipe.data.AppDatabase
2025-08-08 23:21:33 +03:00
import xyz.pixelatedw.recipe.data.RecipesView
import xyz.pixelatedw.recipe.ui.components.MainScreen
import xyz.pixelatedw.recipe.utils.parseRecipes
2025-08-07 10:28:56 +03:00
class MainActivity : ComponentActivity() {
2026-02-22 00:47:44 +02:00
val recipeView: RecipesView by viewModels()
lateinit var db: AppDatabase
var importFinished: Boolean = false
var importError: String = ""
2025-08-07 10:28:56 +03:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
db = Room.databaseBuilder(
this,
AppDatabase::class.java, "recipes"
).allowMainThreadQueries().build()
val recipes = db.recipeWithTagsDao().getAll()
recipeView.setRecipes(recipes)
2025-08-07 10:28:56 +03:00
2025-08-08 23:21:33 +03:00
enableEdgeToEdge()
2025-08-08 23:21:33 +03:00
setContent {
RecipeTheme {
2025-08-07 10:28:56 +03:00
Surface {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
MainScreen(this, innerPadding, recipeView)
2025-08-07 10:28:56 +03:00
}
}
}
}
2025-08-07 10:28:56 +03:00
}
val sourceChooser =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == RESULT_OK) {
result.data?.data?.let { uri ->
2026-02-22 00:47:44 +02:00
parseRecipes(this, uri)
}
}
else {
importError = "Import cancelled"
}
importFinished = true
}
fun getAppVersion(): String {
val info = this.packageManager.getPackageInfo(packageName, 0)
return if (info.versionName == null) {
"Unknown"
} else {
"v${info.versionName}"
}
}
2025-08-07 10:28:56 +03:00
}