diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d10ba7dd..6959861d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -242,5 +242,9 @@
android:name=".activities.PolycentricModerationActivity"
android:exported="false"
android:screenOrientation="portrait" />
+
diff --git a/app/src/main/java/com/futo/platformplayer/activities/PolycentricBackupActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/PolycentricBackupActivity.kt
index b2375287..d10bf731 100644
--- a/app/src/main/java/com/futo/platformplayer/activities/PolycentricBackupActivity.kt
+++ b/app/src/main/java/com/futo/platformplayer/activities/PolycentricBackupActivity.kt
@@ -22,6 +22,7 @@ import com.futo.platformplayer.states.StateApp
import com.futo.platformplayer.states.StateApp.Companion.withContext
import com.futo.platformplayer.states.StatePolycentric
import com.futo.platformplayer.views.buttons.BigButton
+import com.futo.platformplayer.activities.QRCodeFullscreenActivity
import com.futo.polycentric.core.ContentType
import com.futo.polycentric.core.SignedEvent
import com.futo.polycentric.core.StorageTypeCRDTItem
@@ -49,6 +50,7 @@ class PolycentricBackupActivity : AppCompatActivity() {
private lateinit var _imageQR: ImageView;
private lateinit var _exportBundle: String;
private lateinit var _textQR: TextView;
+ private lateinit var _textQRHint: TextView;
private lateinit var _loader: View
override fun attachBaseContext(newBase: Context?) {
@@ -64,6 +66,7 @@ class PolycentricBackupActivity : AppCompatActivity() {
_buttonCopy = findViewById(R.id.button_copy)
_imageQR = findViewById(R.id.image_qr)
_textQR = findViewById(R.id.text_qr)
+ _textQRHint = findViewById(R.id.text_qr_hint)
_loader = findViewById(R.id.progress_loader)
findViewById(R.id.button_back).setOnClickListener {
finish();
@@ -71,6 +74,7 @@ class PolycentricBackupActivity : AppCompatActivity() {
_imageQR.visibility = View.INVISIBLE
_textQR.visibility = View.INVISIBLE
+ _textQRHint.visibility = View.INVISIBLE
_loader.visibility = View.VISIBLE
_buttonShare.visibility = View.INVISIBLE
_buttonCopy.visibility = View.INVISIBLE
@@ -92,8 +96,15 @@ class PolycentricBackupActivity : AppCompatActivity() {
_imageQR.setImageBitmap(pair.second)
_imageQR.visibility = View.VISIBLE
_textQR.visibility = View.VISIBLE
+ _textQRHint.visibility = View.VISIBLE
_buttonShare.visibility = View.VISIBLE
_buttonCopy.visibility = View.VISIBLE
+
+ // Add click listener to open QR code in fullscreen
+ _imageQR.setOnClickListener {
+ val intent = QRCodeFullscreenActivity.createIntent(this@PolycentricBackupActivity, pair.second, _exportBundle)
+ startActivity(intent)
+ }
} catch (e: Exception) {
Logger.e(TAG, getString(R.string.failed_to_generate_qr_code), e)
@@ -107,6 +118,7 @@ class PolycentricBackupActivity : AppCompatActivity() {
}
_textQR.text = errorMessage
_textQR.visibility = View.VISIBLE
+ _textQRHint.visibility = View.INVISIBLE
_buttonShare.visibility = View.VISIBLE
_buttonCopy.visibility = View.VISIBLE
diff --git a/app/src/main/java/com/futo/platformplayer/activities/QRCodeFullscreenActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/QRCodeFullscreenActivity.kt
new file mode 100644
index 00000000..6e1a0f17
--- /dev/null
+++ b/app/src/main/java/com/futo/platformplayer/activities/QRCodeFullscreenActivity.kt
@@ -0,0 +1,62 @@
+package com.futo.platformplayer.activities
+
+import android.content.Context
+import android.graphics.Bitmap
+import android.os.Bundle
+import android.view.View
+import android.widget.ImageButton
+import android.widget.ImageView
+import androidx.appcompat.app.AppCompatActivity
+import com.futo.platformplayer.R
+import com.futo.platformplayer.setNavigationBarColorAndIcons
+import com.futo.platformplayer.states.StateApp
+
+class QRCodeFullscreenActivity : AppCompatActivity() {
+ companion object {
+ private const val EXTRA_QR_BITMAP = "qr_bitmap"
+ private const val EXTRA_QR_TEXT = "qr_text"
+
+ fun createIntent(context: Context, qrBitmap: Bitmap, qrText: String): android.content.Intent {
+ return android.content.Intent(context, QRCodeFullscreenActivity::class.java).apply {
+ putExtra(EXTRA_QR_BITMAP, qrBitmap)
+ putExtra(EXTRA_QR_TEXT, qrText)
+ }
+ }
+ }
+
+ override fun attachBaseContext(newBase: Context?) {
+ super.attachBaseContext(StateApp.instance.getLocaleContext(newBase))
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_qr_code_fullscreen)
+ setNavigationBarColorAndIcons()
+
+ val qrBitmap = intent.getParcelableExtra(EXTRA_QR_BITMAP)
+ val qrText = intent.getStringExtra(EXTRA_QR_TEXT)
+
+ val imageQR = findViewById(R.id.image_qr_fullscreen)
+ val buttonBack = findViewById(R.id.button_back_fullscreen)
+ val buttonClose = findViewById(R.id.button_close_fullscreen)
+
+ // Set the QR code image
+ qrBitmap?.let { bitmap ->
+ imageQR.setImageBitmap(bitmap)
+ }
+
+ // Set click listeners
+ buttonBack.setOnClickListener {
+ finish()
+ }
+
+ buttonClose.setOnClickListener {
+ finish()
+ }
+
+ // Make the entire QR code area clickable to close
+ imageQR.setOnClickListener {
+ finish()
+ }
+ }
+}
diff --git a/app/src/main/res/layout/activity_polycentric_backup.xml b/app/src/main/res/layout/activity_polycentric_backup.xml
index d6579dd7..1e57365a 100644
--- a/app/src/main/res/layout/activity_polycentric_backup.xml
+++ b/app/src/main/res/layout/activity_polycentric_backup.xml
@@ -29,6 +29,8 @@
android:id="@+id/image_qr"
android:layout_width="200dp"
android:layout_height="200dp"
+ android:background="?android:attr/selectableItemBackgroundBorderless"
+ android:padding="8dp"
app:srcCompat="@drawable/ic_qr"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
@@ -47,6 +49,19 @@
app:layout_constraintLeft_toLeftOf="@id/image_qr"
app:layout_constraintRight_toRightOf="@id/image_qr" />
+
+
diff --git a/app/src/main/res/layout/activity_qr_code_fullscreen.xml b/app/src/main/res/layout/activity_qr_code_fullscreen.xml
new file mode 100644
index 00000000..6b73cb69
--- /dev/null
+++ b/app/src/main/res/layout/activity_qr_code_fullscreen.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 8bca2053..74ce9082 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -405,6 +405,7 @@
Fehler beim Parsen von NewPipe-Abonnements
Fehler beim Generieren des QR-Codes
QR-Code zu groß. Verwenden Sie den Text unten, um Ihr Profil zu teilen.
+ Tippen Sie auf den QR-Code für Vollbildansicht
Text teilen
Text kopiert
Muss mindestens 3 Zeichen lang sein.
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index a0a9c153..e20b3695 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -382,6 +382,7 @@
Error al analizar las suscripciones de NewPipe
Error al generar el código QR
Código QR demasiado grande. Use el texto de abajo para compartir su perfil.
+ Toca el código QR para vista completa
Compartir texto
Texto copiado
Debe tener al menos 3 caracteres de longitud.
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index b02636cf..9ecddc24 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -421,6 +421,7 @@
Échec de l\'analyse des abonnements NewPipe
Échec de la génération du code QR
Code QR trop volumineux. Utilisez le texte ci-dessous pour partager votre profil.
+ Appuyez sur le code QR pour la vue plein écran
Partager le texte
Texte copié
Doit comporter au moins 3 caractères.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9bad490e..7cc3ffb8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -643,6 +643,7 @@
Failed to parse NewPipe Subscriptions
Failed to generate QR code
QR code too large. Use the text below to share your profile.
+ Tap QR code for fullscreen view
Share Text
Copied Text
Must be at least 3 characters long.