From 44a522dbc8d9f5eb1c00a3403f1eec093cc46083 Mon Sep 17 00:00:00 2001 From: Han Yin Date: Fri, 11 Apr 2025 10:21:44 -0700 Subject: [PATCH] UI: move existing UI src files into `legacy` package --- .../app/src/main/AndroidManifest.xml | 2 +- .../llama/{ => legacy}/Downloadable.kt | 4 +-- .../LegacyActivity.kt} | 32 ++++++++++++------- .../LegacyViewModel.kt} | 8 +++-- .../llama/{ui => legacy}/theme/Color.kt | 2 +- .../llama/{ui => legacy}/theme/Theme.kt | 2 +- .../llama/{ui => legacy}/theme/Type.kt | 2 +- 7 files changed, 31 insertions(+), 21 deletions(-) rename examples/llama.android/app/src/main/java/com/example/llama/{ => legacy}/Downloadable.kt (97%) rename examples/llama.android/app/src/main/java/com/example/llama/{MainActivity.kt => legacy/LegacyActivity.kt} (85%) rename examples/llama.android/app/src/main/java/com/example/llama/{MainViewModel.kt => legacy/LegacyViewModel.kt} (93%) rename examples/llama.android/app/src/main/java/com/example/llama/{ui => legacy}/theme/Color.kt (86%) rename examples/llama.android/app/src/main/java/com/example/llama/{ui => legacy}/theme/Theme.kt (98%) rename examples/llama.android/app/src/main/java/com/example/llama/{ui => legacy}/theme/Type.kt (96%) diff --git a/examples/llama.android/app/src/main/AndroidManifest.xml b/examples/llama.android/app/src/main/AndroidManifest.xml index 41a358a299..ffbd88a081 100644 --- a/examples/llama.android/app/src/main/AndroidManifest.xml +++ b/examples/llama.android/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ > diff --git a/examples/llama.android/app/src/main/java/com/example/llama/Downloadable.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/Downloadable.kt similarity index 97% rename from examples/llama.android/app/src/main/java/com/example/llama/Downloadable.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/Downloadable.kt index 78c231ae55..e616132fbb 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/Downloadable.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/Downloadable.kt @@ -1,4 +1,4 @@ -package com.example.llama +package com.example.llama.legacy import android.app.DownloadManager import android.net.Uri @@ -31,7 +31,7 @@ data class Downloadable(val name: String, val source: Uri, val destination: File @JvmStatic @Composable - fun Button(viewModel: MainViewModel, dm: DownloadManager, item: Downloadable) { + fun Button(viewModel: LegacyViewModel, dm: DownloadManager, item: Downloadable) { var status: State by remember { mutableStateOf( if (item.destination.exists()) Downloaded(item) diff --git a/examples/llama.android/app/src/main/java/com/example/llama/MainActivity.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyActivity.kt similarity index 85% rename from examples/llama.android/app/src/main/java/com/example/llama/MainActivity.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyActivity.kt index 9da04f7d3c..43b7a0ba0d 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/MainActivity.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyActivity.kt @@ -1,4 +1,4 @@ -package com.example.llama +package com.example.llama.legacy import android.app.ActivityManager import android.app.DownloadManager @@ -30,21 +30,23 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.core.content.getSystemService -import com.example.llama.ui.theme.LlamaAndroidTheme +import com.example.llama.legacy.theme.LlamaAndroidTheme import java.io.File -class MainActivity( +class LegacyActivity( activityManager: ActivityManager? = null, downloadManager: DownloadManager? = null, clipboardManager: ClipboardManager? = null, -): ComponentActivity() { - private val tag: String? = this::class.simpleName +) : ComponentActivity() { + private val TAG: String? = this::class.simpleName private val activityManager by lazy { activityManager ?: getSystemService()!! } private val downloadManager by lazy { downloadManager ?: getSystemService()!! } - private val clipboardManager by lazy { clipboardManager ?: getSystemService()!! } + private val clipboardManager by lazy { + clipboardManager ?: getSystemService()!! + } - private val viewModel: MainViewModel by viewModels() + private val viewModel: LegacyViewModel by viewModels() // Get a MemoryInfo object for the device's current memory status. private fun availableMemory(): ActivityManager.MemoryInfo { @@ -86,6 +88,11 @@ class MainActivity( Uri.parse("https://huggingface.co/TheBloke/phi-2-dpo-GGUF/resolve/main/phi-2-dpo.Q3_K_M.gguf?download=true"), File(extFilesDir, "phi-2-dpo.Q3_K_M.gguf") ), + Downloadable( + "Phi 4 mini instruct (Q4_0, 2.33 GiB)", + Uri.parse("https://huggingface.co/bartowski/microsoft_Phi-4-mini-instruct-GGUF/resolve/main/microsoft_Phi-4-mini-instruct-Q4_0.gguf?download=true"), + File(extFilesDir, "microsoft_Phi-4-mini-instruct-Q4_0.gguf") + ), ) setContent { @@ -110,7 +117,7 @@ class MainActivity( @Composable fun MainCompose( - viewModel: MainViewModel, + viewModel: LegacyViewModel, clipboard: ClipboardManager, dm: DownloadManager, models: List @@ -129,11 +136,13 @@ fun MainCompose( } } } + OutlinedTextField( value = viewModel.message, onValueChange = { viewModel.updateMessage(it) }, label = { Text("Message") }, ) + Row { Button({ viewModel.send() }) { Text("Send") } Button({ viewModel.bench(8, 4, 1) }) { Text("Bench") } @@ -143,12 +152,11 @@ fun MainCompose( clipboard.setPrimaryClip(ClipData.newPlainText("", it)) } }) { Text("Copy") } + Button({ viewModel.unload() }) { Text("Unload") } } - Column { - for (model in models) { - Downloadable.Button(viewModel, dm, model) - } + models.forEach { + Downloadable.Button(viewModel, dm, it) } } } diff --git a/examples/llama.android/app/src/main/java/com/example/llama/MainViewModel.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyViewModel.kt similarity index 93% rename from examples/llama.android/app/src/main/java/com/example/llama/MainViewModel.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyViewModel.kt index bdee38c7b5..82562f29ca 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/MainViewModel.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/LegacyViewModel.kt @@ -1,4 +1,4 @@ -package com.example.llama +package com.example.llama.legacy import android.llama.cpp.LLamaAndroid import android.util.Log @@ -10,7 +10,9 @@ import androidx.lifecycle.viewModelScope import kotlinx.coroutines.flow.catch import kotlinx.coroutines.launch -class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instance()): ViewModel() { +class LegacyViewModel( + private val llamaAndroid: LLamaAndroid = LLamaAndroid.instance() +): ViewModel() { companion object { @JvmStatic private val NanosPerSecond = 1_000_000_000.0 @@ -46,7 +48,7 @@ class MainViewModel(private val llamaAndroid: LLamaAndroid = LLamaAndroid.instan viewModelScope.launch { // TODO-hyin: implement format message - llamaAndroid.sendUserPrompt(message = actualText) + llamaAndroid.sendUserPrompt(message = text) .catch { Log.e(tag, "send() failed", it) messages += it.message!! diff --git a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Color.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Color.kt similarity index 86% rename from examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Color.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Color.kt index 40c30e8d97..3abee381aa 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Color.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Color.kt @@ -1,4 +1,4 @@ -package com.example.llama.ui.theme +package com.example.llama.legacy.theme import androidx.compose.ui.graphics.Color diff --git a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Theme.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Theme.kt similarity index 98% rename from examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Theme.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Theme.kt index e742220a8d..5d9800ff6c 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Theme.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.example.llama.ui.theme +package com.example.llama.legacy.theme import android.app.Activity import android.os.Build diff --git a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Type.kt b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Type.kt similarity index 96% rename from examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Type.kt rename to examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Type.kt index 0b87946ca3..460569f5fc 100644 --- a/examples/llama.android/app/src/main/java/com/example/llama/ui/theme/Type.kt +++ b/examples/llama.android/app/src/main/java/com/example/llama/legacy/theme/Type.kt @@ -1,4 +1,4 @@ -package com.example.llama.ui.theme +package com.example.llama.legacy.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle