From 2b7782a44c05f3628ea1b0f95b7f3c2f435445e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Thu, 13 Mar 2025 21:26:16 +0100 Subject: [PATCH] Switch to sheet for qr view, simplify text --- NearDrop/Base.lproj/Localizable.strings | 6 +- NearDrop/ar.lproj/Localizable.strings | 5 +- NearDrop/de.lproj/Localizable.strings | 5 +- NearDrop/es.lproj/Localizable.strings | 5 +- NearDrop/fr.lproj/Localizable.strings | 5 +- NearDrop/hu.lproj/Localizable.strings | 5 +- NearDrop/it.lproj/Localizable.strings | 5 +- NearDrop/ja.lproj/Localizable.strings | 5 +- NearDrop/ko.lproj/Localizable.strings | 5 +- NearDrop/nl.lproj/Localizable.strings | 5 +- NearDrop/pt-BR.lproj/Localizable.strings | 5 +- NearDrop/pt-PT.lproj/Localizable.strings | 5 +- NearDrop/ro.lproj/Localizable.strings | 5 +- NearDrop/ru.lproj/Localizable.strings | 5 +- NearDrop/th.lproj/Localizable.strings | 5 +- NearDrop/uk.lproj/Localizable.strings | 5 +- NearDrop/zh-Hans.lproj/Localizable.strings | 5 +- .../Base.lproj/ShareViewController.xib | 13 ++- ShareExtension/QrCodeView.swift | 29 ++++- ShareExtension/ShareViewController.swift | 106 +++++++++--------- 20 files changed, 154 insertions(+), 80 deletions(-) diff --git a/NearDrop/Base.lproj/Localizable.strings b/NearDrop/Base.lproj/Localizable.strings index 933c6d3..eea9b1e 100644 --- a/NearDrop/Base.lproj/Localizable.strings +++ b/NearDrop/Base.lproj/Localizable.strings @@ -102,7 +102,11 @@ If you still encounter issues, the issues could be caused due to your WiFi route "TransferFinished" = "Transfer finished"; "TransferTimedOut" = "Timed out"; "UnsupportedType" = "Attachment type not supported"; -"QrCodeInstructions" = "Scan the QR Code with the camera of your Android device. Afterward, your phone will show up in the previous screen.\n\nIf you encounter issues, open the settings of your Android device and search for 'Quick Share'. Change the setting 'Who can share with you' to 'Everyone', and try again.\n\nAlternatively, install and open the 'Files by Google' app and tap 'Receive' at the bottom right."; +"QrCodeInstructions" = "Scan the QR Code with the camera of your Android device. Afterward, your phone will show up in the previous screen.\n\nAlternatively, install and open the 'Files by Google' app and tap 'Receive' at the bottom right."; "TypeNotSupported" = "Type not supported"; "TypeNotSupportedDescription" = "The selected file type is not supported. If you want to share it anyway, right-click the file, select \"Compress\" and then send the compressed file."; "TypeNotSupportedButton" = "Okay"; + +"TimeoutTitle" = "Something went wrong"; +"TimeoutDescription" = "QuickDrop could not connect to your phone. Please open the settings of your Android device and search for 'Quick Share'. Change the setting 'Who can share with you' to 'Everyone', and try again."; +"TimeoutButton" = "Okay"; diff --git a/NearDrop/ar.lproj/Localizable.strings b/NearDrop/ar.lproj/Localizable.strings index 3bbebf7..1ad1d3b 100644 --- a/NearDrop/ar.lproj/Localizable.strings +++ b/NearDrop/ar.lproj/Localizable.strings @@ -92,7 +92,10 @@ "TransferFinished" = "اكتمل النقل"; "TransferTimedOut" = "انتهت المهلة"; "UnsupportedType" = "نوع المرفق غير مدعوم"; -"QrCodeInstructions" = "امسح رمز QR باستخدام كاميرا جهاز Android الخاص بك. بعد ذلك، سيظهر هاتفك على الشاشة السابقة. إذا واجهت مشاكل، افتح إعدادات جهاز Android وابحث عن 'Quick Share'. قم بتغيير الإعداد 'من يمكنه المشاركة معك' إلى 'الجميع'، وحاول مرة أخرى.\n\nبدلاً من ذلك، قم بتثبيت وفتح تطبيق 'Files by Google' ثم اضغط على 'استلام' في أسفل اليمين."; +"QrCodeInstructions" = "امسح رمز QR باستخدام كاميرا جهاز Android الخاص بك. بعد ذلك، سيظهر هاتفك في الشاشة السابقة.\n\nبدلاً من ذلك، قم بتثبيت وفتح تطبيق 'Files by Google' واضغط على 'استقبال' في أسفل اليمين."; "TypeNotSupported" = "نوع غير مدعوم"; "TypeNotSupportedDescription" = "نوع الملف المحدد غير مدعوم. إذا كنت ترغب في مشاركته على أي حال، انقر بزر الفأرة الأيمن على الملف، واختر \"ضغط\" ثم أرسل الملف المضغوط."; "TypeNotSupportedButton" = "حسنًا"; +"TimeoutTitle" = "حدث خطأ ما"; +"TimeoutDescription" = "تعذر على QuickDrop الاتصال بهاتفك. يرجى فتح إعدادات جهاز Android والبحث عن 'Quick Share'. قم بتغيير الإعداد 'من يمكنه المشاركة معك' إلى 'الجميع' ثم حاول مرة أخرى."; +"TimeoutButton" = "موافق"; diff --git a/NearDrop/de.lproj/Localizable.strings b/NearDrop/de.lproj/Localizable.strings index d16c2ec..065b1a9 100644 --- a/NearDrop/de.lproj/Localizable.strings +++ b/NearDrop/de.lproj/Localizable.strings @@ -95,7 +95,10 @@ Wenn du weiterhin Probleme hast, könnten diese durch deinen WLAN-Router verursa "TransferFinished" = "Übertragung abgeschlossen"; "TransferTimedOut" = "Zeitüberschreitung"; "UnsupportedType" = "Typ nicht unterstützt"; -"QrCodeInstructions" = "Scanne den QR-Code mit der Kamera deines Android-Geräts. Danach wird dein Telefon auf dem vorherigen Bildschirm angezeigt.\n\nBei Problemem öffne die Einstellungen deines Android-Geräts und suche nach 'Quick Share'. Ändere die Einstellung 'Wer kann etwas für dich freigeben' auf 'Alle' und versuche es erneut.\n\nAlternativ kannst du die App 'Files by Google' installieren, öffnen, und unten rechts auf 'Empfangen' tippen."; +"QrCodeInstructions" = "Scanne den QR-Code mit der Kamera deines Android-Geräts. Danach wird dein Telefon auf dem vorherigen Bildschirm angezeigt.\n\nAlternativ kannst du die App 'Files by Google' installieren, öffnen, und unten rechts auf 'Empfangen' tippen."; "TypeNotSupported" = "Typ nicht unterstützt"; "TypeNotSupportedDescription" = "Der ausgewählte Dateityp wird nicht unterstützt. Wenn du ihn trotzdem teilen möchtest, klicke mit der rechten Maustaste auf die Datei, wähle „Komprimieren“ aus und sende dann die komprimierte Datei."; "TypeNotSupportedButton" = "Okay"; +"TimeoutTitle" = "Etwas ist schiefgelaufen"; +"TimeoutDescription" = "QuickDrop konnte keine Verbindung zu deinem Telefon herstellen. Öffne die Einstellungen deines Android-Geräts und suche nach 'Quick Share'. Ändere die Einstellung 'Wer kann mit dir teilen' auf 'Jeder' und versuche es erneut."; +"TimeoutButton" = "OK"; diff --git a/NearDrop/es.lproj/Localizable.strings b/NearDrop/es.lproj/Localizable.strings index 638ee31..a2f83fd 100644 --- a/NearDrop/es.lproj/Localizable.strings +++ b/NearDrop/es.lproj/Localizable.strings @@ -93,7 +93,10 @@ Si aún encuentras problemas, estos podrían ser causados por tu router WiFi. Al "TransferFinished" = "Transferencia finalizada"; "TransferTimedOut" = "Tiempo de espera agotado"; "UnsupportedType" = "Tipo de archivo adjunto no compatible"; -"QrCodeInstructions" = "Escanea el código QR con la cámara de tu dispositivo Android. Después, tu teléfono aparecerá en la pantalla anterior.\n\nSi tienes problemas, abre la configuración de tu dispositivo Android y busca 'Quick Share'. Cambia la opción 'Quién puede compartir contigo' a 'Todos', y vuelve a intentarlo.\n\nComo alternativa, instala y abre la app 'Files by Google' y toca 'Recibir' en la parte inferior derecha."; +"QrCodeInstructions" = "Escanea el código QR con la cámara de tu dispositivo Android. Después, tu teléfono aparecerá en la pantalla anterior.\n\nComo alternativa, instala y abre la app 'Files by Google' y toca 'Recibir' en la parte inferior derecha."; "TypeNotSupported" = "Tipo no soportado"; "TypeNotSupportedDescription" = "El tipo de archivo seleccionado no es compatible. Si aún deseas compartirlo, haz clic derecho en el archivo, selecciona \"Comprimir\" y luego envía el archivo comprimido."; "TypeNotSupportedButton" = "Vale"; +"TimeoutTitle" = "Algo salió mal"; +"TimeoutDescription" = "QuickDrop no pudo conectarse a tu teléfono. Abre la configuración de tu dispositivo Android y busca 'Quick Share'. Cambia la opción 'Quién puede compartir contigo' a 'Todos' y vuelve a intentarlo."; +"TimeoutButton" = "Aceptar"; diff --git a/NearDrop/fr.lproj/Localizable.strings b/NearDrop/fr.lproj/Localizable.strings index 21946c5..793bb76 100644 --- a/NearDrop/fr.lproj/Localizable.strings +++ b/NearDrop/fr.lproj/Localizable.strings @@ -93,7 +93,10 @@ Si vous rencontrez toujours des problèmes, ceux-ci peuvent être causés par vo "TransferFinished" = "Transfert terminé"; "TransferTimedOut" = "Délai dépassé"; "UnsupportedType" = "Type de pièce jointe non pris en charge"; -"QrCodeInstructions" = "Scannez le code QR avec l’appareil photo de votre appareil Android. Ensuite, votre téléphone apparaîtra sur l’écran précédent.\n\nSi vous rencontrez des problèmes, ouvrez les paramètres de votre appareil Android et recherchez 'Quick Share'. Modifiez le paramètre 'Qui peut partager avec vous' sur 'Tout le monde', puis réessayez.\n\nSinon, installez et ouvrez l’application 'Files by Google' et appuyez sur 'Recevoir' en bas à droite."; +"QrCodeInstructions" = "Scannez le code QR avec l’appareil photo de votre appareil Android. Ensuite, votre téléphone apparaîtra sur l’écran précédent.\n\nSinon, installez et ouvrez l’application 'Files by Google' et appuyez sur 'Recevoir' en bas à droite."; "TypeNotSupported" = "Type non pris en charge"; "TypeNotSupportedDescription" = "Le type de fichier sélectionné n'est pas pris en charge. Si vous souhaitez tout de même le partager, faites un clic droit sur le fichier, sélectionnez \"Compresser\" puis envoyez le fichier compressé."; "TypeNotSupportedButton" = "D'accord"; +"TimeoutTitle" = "Un problème est survenu"; +"TimeoutDescription" = "QuickDrop n’a pas pu se connecter à votre téléphone. Ouvrez les paramètres de votre appareil Android et recherchez 'Quick Share'. Modifiez le paramètre 'Qui peut partager avec vous' sur 'Tout le monde', puis réessayez."; +"TimeoutButton" = "D'accord"; diff --git a/NearDrop/hu.lproj/Localizable.strings b/NearDrop/hu.lproj/Localizable.strings index 7c32ba2..5d1d720 100644 --- a/NearDrop/hu.lproj/Localizable.strings +++ b/NearDrop/hu.lproj/Localizable.strings @@ -94,7 +94,10 @@ Ha továbbra is problémákat tapasztalsz, azok a WiFi-routeredből adódhatnak. "TransferFinished" = "Átvitel befejezve"; "TransferTimedOut" = "Időtúllépés"; "UnsupportedType" = "Nem támogatott csatolmánytípus"; -"QrCodeInstructions" = "Olvasd be a QR-kódot az Android készüléked kamerájával. Ezután a telefonod megjelenik az előző képernyőn.\n\nHa problémát tapasztalsz, nyisd meg az Android beállításokat, és keresd meg a 'Quick Share' opciót. Állítsd be a 'Ki oszthat meg veled' lehetőséget 'Mindenki'-re, és próbáld újra.\n\nAlternatív megoldásként telepítsd és nyisd meg a 'Files by Google' alkalmazást, majd koppints a 'Fogadás' gombra a jobb alsó sarokban."; +"QrCodeInstructions" = "Olvasd be a QR-kódot az Android készüléked kamerájával. Ezután a telefonod megjelenik az előző képernyőn.\n\nAlternatív megoldásként telepítsd és nyisd meg a 'Files by Google' alkalmazást, majd koppints a 'Fogadás' gombra a jobb alsó sarokban."; "TypeNotSupported" = "Nem támogatott típus"; "TypeNotSupportedDescription" = "A kiválasztott fájltípus nem támogatott. Ha mégis meg szeretnéd osztani, kattints jobb gombbal a fájlra, válaszd a \"Tömörítés\" lehetőséget, majd küldd el a tömörített fájlt."; "TypeNotSupportedButton" = "Rendben"; +"TimeoutTitle" = "Valami hiba történt"; +"TimeoutDescription" = "A QuickDrop nem tudott csatlakozni a telefonodhoz. Nyisd meg az Android beállításait, és keresd meg a 'Quick Share' beállítást. Állítsd át a 'Ki oszthat meg veled' opciót 'Mindenki'-re, majd próbáld újra."; +"TimeoutButton" = "Rendben"; diff --git a/NearDrop/it.lproj/Localizable.strings b/NearDrop/it.lproj/Localizable.strings index c79451a..8652de6 100644 --- a/NearDrop/it.lproj/Localizable.strings +++ b/NearDrop/it.lproj/Localizable.strings @@ -93,7 +93,10 @@ Se il problema persiste, potrebbe essere causato dal tuo router WiFi. Alcuni rou "TransferFinished" = "Trasferimento completato"; "TransferTimedOut" = "Tempo scaduto"; "UnsupportedType" = "Tipo di allegato non supportato"; -"QrCodeInstructions" = "Scansiona il codice QR con la fotocamera del tuo dispositivo Android. Dopodiché, il telefono apparirà nella schermata precedente.\n\nSe riscontri problemi, apri le impostazioni del tuo dispositivo Android e cerca 'Quick Share'. Cambia l'impostazione 'Chi può condividere con te' su 'Tutti', e riprova.\n\nIn alternativa, installa e apri l'app 'Files by Google' e tocca 'Ricevi' in basso a destra."; +"QrCodeInstructions" = "Scansiona il codice QR con la fotocamera del tuo dispositivo Android. Dopodiché, il telefono apparirà nella schermata precedente.\n\nIn alternativa, installa e apri l'app 'Files by Google' e tocca 'Ricevi' in basso a destra."; "TypeNotSupported" = "Tipo non supportato"; "TypeNotSupportedDescription" = "Il tipo di file selezionato non è supportato. Se desideri comunque condividerlo, fai clic con il tasto destro sul file, seleziona \"Comprimi\" e poi invia il file compresso."; "TypeNotSupportedButton" = "Ok"; +"TimeoutTitle" = "Qualcosa è andato storto"; +"TimeoutDescription" = "QuickDrop non è riuscito a connettersi al tuo telefono. Apri le impostazioni del tuo dispositivo Android e cerca 'Quick Share'. Cambia l'impostazione 'Chi può condividere con te' su 'Tutti' e riprova."; +"TimeoutButton" = "Ok"; diff --git a/NearDrop/ja.lproj/Localizable.strings b/NearDrop/ja.lproj/Localizable.strings index 59088fe..5e7437a 100644 --- a/NearDrop/ja.lproj/Localizable.strings +++ b/NearDrop/ja.lproj/Localizable.strings @@ -93,7 +93,10 @@ AndroidデバイスからMacにファイルを送信するには、スマート "TransferFinished" = "転送完了"; "TransferTimedOut" = "タイムアウトしました"; "UnsupportedType" = "添付ファイルの種類はサポートされていません"; -"QrCodeInstructions" = "AndroidデバイスのカメラでQRコードをスキャンしてください。その後、前の画面に携帯電話が表示されます。\n\n問題が発生した場合は、Androidの設定を開き、「クイックシェア」を検索してください。「誰が共有できるか」の設定を「全員」に変更し、再度試してください。\n\nまたは、「Files by Google」アプリをインストールして開き、右下の「受信」をタップしてください。"; +"QrCodeInstructions" = "AndroidデバイスのカメラでQRコードをスキャンしてください。その後、前の画面に携帯電話が表示されます。\n\nまたは、「Files by Google」アプリをインストールして開き、右下の「受信」をタップしてください。"; "TypeNotSupported" = "サポートされていない形式"; "TypeNotSupportedDescription" = "選択したファイルの形式はサポートされていません。それでも共有したい場合は、ファイルを右クリックして「圧縮」を選択し、圧縮ファイルを送信してください。"; "TypeNotSupportedButton" = "OK"; +"TimeoutTitle" = "問題が発生しました"; +"TimeoutDescription" = "QuickDropが電話に接続できませんでした。Androidの設定を開き、「クイックシェア」を検索してください。「誰が共有できるか」の設定を「全員」に変更し、再度試してください。"; +"TimeoutButton" = "OK"; diff --git a/NearDrop/ko.lproj/Localizable.strings b/NearDrop/ko.lproj/Localizable.strings index d93aecd..431491a 100644 --- a/NearDrop/ko.lproj/Localizable.strings +++ b/NearDrop/ko.lproj/Localizable.strings @@ -93,7 +93,10 @@ Android 기기에서 Mac으로 파일을 보내려면 휴대폰에서 공유 아 "TransferFinished" = "전송 완료"; "TransferTimedOut" = "시간 초과"; "UnsupportedType" = "지원되지 않는 첨부 파일 유형"; -"QrCodeInstructions" = "Android 기기의 카메라로 QR 코드를 스캔하세요. 그러면 이전 화면에 휴대폰이 표시됩니다.\n\n문제가 발생하면 Android 설정을 열고 '퀵 공유'를 검색하세요. '누가 나와 공유할 수 있나요?' 설정을 '모두'로 변경하고 다시 시도하세요.\n\n또는 'Files by Google' 앱을 설치하고 열어 오른쪽 하단의 '받기'를 탭하세요."; +"QrCodeInstructions" = "Android 기기의 카메라로 QR 코드를 스캔하세요. 그러면 이전 화면에 휴대폰이 표시됩니다.\n\n또는 'Files by Google' 앱을 설치하고 열어 오른쪽 하단의 '받기'를 탭하세요."; "TypeNotSupported" = "지원되지 않는 유형"; "TypeNotSupportedDescription" = "선택한 파일 형식은 지원되지 않습니다. 그래도 공유하려면 파일을 오른쪽 클릭하여 '압축'을 선택한 후 압축된 파일을 보내세요."; "TypeNotSupportedButton" = "확인"; +"TimeoutTitle" = "문제가 발생했습니다"; +"TimeoutDescription" = "QuickDrop이 휴대전화에 연결할 수 없습니다. Android 설정을 열고 '퀵 공유'를 검색하세요. '누가 나와 공유할 수 있나요?' 설정을 '모두'로 변경하고 다시 시도하세요."; +"TimeoutButton" = "확인"; diff --git a/NearDrop/nl.lproj/Localizable.strings b/NearDrop/nl.lproj/Localizable.strings index 4b8bae6..dc2983e 100644 --- a/NearDrop/nl.lproj/Localizable.strings +++ b/NearDrop/nl.lproj/Localizable.strings @@ -93,7 +93,10 @@ Als je nog steeds problemen ondervindt, kunnen deze veroorzaakt worden door je W "TransferFinished" = "Overdracht voltooid"; "TransferTimedOut" = "Time-out"; "UnsupportedType" = "Bijlagetype niet ondersteund"; -"QrCodeInstructions" = "Scan de QR-code met de camera van je Android-apparaat. Daarna verschijnt je telefoon op het vorige scherm.\n\nAls je problemen ondervindt, open de instellingen van je Android-apparaat en zoek naar 'Quick Share'. Wijzig de instelling 'Wie kan met je delen' naar 'Iedereen' en probeer het opnieuw.\n\nJe kunt ook de app 'Files by Google' installeren en openen en tikken op 'Ontvangen' rechtsonder."; +"QrCodeInstructions" = "Scan de QR-code met de camera van je Android-apparaat. Daarna verschijnt je telefoon op het vorige scherm.\n\nJe kunt ook de app 'Files by Google' installeren en openen en tikken op 'Ontvangen' rechtsonder."; "TypeNotSupported" = "Type niet ondersteund"; "TypeNotSupportedDescription" = "Het geselecteerde bestandstype wordt niet ondersteund. Als je het toch wilt delen, klik met de rechtermuisknop op het bestand, selecteer \"Comprimeren\" en stuur vervolgens het gecomprimeerde bestand."; "TypeNotSupportedButton" = "Oké"; +"TimeoutTitle" = "Er is iets misgegaan"; +"TimeoutDescription" = "QuickDrop kon geen verbinding maken met je telefoon. Open de instellingen van je Android-apparaat en zoek naar 'Quick Share'. Wijzig de instelling 'Wie kan met je delen' naar 'Iedereen' en probeer het opnieuw."; +"TimeoutButton" = "Oké"; diff --git a/NearDrop/pt-BR.lproj/Localizable.strings b/NearDrop/pt-BR.lproj/Localizable.strings index 16c4a2c..a0b4de1 100644 --- a/NearDrop/pt-BR.lproj/Localizable.strings +++ b/NearDrop/pt-BR.lproj/Localizable.strings @@ -93,7 +93,10 @@ Se você ainda encontrar problemas, eles podem ser causados pelo seu roteador Wi "TransferFinished" = "Transferência concluída"; "TransferTimedOut" = "Tempo esgotado"; "UnsupportedType" = "Tipo de anexo não suportado"; -"QrCodeInstructions" = "Escaneie o código QR com a câmera do seu dispositivo Android. Depois, seu telefone aparecerá na tela anterior.\n\nSe tiver problemas, abra as configurações do seu Android e procure por 'Quick Share'. Altere a configuração 'Quem pode compartilhar com você' para 'Todos', e tente novamente.\n\nComo alternativa, instale e abra o app 'Files by Google' e toque em 'Receber' no canto inferior direito."; +"QrCodeInstructions" = "Escaneie o código QR com a câmera do seu dispositivo Android. Depois, seu telefone aparecerá na tela anterior.\n\nComo alternativa, instale e abra o app 'Files by Google' e toque em 'Receber' no canto inferior direito."; "TypeNotSupported" = "Tipo não suportado"; "TypeNotSupportedDescription" = "O tipo de arquivo selecionado não é suportado. Se quiser compartilhá-lo mesmo assim, clique com o botão direito no arquivo, selecione \"Comprimir\" e envie o arquivo compactado."; "TypeNotSupportedButton" = "Ok"; +"TimeoutTitle" = "Algo deu errado"; +"TimeoutDescription" = "O QuickDrop não conseguiu se conectar ao seu telefone. Abra as configurações do seu dispositivo Android e procure por 'Quick Share'. Altere a configuração 'Quem pode compartilhar com você' para 'Todos' e tente novamente."; +"TimeoutButton" = "Ok"; diff --git a/NearDrop/pt-PT.lproj/Localizable.strings b/NearDrop/pt-PT.lproj/Localizable.strings index ea0cf52..596c164 100644 --- a/NearDrop/pt-PT.lproj/Localizable.strings +++ b/NearDrop/pt-PT.lproj/Localizable.strings @@ -93,7 +93,10 @@ Se ainda tiver problemas, estes podem ser causados pelo seu router WiFi. Alguns "TransferFinished" = "Transferência concluída"; "TransferTimedOut" = "Tempo limite excedido"; "UnsupportedType" = "Tipo de anexo não suportado"; -"QrCodeInstructions" = "Digitalize o código QR com a câmara do seu dispositivo Android. Depois, o seu telefone aparecerá no ecrã anterior.\n\nSe encontrar problemas, abra as definições do seu Android e procure por 'Quick Share'. Altere a definição 'Quem pode partilhar consigo' para 'Todos', e tente novamente.\n\nEm alternativa, instale e abra a aplicação 'Files by Google' e toque em 'Receber' no canto inferior direito."; +"QrCodeInstructions" = "Digitalize o código QR com a câmara do seu dispositivo Android. Depois, o seu telefone aparecerá no ecrã anterior.\n\nEm alternativa, instale e abra a aplicação 'Files by Google' e toque em 'Receber' no canto inferior direito."; "TypeNotSupported" = "Tipo não suportado"; "TypeNotSupportedDescription" = "O tipo de ficheiro selecionado não é suportado. Se quiser partilhá-lo mesmo assim, clique com o botão direito no ficheiro, selecione \"Comprimir\" e depois envie o ficheiro comprimido."; "TypeNotSupportedButton" = "Ok"; +"TimeoutTitle" = "Algo correu mal"; +"TimeoutDescription" = "O QuickDrop não conseguiu ligar-se ao seu telefone. Abra as definições do seu dispositivo Android e procure por 'Quick Share'. Altere a definição 'Quem pode partilhar consigo' para 'Todos' e tente novamente."; +"TimeoutButton" = "Ok"; diff --git a/NearDrop/ro.lproj/Localizable.strings b/NearDrop/ro.lproj/Localizable.strings index 530b251..2b6df9b 100644 --- a/NearDrop/ro.lproj/Localizable.strings +++ b/NearDrop/ro.lproj/Localizable.strings @@ -92,7 +92,10 @@ Dacă întâmpini în continuare probleme, acestea ar putea fi cauzate de router "TransferFinished" = "Transfer finalizat"; "TransferTimedOut" = "Timpul a expirat"; "UnsupportedType" = "Tip de atașament neacceptat"; -"QrCodeInstructions" = "Scanează codul QR cu camera dispozitivului tău Android. După aceea, telefonul tău va apărea pe ecranul anterior.\n\nDacă întâmpini probleme, deschide setările dispozitivului Android și caută 'Quick Share'. Schimbă setarea 'Cine poate partaja cu tine' pe 'Toată lumea', și încearcă din nou.\n\nAlternativ, instalează și deschide aplicația 'Files by Google' și apasă pe 'Primește' în colțul din dreapta jos."; +"QrCodeInstructions" = "Scanează codul QR cu camera dispozitivului tău Android. După aceea, telefonul tău va apărea pe ecranul anterior.\n\nAlternativ, instalează și deschide aplicația 'Files by Google' și apasă pe 'Primește' în colțul din dreapta jos."; "TypeNotSupported" = "Tip nesuportat"; "TypeNotSupportedDescription" = "Tipul de fișier selectat nu este acceptat. Dacă dorești să îl trimiți oricum, fă clic dreapta pe fișier, selectează \"Comprimă\" și apoi trimite fișierul comprimat."; "TypeNotSupportedButton" = "Ok"; +"TimeoutTitle" = "Ceva nu a mers bine"; +"TimeoutDescription" = "QuickDrop nu a reușit să se conecteze la telefonul tău. Deschide setările dispozitivului Android și caută 'Quick Share'. Schimbă setarea 'Cine poate partaja cu tine' pe 'Toată lumea' și încearcă din nou."; +"TimeoutButton" = "OK"; diff --git a/NearDrop/ru.lproj/Localizable.strings b/NearDrop/ru.lproj/Localizable.strings index db23676..2a015e3 100644 --- a/NearDrop/ru.lproj/Localizable.strings +++ b/NearDrop/ru.lproj/Localizable.strings @@ -96,7 +96,10 @@ "TransferFinished" = "Передача завершена"; "TransferTimedOut" = "Время ожидания истекло"; "UnsupportedType" = "Тип вложения не поддерживается"; -"QrCodeInstructions" = "Отсканируйте QR-код с помощью камеры вашего Android-устройства. После этого ваш телефон появится на предыдущем экране.\n\nЕсли возникнут проблемы, откройте настройки Android и найдите 'Quick Share'. Измените параметр 'Кто может делиться с вами' на 'Все' и попробуйте снова.\n\nКроме того, установите и откройте приложение 'Files by Google' и нажмите 'Получить' в нижнем правом углу."; +"QrCodeInstructions" = "Отсканируйте QR-код с помощью камеры вашего Android-устройства. После этого ваш телефон появится на предыдущем экране.\n\nКроме того, установите и откройте приложение 'Files by Google' и нажмите 'Получить' в нижнем правом углу."; "TypeNotSupported" = "Тип не поддерживается"; "TypeNotSupportedDescription" = "Выбранный тип файла не поддерживается. Если вы все равно хотите его отправить, щелкните файл правой кнопкой мыши, выберите «Сжать», а затем отправьте сжатый файл."; "TypeNotSupportedButton" = "Окей"; +"TimeoutTitle" = "Что-то пошло не так"; +"TimeoutDescription" = "QuickDrop не удалось подключиться к вашему телефону. Откройте настройки Android и найдите 'Quick Share'. Измените параметр 'Кто может делиться с вами' на 'Все' и попробуйте снова."; +"TimeoutButton" = "Ок"; diff --git a/NearDrop/th.lproj/Localizable.strings b/NearDrop/th.lproj/Localizable.strings index 3f7260d..46ffb64 100644 --- a/NearDrop/th.lproj/Localizable.strings +++ b/NearDrop/th.lproj/Localizable.strings @@ -93,7 +93,10 @@ "TransferFinished" = "การโอนเสร็จสิ้น"; "TransferTimedOut" = "หมดเวลา"; "UnsupportedType" = "ไม่รองรับประเภทไฟล์แนบ"; -"QrCodeInstructions" = "สแกน QR Code ด้วยกล้องของอุปกรณ์ Android ของคุณ หลังจากนั้นโทรศัพท์ของคุณจะปรากฏบนหน้าจอก่อนหน้า หากพบปัญหา ให้เปิดการตั้งค่าของอุปกรณ์ Android และค้นหา 'Quick Share' จากนั้นเปลี่ยนการตั้งค่า 'ใครสามารถแชร์กับคุณ' เป็น 'ทุกคน' และลองใหม่\n\nหรือ ติดตั้งและเปิดแอป 'Files by Google' แล้วแตะ 'รับ' ที่มุมล่างขวา"; +"QrCodeInstructions" = "สแกน QR Code ด้วยกล้องของอุปกรณ์ Android ของคุณ หลังจากนั้น โทรศัพท์ของคุณจะปรากฏบนหน้าจอก่อนหน้า\n\nอีกทางหนึ่ง ติดตั้งและเปิดแอป 'Files by Google' แล้วแตะ 'รับ' ที่มุมล่างขวา"; "TypeNotSupported" = "ไม่รองรับประเภทนี้"; "TypeNotSupportedDescription" = "ประเภทไฟล์ที่เลือกไม่รองรับ หากต้องการแชร์อยู่ดี ให้คลิกขวาที่ไฟล์ เลือก \"บีบอัด\" แล้วส่งไฟล์ที่บีบอัดแล้ว"; "TypeNotSupportedButton" = "ตกลง"; +"TimeoutTitle" = "เกิดข้อผิดพลาด"; +"TimeoutDescription" = "QuickDrop ไม่สามารถเชื่อมต่อกับโทรศัพท์ของคุณได้ โปรดเปิดการตั้งค่าของอุปกรณ์ Android และค้นหา 'Quick Share' จากนั้นเปลี่ยนการตั้งค่า 'ใครสามารถแชร์กับคุณ' เป็น 'ทุกคน' และลองใหม่อีกครั้ง"; +"TimeoutButton" = "ตกลง"; diff --git a/NearDrop/uk.lproj/Localizable.strings b/NearDrop/uk.lproj/Localizable.strings index da50507..c546110 100644 --- a/NearDrop/uk.lproj/Localizable.strings +++ b/NearDrop/uk.lproj/Localizable.strings @@ -93,7 +93,10 @@ "TransferFinished" = "Передача завершена"; "TransferTimedOut" = "Час очікування вийшов"; "UnsupportedType" = "Тип вкладення не підтримується"; -"QrCodeInstructions" = "Скануйте QR-код за допомогою камери вашого пристрою Android. Після цього телефон з'явиться на попередньому екрані.\n\nЯкщо виникли проблеми, відкрийте налаштування Android і знайдіть 'Quick Share'. Змініть параметр 'Хто може ділитися з вами' на 'Усі', і спробуйте знову.\n\nАбо встановіть і відкрийте додаток 'Files by Google' та натисніть 'Отримати' внизу праворуч."; +"QrCodeInstructions" = "Скануйте QR-код за допомогою камери вашого пристрою Android. Після цього телефон з'явиться на попередньому екрані.\n\nАбо встановіть і відкрийте додаток 'Files by Google' та натисніть 'Отримати' внизу праворуч."; "TypeNotSupported" = "Тип не підтримується"; "TypeNotSupportedDescription" = "Вибраний тип файлу не підтримується. Якщо ви все одно хочете його надіслати, клацніть файл правою кнопкою миші, виберіть \"Стиснути\", а потім надішліть стиснутий файл."; "TypeNotSupportedButton" = "Гаразд"; +"TimeoutTitle" = "Щось пішло не так"; +"TimeoutDescription" = "QuickDrop не вдалося підключитися до вашого телефону. Відкрийте налаштування Android і знайдіть 'Quick Share'. Змініть параметр 'Хто може ділитися з вами' на 'Усі' і спробуйте знову."; +"TimeoutButton" = "Гаразд"; diff --git a/NearDrop/zh-Hans.lproj/Localizable.strings b/NearDrop/zh-Hans.lproj/Localizable.strings index 046353d..bf3c319 100644 --- a/NearDrop/zh-Hans.lproj/Localizable.strings +++ b/NearDrop/zh-Hans.lproj/Localizable.strings @@ -93,7 +93,10 @@ "TransferFinished" = "传输完成"; "TransferTimedOut" = "超时"; "UnsupportedType" = "不支持的附件类型"; -"QrCodeInstructions" = "使用 Android 设备的摄像头扫描二维码。之后,您的手机将在上一个屏幕中显示。\n\n如果遇到问题,请打开 Android 设备的设置并搜索“快速分享”(Quick Share)。将“谁可以与您分享”更改为“所有人”,然后重试。\n\n或者,安装并打开“Files by Google”应用,然后点击右下角的“接收”。"; +"QrCodeInstructions" = "使用 Android 设备的摄像头扫描二维码。之后,您的手机将在上一个屏幕中显示。\n\n或者,安装并打开“Files by Google”应用,然后点击右下角的“接收”。"; "TypeNotSupported" = "不支持的类型"; "TypeNotSupportedDescription" = "所选文件类型不受支持。如果仍要分享,请右键点击文件,选择“压缩”,然后发送压缩后的文件。"; "TypeNotSupportedButton" = "好的"; +"TimeoutTitle" = "出现问题"; +"TimeoutDescription" = "QuickDrop 无法连接到您的手机。请打开 Android 设备的设置并搜索“快速分享”(Quick Share)。将“谁可以与您分享”更改为“所有人”,然后重试。"; +"TimeoutButton" = "确定"; diff --git a/ShareExtension/Base.lproj/ShareViewController.xib b/ShareExtension/Base.lproj/ShareViewController.xib index 20e9bd3..089cabf 100644 --- a/ShareExtension/Base.lproj/ShareViewController.xib +++ b/ShareExtension/Base.lproj/ShareViewController.xib @@ -9,6 +9,7 @@ + @@ -57,7 +58,7 @@ Gw - + @@ -83,7 +84,7 @@ Gw - + @@ -136,7 +137,7 @@ Gw - + @@ -193,7 +194,7 @@ Gw - + @@ -207,7 +208,7 @@ Gw - + @@ -242,7 +243,7 @@ Gw - + diff --git a/ShareExtension/QrCodeView.swift b/ShareExtension/QrCodeView.swift index 0a72f44..ad83c83 100644 --- a/ShareExtension/QrCodeView.swift +++ b/ShareExtension/QrCodeView.swift @@ -7,15 +7,27 @@ import SwiftUI -let qrCodeViewSize = CGSize(width: 600.0, height: 300.0) +let qrCodeViewSize = CGSize(width: 530.0, height: 270.0) struct QrCodeView: View { @State private var qrCode: String = "" + let closeView: () -> Void var body: some View { + VStack { - Spacer() + Button(action: { + closeView() + }, label: { + Image(systemName: "xmark") + .font(.system(size: 20)) + .foregroundColor(.gray) + }) + .buttonStyle(PlainButtonStyle()) + .frame(maxWidth: .infinity, alignment: .trailing) + .padding(.trailing, 15) + .padding(.top, 15) HStack { Spacer() @@ -23,26 +35,31 @@ struct QrCodeView: View { Image("QR") .resizable() .aspectRatio(1, contentMode: .fit) - .frame(height: 230) + .frame(height: 190) Spacer() + Text("QrCodeInstructions".localized()) - .padding(.top) + .padding(.top, 5) .padding(.horizontal) + .fixedSize(horizontal: false, vertical: true) .multilineTextAlignment(.center) + Spacer() } .padding(.horizontal) + .padding(.bottom) Spacer() + } + .frame(width: qrCodeViewSize.width, height: qrCodeViewSize.height) } } #Preview { - QrCodeView() - .frame(width: qrCodeViewSize.width, height: qrCodeViewSize.height) + QrCodeView(closeView: {}) } diff --git a/ShareExtension/ShareViewController.swift b/ShareExtension/ShareViewController.swift index a8dba29..c072d58 100644 --- a/ShareExtension/ShareViewController.swift +++ b/ShareExtension/ShareViewController.swift @@ -11,8 +11,6 @@ import SwiftUI import NearbyShare class ShareViewController: NSViewController, ShareExtensionDelegate{ - - private var qrWindow: NSWindow? private var urls:[URL]=[] private var foundDevices:[RemoteDeviceInfo]=[] @@ -21,6 +19,7 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ private var refreshTimer: Timer? = nil private var isDiscovering=false + private var connectionEstablished = false @IBOutlet var filesIcon:NSImageView? @IBOutlet var filesLabel:NSTextField? @@ -36,8 +35,12 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ @IBOutlet var progressState:NSTextField? @IBOutlet var progressDeviceIconWrap:NSView? @IBOutlet var progressDeviceSecondaryIcon:NSImageView? - - override var nibName: NSNib.Name? { + @IBOutlet var dontSeeDeviceButton: NSButton? + + private var qrCodeSheetView: NSPanel? = nil + private var sheetAttachedWindow: NSWindow? = nil + + override var nibName: NSNib.Name? { return NSNib.Name("ShareViewController") } @@ -118,31 +121,10 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ } NearbyConnectionManager.shared.addShareExtensionDelegate(self) - -// let refreshInterval = 7.0 -// -// refreshTimer = Timer.scheduledTimer(withTimeInterval: refreshInterval, repeats: true, block: { _ in -// -// // Restart device discovery if no devices are found -// if self.isDiscovering && self.foundDevices.isEmpty { -// -// log("Refreshing device list") -// -// NearbyConnectionManager.shared.stopDeviceDiscovery() -// -// DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { -// if self.isDiscovering { -// NearbyConnectionManager.shared.startDeviceDiscovery() -// } -// } -// } -// }) } override func viewWillDisappear() { - self.qrWindow?.close() - if chosenDevice==nil{ isDiscovering = false refreshTimer?.invalidate() @@ -152,8 +134,6 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ } @IBAction func cancel(_ sender: AnyObject?) { - - self.qrWindow?.close() if let device=chosenDevice{ NearbyConnectionManager.shared.cancelOutgoingTransfer(id: device.id!) @@ -162,33 +142,41 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ self.extensionContext!.cancelRequest(withError: cancelError) } - @IBAction func dontSeeDeviceButton(_ sender: AnyObject?) { - openQrScreen() + private func closeQrCodeView() { + if let mainWindow = sheetAttachedWindow, let qrCodeView = self.qrCodeSheetView { + mainWindow.endSheet(qrCodeView) + + self.qrCodeSheetView = nil + self.sheetAttachedWindow = nil + } } - @objc func openQrScreen() { - // Create the welcome screen SwiftUI view - let qrCodeView = QrCodeView() + @IBAction func dontSeeDeviceButton(_ sender: AnyObject?) { - // Create an NSWindow to host the SwiftUI view - qrWindow = NSWindow( - contentRect: NSRect(x: 0, y: 0, width: qrCodeViewSize.width, height: qrCodeViewSize.height), - styleMask: [.titled, .closable], - backing: .buffered, - defer: false - ) + let contentView = QrCodeView { + self.closeQrCodeView() + } - qrWindow?.center() - qrWindow?.isReleasedWhenClosed = false - qrWindow?.setFrameAutosaveName("QrCodeScreen") - qrWindow?.contentView = NSHostingView(rootView: qrCodeView) + let hostingView = NSHostingView(rootView: contentView) - // Ensure the window is always on top - NSApp.activate(ignoringOtherApps: true) // Brings the whole app to the front - qrWindow?.makeKeyAndOrderFront(nil) - qrWindow?.level = .normal + let panel = NSPanel(contentRect: NSRect(x: 0, y: 0, width: qrCodeViewSize.width, height: qrCodeViewSize.height), + styleMask: [.titled, .closable, .utilityWindow], + backing: .buffered, + defer: false) + + panel.title = "SwiftUI Sheet" + panel.contentView = hostingView + + self.qrCodeSheetView = panel + + if let mainWindow = NSApp.mainWindow { + + self.sheetAttachedWindow = mainWindow + mainWindow.beginSheet(panel) { _ in } + } } - + + private func urlsReady(){ for url in urls{ if url.isFileURL{ @@ -246,7 +234,7 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ foundDevices.append(device) listView?.animator().insertItems(at: [[0, foundDevices.count-1]]) - qrWindow?.close() + closeQrCodeView() } func removeDevice(id: String){ @@ -266,6 +254,9 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ } func connectionWasEstablished(pinCode: String) { + + connectionEstablished = true + progressState?.stringValue=String(format:NSLocalizedString("PinCode", value: "PIN: %@", comment: ""), arguments: [pinCode]) progressProgressBar?.isIndeterminate=false progressProgressBar?.maxValue=1000 @@ -314,14 +305,13 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ } func selectDevice(device:RemoteDeviceInfo){ - - self.qrWindow?.close() isDiscovering = false refreshTimer?.invalidate() NearbyConnectionManager.shared.stopDeviceDiscovery() listViewWrapper?.animator().isHidden=true + dontSeeDeviceButton?.animator().isHidden=true progressView?.animator().isHidden=false progressDeviceName?.stringValue=getDeviceName(device: device) progressDeviceIcon?.image=imageForDeviceType(type: device.type) @@ -329,6 +319,20 @@ class ShareViewController: NSViewController, ShareExtensionDelegate{ progressState?.stringValue=NSLocalizedString("Connecting", value: "Connecting...", comment: "") chosenDevice=device NearbyConnectionManager.shared.startOutgoingTransfer(deviceID: device.id!, delegate: self, urls: urls) + + DispatchQueue.main.asyncAfter(deadline: .now() + 13.0) { + if !self.connectionEstablished { + + let alert = NSAlert() + alert.alertStyle = .critical + + alert.messageText = "TimeoutTitle".localized() + alert.informativeText = "TimeoutDescription".localized() + alert.addButton(withTitle: "TimeoutButton".localized()) + + let _ = alert.runModal() + } + } } private func dismissDelayed(){