Browse Source

feat: load lpa string from clipboard

septs 1 year ago
parent
commit
0fbda7dd78

+ 10 - 0
app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardMethodSelectFragment.kt

@@ -1,6 +1,7 @@
 package im.angry.openeuicc.ui.wizard
 package im.angry.openeuicc.ui.wizard
 
 
 import android.app.AlertDialog
 import android.app.AlertDialog
+import android.content.ClipboardManager
 import android.graphics.BitmapFactory
 import android.graphics.BitmapFactory
 import android.os.Bundle
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.LayoutInflater
@@ -68,6 +69,9 @@ class DownloadWizardMethodSelectFragment : DownloadWizardActivity.DownloadWizard
         DownloadMethod(R.drawable.ic_gallery_black, R.string.download_wizard_method_gallery) {
         DownloadMethod(R.drawable.ic_gallery_black, R.string.download_wizard_method_gallery) {
             gallerySelectorLauncher.launch("image/*")
             gallerySelectorLauncher.launch("image/*")
         },
         },
+        DownloadMethod(R.drawable.ic_scan_black, R.string.download_wizard_method_clipboard) {
+            handleLoadFromClipboard()
+        },
         DownloadMethod(R.drawable.ic_edit, R.string.download_wizard_method_manual) {
         DownloadMethod(R.drawable.ic_edit, R.string.download_wizard_method_manual) {
             gotoNextFragment(DownloadWizardDetailsFragment())
             gotoNextFragment(DownloadWizardDetailsFragment())
         }
         }
@@ -103,6 +107,12 @@ class DownloadWizardMethodSelectFragment : DownloadWizardActivity.DownloadWizard
         return view
         return view
     }
     }
 
 
+    private fun handleLoadFromClipboard() {
+        val clipboard = requireContext().getSystemService(ClipboardManager::class.java)
+        val text = clipboard.primaryClip?.getItemAt(0)?.text ?: return
+        processLpaString(text.toString())
+    }
+
     private fun processLpaString(s: String) {
     private fun processLpaString(s: String) {
         val components = s.split("$")
         val components = s.split("$")
         if (components.size < 3 || components[0] != "LPA:1") {
         if (components.size < 3 || components[0] != "LPA:1") {

+ 1 - 0
app-common/src/main/res/values/strings.xml

@@ -72,6 +72,7 @@
     <string name="download_wizard_method_select">How would you like to download the eSIM profile?</string>
     <string name="download_wizard_method_select">How would you like to download the eSIM profile?</string>
     <string name="download_wizard_method_qr_code">Scan a QR code with camera</string>
     <string name="download_wizard_method_qr_code">Scan a QR code with camera</string>
     <string name="download_wizard_method_gallery">Load a QR code from gallery</string>
     <string name="download_wizard_method_gallery">Load a QR code from gallery</string>
+    <string name="download_wizard_method_clipboard">Load from Clipboard</string>
     <string name="download_wizard_method_manual">Enter manually</string>
     <string name="download_wizard_method_manual">Enter manually</string>
     <string name="download_wizard_details">Input or confirm details for downloading your eSIM:</string>
     <string name="download_wizard_details">Input or confirm details for downloading your eSIM:</string>
     <string name="download_wizard_progress">Downloading your eSIM…</string>
     <string name="download_wizard_progress">Downloading your eSIM…</string>