[ADD] ViewModel (fonctionne pas)

RepositoryAndroid
Renaud BEURET 1 year ago
parent 5abf2a8bbb
commit ba13a6477f

@ -3,7 +3,20 @@
<component name="deploymentTargetDropDown"> <component name="deploymentTargetDropDown">
<value> <value>
<entry key="app"> <entry key="app">
<State /> <State>
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="/local/avd/Pixel_7_Pro_API_34.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-03-21T10:47:15.864183783Z" />
</State>
</entry> </entry>
</value> </value>
</component> </component>

@ -4,18 +4,23 @@ import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
import fr.iut.sciencequest.model.buisness.fetchScientifiqueById import fr.iut.sciencequest.model.buisness.fetchScientifiqueById
import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.navigation.NavHost import fr.iut.sciencequest.navigation.NavHost
import fr.iut.sciencequest.stub.StubScientifique1
import fr.iut.sciencequest.ui.theme.ScienceQuestTheme import fr.iut.sciencequest.ui.theme.ScienceQuestTheme
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
fetchScientifiqueById(1) val vm = viewModels<ScientifiquesDecouvertsVM>().value
vm.addScientifiques(StubScientifique1.ToModel())
setContent { setContent {
ScienceQuestTheme { ScienceQuestTheme {
// A surface container using the 'background' color from the theme // A surface container using the 'background' color from the theme

@ -0,0 +1,24 @@
package fr.iut.sciencequest.ViewModels
import android.util.Log
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateListOf
import androidx.lifecycle.ViewModel
import fr.iut.sciencequest.model.metier.Scientifique
class ScientifiquesDecouvertsVM : ViewModel() {
private var listeScientifique: MutableList<Scientifique> = mutableStateListOf<Scientifique>()
fun getScientifiques(): MutableList<Scientifique> {
Log.d("ViewModel","""je get un scientifique, taille act : ${listeScientifique.size}""")
return listeScientifique
}
fun addScientifiques(scientifique: Scientifique) {
if (listeScientifique.add(scientifique)) {
Log.d("ViewModel","""j'ajoute un scientifique, taille act : ${listeScientifique.size}""")
} else {
Log.d("ViewModel","Erreur lors d'un ajout")
}
}
}

@ -1,6 +1,12 @@
package fr.iut.sciencequest.model.buisness package fr.iut.sciencequest.model.buisness
import android.util.Log import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelLazy
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
import fr.iut.sciencequest.model.dto.ScientifiqueDTO import fr.iut.sciencequest.model.dto.ScientifiqueDTO
import retrofit2.Call import retrofit2.Call
import retrofit2.Callback import retrofit2.Callback
@ -53,6 +59,7 @@ fun fetchScientifiquesById(index: Int, count: Int) {
// Pour le moment des print pour vérifier que la requêtre fonctionne // Pour le moment des print pour vérifier que la requêtre fonctionne
// sans avoir besoin des vues. // sans avoir besoin des vues.
for (scientifique in data) { for (scientifique in data) {
Log.d("Requete API",scientifique.id.toString()) Log.d("Requete API",scientifique.id.toString())
Log.d("Requete API", scientifique.nom) Log.d("Requete API", scientifique.nom)
} }

@ -7,6 +7,7 @@ import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
import fr.iut.sciencequest.model.dto.extensions.ToModel import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.stub.StubQuestionWithReponses import fr.iut.sciencequest.stub.StubQuestionWithReponses
import fr.iut.sciencequest.stub.getScientifiqueListeStub import fr.iut.sciencequest.stub.getScientifiqueListeStub
@ -28,7 +29,6 @@ fun NavHost() {
startDestination = "listeScientifiques" startDestination = "listeScientifiques"
) { ) {
composable(route = "home") { composable(route = "home") {
Log.d("tag", "dzadza")
HomeScreen( HomeScreen(
goToAccount = { goToAccount = {
navController.navigate("account") navController.navigate("account")
@ -94,8 +94,7 @@ fun NavHost() {
}, },
goToHome = { goToHome = {
navController.navigate("home") navController.navigate("home")
}, }
scientifiques = getScientifiqueListeStub().ToModel()
) )
} }
} }

@ -1,24 +1,28 @@
package fr.iut.sciencequest.view.scientifiques package fr.iut.sciencequest.view.scientifiques
import android.util.Log
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.viewmodel.compose.viewModel
import fr.iut.sciencequest.R import fr.iut.sciencequest.R
import fr.iut.sciencequest.ViewModels.ScientifiquesDecouvertsVM
import fr.iut.sciencequest.model.dto.extensions.ToModel import fr.iut.sciencequest.model.dto.extensions.ToModel
import fr.iut.sciencequest.model.metier.Scientifique import fr.iut.sciencequest.model.metier.Scientifique
import fr.iut.sciencequest.stub.getScientifiqueListeStub import fr.iut.sciencequest.stub.getScientifiqueListeStub
import fr.iut.sciencequest.view.TopBar import fr.iut.sciencequest.view.TopBar
@Composable @Composable
fun scientifiqueListeScreen(scientifiques: List<Scientifique> = getScientifiqueListeStub().ToModel(), fun scientifiqueListeScreen(viewModel: ScientifiquesDecouvertsVM = viewModel(),
goToAccount: () -> Unit, goToAccount: () -> Unit,
goToHome: () -> Unit) { goToHome: () -> Unit) {
Log.d("Vue","je suis la")
Scaffold( Scaffold(
topBar = { topBar = {
TopBar(goToAccount, goToHome, stringResource(id = R.string.connection)) TopBar(goToAccount, goToHome, stringResource(id = R.string.sc_decouverts))
}, },
) { innerPadding -> ) { innerPadding ->
scientifiqueListeContainer(scientifiques, innerPadding) scientifiqueListeContainer(viewModel.getScientifiques(), innerPadding)
} }
} }

@ -7,4 +7,5 @@
<string name="compte">Compte</string> <string name="compte">Compte</string>
<string name="pendu">Pendu</string> <string name="pendu">Pendu</string>
<string name="kahoot">Kahoot</string> <string name="kahoot">Kahoot</string>
<string name="sc_decouverts">Scientifiques Decouverts</string>
</resources> </resources>
Loading…
Cancel
Save