66 lines
1.9 KiB
Kotlin
66 lines
1.9 KiB
Kotlin
package com.hyperling.expensetracker
|
|
|
|
import com.hyperling.expensetracker.ui.theme.ExpenseTrackerTheme
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.compose.setContent
|
|
import androidx.activity.enableEdgeToEdge
|
|
import androidx.activity.viewModels
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.material3.Scaffold
|
|
import androidx.compose.material3.Surface
|
|
import androidx.compose.material3.Text
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.tooling.preview.Preview
|
|
import androidx.lifecycle.ViewModel
|
|
import androidx.lifecycle.ViewModelProvider
|
|
import androidx.room.Room
|
|
import androidx.compose.material3.Surface
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
|
|
private val _db by lazy {
|
|
Room.databaseBuilder(
|
|
applicationContext,
|
|
ExpenseDatabase::class.java,
|
|
"expenses.db"
|
|
).build()
|
|
}
|
|
private val _viewModel by viewModels<ExpenseViewModel> (
|
|
factoryProducer = {
|
|
object : ViewModelProvider.Factory {
|
|
override fun <T : ViewModel> create(modelClass: Class<T>): T {
|
|
return ExpenseViewModel(_db.dao) as T
|
|
}
|
|
}
|
|
}
|
|
)
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
enableEdgeToEdge()
|
|
setContent {
|
|
ExpenseTrackerTheme {
|
|
val state by _viewModel.state.collectAsState()
|
|
ExpenseScreen(
|
|
state = state,
|
|
onEvent = _viewModel::onEvent
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
@Preview(showBackground = true)
|
|
@Composable
|
|
fun MainPreview() {
|
|
ExpenseTrackerTheme {
|
|
Main()
|
|
}
|
|
}
|
|
*/ |