diff --git a/.idea/misc.xml b/.idea/misc.xml
index 21b4ba2..67135cd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,11 +3,13 @@
+
+
diff --git a/app/build.gradle b/app/build.gradle
index e6264f9..996e927 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -44,6 +44,7 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.cardview:cardview:1.0.0"
+ implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7e0fdf2..41a7fe6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,6 +26,11 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt
index f3cc663..5db931f 100644
--- a/app/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt
+++ b/app/src/main/java/im/angry/openeuicc/ui/ProfileDownloadFragment.kt
@@ -2,17 +2,17 @@ package im.angry.openeuicc.ui
import android.app.Dialog
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.view.Window
+import android.view.*
+import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.DialogFragment
+import com.journeyapps.barcodescanner.ScanContract
+import com.journeyapps.barcodescanner.ScanOptions
import im.angry.openeuicc.R
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.databinding.FragmentProfileDownloadBinding
import im.angry.openeuicc.util.setWidthPercent
-class ProfileDownloadFragment(val channel: EuiccChannel) : DialogFragment() {
+class ProfileDownloadFragment(val channel: EuiccChannel) : DialogFragment(), Toolbar.OnMenuItemClickListener {
companion object {
const val TAG = "ProfileDownloadFragment"
}
@@ -20,12 +20,22 @@ class ProfileDownloadFragment(val channel: EuiccChannel) : DialogFragment() {
private var _binding: FragmentProfileDownloadBinding? = null
private val binding get() = _binding!!
+ private val barcodeScannerLauncher = registerForActivityResult(ScanContract()) { result ->
+ result.contents?.let { content ->
+ val components = content.split("$")
+ if (components.size != 3 || components[0] != "LPA:1") return@registerForActivityResult
+ binding.profileDownloadServer.editText?.setText(components[1])
+ binding.profileDownloadCode.editText?.setText(components[2])
+ }
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentProfileDownloadBinding.inflate(inflater, container, false)
+ binding.toolbar.inflateMenu(R.menu.fragment_profile_download)
return binding.root
}
@@ -36,9 +46,22 @@ class ProfileDownloadFragment(val channel: EuiccChannel) : DialogFragment() {
setNavigationOnClickListener {
dismiss()
}
+ setOnMenuItemClickListener(this@ProfileDownloadFragment)
}
}
+ override fun onMenuItemClick(item: MenuItem): Boolean =
+ when (item.itemId) {
+ R.id.scan -> {
+ barcodeScannerLauncher.launch(ScanOptions().apply {
+ setDesiredBarcodeFormats(ScanOptions.QR_CODE)
+ setOrientationLocked(false)
+ })
+ true
+ }
+ else -> false
+ }
+
override fun onResume() {
super.onResume()
setWidthPercent(95)
diff --git a/app/src/main/res/drawable/ic_scan_black.xml b/app/src/main/res/drawable/ic_scan_black.xml
new file mode 100644
index 0000000..597e8d7
--- /dev/null
+++ b/app/src/main/res/drawable/ic_scan_black.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/menu/fragment_profile_download.xml b/app/src/main/res/menu/fragment_profile_download.xml
new file mode 100644
index 0000000..6f52963
--- /dev/null
+++ b/app/src/main/res/menu/fragment_profile_download.xml
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3d9e417..0c6c866 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -11,4 +11,5 @@
New eSIM
Server (RSP / SM-DP+)
Activation Code
+ Scan QR Code
\ No newline at end of file