{"format":1,"api":2,"id":"fr.arcanescookie.scriptorium.lang.android","version":"1.0.0","category":"languages","author":"Les Arcanes de Cookie","color":"#3ddc84","name":{"fr":"Android (Kotlin)","en":"Android (Kotlin)"},"description":{"fr":"Extraits Kotlin et Jetpack Compose (Composable, state, LazyColumn), Room, coroutines, Activity, Log, plus XML Android (manifest, layouts, ressources). Les fichiers .kts sont reconnus comme Kotlin.","en":"Kotlin and Jetpack Compose snippets (Composable, state, LazyColumn), Room, coroutines, Activity, Log, plus Android XML (manifest, layouts, resources). .kts files are recognized as Kotlin."},"contributes":{"fileTypes":[{"language":"kotlin","extensions":[".kts"],"filenames":[]}],"snippets":[{"language":"kotlin","items":[{"prefix":"main","label":"fun main","body":"fun main() {\n\t$0\n}"},{"prefix":"fun","label":"Fonction","body":"fun ${1:nom}(${2}): ${3:Unit} {\n\t$0\n}"},{"prefix":"dc","label":"data class","body":"data class ${1:Nom}(val ${2:id}: ${3:Int}, val ${4:nom}: ${5:String})"},{"prefix":"class","label":"Classe","body":"class ${1:Nom}(${2}) {\n\t$0\n}"},{"prefix":"sealed","label":"sealed class","body":"sealed class ${1:Etat} {\n\tobject ${2:Chargement} : ${1:Etat}()\n\tdata class ${3:Succes}(val ${4:valeur}: ${5:String}) : ${1:Etat}()\n}"},{"prefix":"when","label":"when","body":"when (${1:valeur}) {\n\t${2:1} -> $3\n\telse -> $0\n}"},{"prefix":"for","label":"for in","body":"for (${1:item} in ${2:liste}) {\n\t$0\n}"},{"prefix":"ifnull","label":"Valeur par défaut (?:)","body":"${1:valeur} ?: ${2:defaut}"},{"prefix":"apply","label":"apply","body":"${1:objet}.apply {\n\t$0\n}"},{"prefix":"log","label":"Log.d","body":"Log.d(\"${1:TAG}\", \"${2:message}\")"},{"prefix":"toast","label":"Toast","body":"Toast.makeText(${1:this}, \"${2:Message}\", Toast.LENGTH_SHORT).show()"},{"prefix":"launch","label":"Coroutine (lifecycleScope)","body":"lifecycleScope.launch {\n\t$0\n}"},{"prefix":"act","label":"Activity","body":"class ${1:Main}Activity : AppCompatActivity() {\n\toverride fun onCreate(savedInstanceState: Bundle?) {\n\t\tsuper.onCreate(savedInstanceState)\n\t\tsetContentView(R.layout.${2:activity_main})\n\t\t$0\n\t}\n}"},{"prefix":"intent","label":"Intent","body":"startActivity(Intent(this, ${1:Autre}Activity::class.java).apply {\n\tputExtra(\"${2:cle}\", ${3:valeur})\n})"},{"prefix":"vm","label":"ViewModel","body":"class ${1:Mon}ViewModel : ViewModel() {\n\tprivate val _etat = MutableStateFlow(${2:\"\"})\n\tval etat: StateFlow<String> = _etat\n\n\t$0\n}"},{"prefix":"compose","label":"@Composable","body":"@Composable\nfun ${1:Ecran}(modifier: Modifier = Modifier) {\n\t$0\n}"},{"prefix":"state","label":"État Compose","body":"var ${1:valeur} by remember { mutableStateOf(${2:\"\"}) }"},{"prefix":"lazycol","label":"LazyColumn","body":"LazyColumn {\n\titems(${1:liste}) { ${2:item} ->\n\t\t$0\n\t}\n}"},{"prefix":"col","label":"Column Compose","body":"Column(modifier = Modifier.padding(${1:16}.dp)) {\n\t$0\n}"},{"prefix":"btn","label":"Button Compose","body":"Button(onClick = { $1 }) {\n\tText(\"${2:OK}\")\n}"},{"prefix":"entity","label":"Entité Room","body":"@Entity(tableName = \"${1:table}\")\ndata class ${2:Nom}(\n\t@PrimaryKey(autoGenerate = true) val id: Long = 0,\n\tval ${3:nom}: String,\n)"},{"prefix":"dao","label":"DAO Room","body":"@Dao\ninterface ${1:Nom}Dao {\n\t@Query(\"SELECT * FROM ${2:table}\")\n\tfun tous(): Flow<List<${1:Nom}>>\n\n\t@Insert\n\tsuspend fun ajouter(element: ${1:Nom})\n}"}]},{"language":"xml","items":[{"prefix":"perm","label":"Permission du manifest","body":"<uses-permission android:name=\"android.permission.${1:CAMERA}\" />"},{"prefix":"activity","label":"Activity du manifest","body":"<activity\n\tandroid:name=\".${1:Main}Activity\"\n\tandroid:exported=\"${2:false}\" />"},{"prefix":"linear","label":"LinearLayout","body":"<LinearLayout\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:orientation=\"${1:vertical}\">\n\t$0\n</LinearLayout>"},{"prefix":"constraint","label":"ConstraintLayout","body":"<androidx.constraintlayout.widget.ConstraintLayout\n\txmlns:android=\"http://schemas.android.com/apk/res/android\"\n\txmlns:app=\"http://schemas.android.com/apk/res-auto\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\">\n\t$0\n</androidx.constraintlayout.widget.ConstraintLayout>"},{"prefix":"tv","label":"TextView","body":"<TextView\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:text=\"@string/${1:texte}\" />"},{"prefix":"button","label":"Button","body":"<Button\n\tandroid:id=\"@+id/${1:bouton}\"\n\tandroid:layout_width=\"wrap_content\"\n\tandroid:layout_height=\"wrap_content\"\n\tandroid:text=\"@string/${2:ok}\" />"},{"prefix":"rv","label":"RecyclerView","body":"<androidx.recyclerview.widget.RecyclerView\n\tandroid:id=\"@+id/${1:liste}\"\n\tandroid:layout_width=\"match_parent\"\n\tandroid:layout_height=\"match_parent\" />"},{"prefix":"string","label":"Ressource string","body":"<string name=\"${1:nom}\">${2:Texte}</string>"},{"prefix":"color","label":"Ressource color","body":"<color name=\"${1:nom}\">${2:#8B5CF6}</color>"}]}]}}