From e7f706b78d7282298782d66ff8e004fce2e2d605 Mon Sep 17 00:00:00 2001 From: cketti Date: Sat, 21 Feb 2015 04:31:44 +0100 Subject: [PATCH] Show new decrypt/verify error conditions in crypto header --- .../com/fsck/k9/activity/MessageCompose.java | 2 +- .../ui/messageview/MessageContainerView.java | 10 +- .../k9/ui/messageview/OpenPgpHeaderView.java | 114 +++++++++++++++--- k9mail/src/main/res/values-cs/strings.xml | 1 - k9mail/src/main/res/values-de/strings.xml | 1 - k9mail/src/main/res/values-el/strings.xml | 1 - k9mail/src/main/res/values-es/strings.xml | 1 - k9mail/src/main/res/values-et/strings.xml | 1 - k9mail/src/main/res/values-fi/strings.xml | 1 - k9mail/src/main/res/values-fr/strings.xml | 1 - k9mail/src/main/res/values-hr/strings.xml | 1 - k9mail/src/main/res/values-hu/strings.xml | 1 - k9mail/src/main/res/values-it/strings.xml | 1 - k9mail/src/main/res/values-ja/strings.xml | 1 - k9mail/src/main/res/values-lv/strings.xml | 1 - k9mail/src/main/res/values-nb/strings.xml | 1 - k9mail/src/main/res/values-nl/strings.xml | 1 - k9mail/src/main/res/values-pl/strings.xml | 1 - k9mail/src/main/res/values-pt-rBR/strings.xml | 1 - k9mail/src/main/res/values-ru/strings.xml | 1 - k9mail/src/main/res/values-sk/strings.xml | 1 - k9mail/src/main/res/values-sv/strings.xml | 1 - k9mail/src/main/res/values-tr/strings.xml | 1 - k9mail/src/main/res/values-zh-rCN/strings.xml | 1 - k9mail/src/main/res/values/strings.xml | 7 +- 25 files changed, 106 insertions(+), 48 deletions(-) diff --git a/k9mail/src/main/java/com/fsck/k9/activity/MessageCompose.java b/k9mail/src/main/java/com/fsck/k9/activity/MessageCompose.java index d05ae7e0e..a4db9b0bc 100644 --- a/k9mail/src/main/java/com/fsck/k9/activity/MessageCompose.java +++ b/k9mail/src/main/java/com/fsck/k9/activity/MessageCompose.java @@ -1815,7 +1815,7 @@ public class MessageCompose extends K9Activity implements OnClickListener, Log.e(K9.LOG_TAG, "OpenPGP Error Message:" + error.getMessage()); Toast.makeText(MessageCompose.this, - getString(R.string.openpgp_error) + " " + error.getMessage(), + getString(R.string.openpgp_error, error.getMessage()), Toast.LENGTH_LONG).show(); } }); diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java index 2dd32d1d8..de70a2e63 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/MessageContainerView.java @@ -412,12 +412,7 @@ public class MessageContainerView extends LinearLayout implements OnClickListene OpenPgpHeaderView openPgpHeaderView = (OpenPgpHeaderView) openPgpHeaderStub.inflate(); OpenPgpResultAnnotation cryptoAnnotation = messageViewContainer.cryptoAnnotation; - if (cryptoAnnotation == null) { - openPgpHeaderView.setOpenPgpData(null, false, null); - } else { - openPgpHeaderView.setOpenPgpData(cryptoAnnotation.getSignatureResult(), cryptoAnnotation.wasEncrypted(), - cryptoAnnotation.getPendingIntent()); - } + openPgpHeaderView.setOpenPgpData(cryptoAnnotation); openPgpHeaderView.setCallback(openPgpHeaderViewCallback); mSidebar.setVisibility(View.VISIBLE); } else { @@ -447,8 +442,7 @@ public class MessageContainerView extends LinearLayout implements OnClickListene return wrapStatusMessage(cryptoAnnotation.getError().getMessage()); } case ENCRYPTED_BUT_INCOMPLETE: { - //FIXME - return wrapStatusMessage("You need to download the complete message to be able to decrypt it."); + return wrapStatusMessage(getContext().getString(R.string.crypto_download_complete_message_to_decrypt)); } case NONE: case SIGNED_BUT_INCOMPLETE: { diff --git a/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java index 7a1d5308f..a13bf1d93 100644 --- a/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java +++ b/k9mail/src/main/java/com/fsck/k9/ui/messageview/OpenPgpHeaderView.java @@ -18,6 +18,8 @@ import android.widget.TextView; import com.fsck.k9.R; +import com.fsck.k9.mailstore.OpenPgpResultAnnotation; +import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.util.OpenPgpUtils; @@ -26,9 +28,7 @@ public class OpenPgpHeaderView extends LinearLayout { private Context context; private OpenPgpHeaderViewCallback callback; - private OpenPgpSignatureResult signatureResult; - private boolean encrypted; - private PendingIntent pendingIntent; + private OpenPgpResultAnnotation cryptoAnnotation; private ImageView resultEncryptionIcon; private TextView resultEncryptionText; @@ -61,28 +61,105 @@ public class OpenPgpHeaderView extends LinearLayout { this.callback = callback; } - public void setOpenPgpData(OpenPgpSignatureResult signatureResult, boolean encrypted, PendingIntent pendingIntent) { - this.signatureResult = signatureResult; - this.encrypted = encrypted; - this.pendingIntent = pendingIntent; + public void setOpenPgpData(OpenPgpResultAnnotation cryptoAnnotation) { + this.cryptoAnnotation = cryptoAnnotation; initializeEncryptionHeader(); initializeSignatureHeader(); } private void initializeEncryptionHeader() { - if (encrypted) { - setEncryptionImageAndTextColor(CryptoState.ENCRYPTED); - resultEncryptionText.setText(R.string.openpgp_result_encrypted); - } else { - setEncryptionImageAndTextColor(CryptoState.NOT_ENCRYPTED); - resultEncryptionText.setText(R.string.openpgp_result_not_encrypted); + if (noCryptoAnnotationFound()) { + displayNotEncrypted(); + return; } + + switch (cryptoAnnotation.getErrorType()) { + case NONE: { + if (cryptoAnnotation.wasEncrypted()) { + displayEncrypted(); + } else { + displayNotEncrypted(); + } + break; + } + case CRYPTO_API_RETURNED_ERROR: { + displayEncryptionError(); + break; + } + case ENCRYPTED_BUT_INCOMPLETE: { + displayIncompleteEncryptedPart(); + break; + } + case SIGNED_BUT_INCOMPLETE: { + displayNotEncrypted(); + break; + } + } + } + + private boolean noCryptoAnnotationFound() { + return cryptoAnnotation == null; + } + + private void displayEncrypted() { + setEncryptionImageAndTextColor(CryptoState.ENCRYPTED); + resultEncryptionText.setText(R.string.openpgp_result_encrypted); + } + + private void displayNotEncrypted() { + setEncryptionImageAndTextColor(CryptoState.NOT_ENCRYPTED); + resultEncryptionText.setText(R.string.openpgp_result_not_encrypted); + } + + private void displayEncryptionError() { + setEncryptionImageAndTextColor(CryptoState.INVALID); + + OpenPgpError error = cryptoAnnotation.getError(); + String text; + if (error == null) { + text = context.getString(R.string.openpgp_unknown_error); + } else { + text = context.getString(R.string.openpgp_error, error.getMessage()); + } + resultEncryptionText.setText(text); + } + + private void displayIncompleteEncryptedPart() { + setEncryptionImageAndTextColor(CryptoState.UNAVAILABLE); + resultEncryptionText.setText(R.string.crypto_incomplete_message); } private void initializeSignatureHeader() { initializeSignatureButton(); + if (noCryptoAnnotationFound()) { + displayNotSigned(); + return; + } + + switch (cryptoAnnotation.getErrorType()) { + case CRYPTO_API_RETURNED_ERROR: + case NONE: { + displayVerificationResult(); + break; + } + case ENCRYPTED_BUT_INCOMPLETE: + case SIGNED_BUT_INCOMPLETE: { + displayIncompleteSignedPart(); + break; + } + } + } + + private void displayIncompleteSignedPart() { + setSignatureImageAndTextColor(CryptoState.UNAVAILABLE); + resultSignatureText.setText(R.string.crypto_incomplete_message); + hideSignatureLayout(); + } + + private void displayVerificationResult() { + OpenPgpSignatureResult signatureResult = cryptoAnnotation.getSignatureResult(); if (signatureResult == null) { displayNotSigned(); return; @@ -117,7 +194,9 @@ public class OpenPgpHeaderView extends LinearLayout { } private void initializeSignatureButton() { - if (isSignatureButtonUsed()) { + if (noCryptoAnnotationFound()) { + hideSignatureButton(); + } else if (isSignatureButtonUsed()) { setSignatureButtonClickListener(); } else { hideSignatureButton(); @@ -125,10 +204,11 @@ public class OpenPgpHeaderView extends LinearLayout { } private boolean isSignatureButtonUsed() { - return pendingIntent != null; + return cryptoAnnotation.getPendingIntent() != null; } private void setSignatureButtonClickListener() { + final PendingIntent pendingIntent = cryptoAnnotation.getPendingIntent(); resultSignatureButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -172,7 +252,7 @@ public class OpenPgpHeaderView extends LinearLayout { setSignatureImageAndTextColor(CryptoState.UNKNOWN_KEY); resultSignatureText.setText(R.string.openpgp_result_signature_missing_key); - setUserId(signatureResult); + setUserId(cryptoAnnotation.getSignatureResult()); showSignatureButtonWithTextIfNecessary(R.string.openpgp_result_action_lookup); showSignatureLayout(); } @@ -199,7 +279,7 @@ public class OpenPgpHeaderView extends LinearLayout { } private void displayUserIdAndSignatureButton() { - setUserId(signatureResult); + setUserId(cryptoAnnotation.getSignatureResult()); showSignatureButtonWithTextIfNecessary(R.string.openpgp_result_action_show); showSignatureLayout(); } diff --git a/k9mail/src/main/res/values-cs/strings.xml b/k9mail/src/main/res/values-cs/strings.xml index 63fa93391..4a05dd987 100644 --- a/k9mail/src/main/res/values-cs/strings.xml +++ b/k9mail/src/main/res/values-cs/strings.xml @@ -912,7 +912,6 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte Úspěšné dešifrování a platný podpis ale bez certifikátu Úspěšné dešifrování, ale chybí veřejný klíč Vyhledávám chybějící klíč - Chyba OpenPGP: Id uživatele Použít klientský certifikát diff --git a/k9mail/src/main/res/values-de/strings.xml b/k9mail/src/main/res/values-de/strings.xml index a9e38946d..d006470e8 100644 --- a/k9mail/src/main/res/values-de/strings.xml +++ b/k9mail/src/main/res/values-de/strings.xml @@ -906,7 +906,6 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc Erfolgreiche Entschlüsselung und gültige, aber nicht beglaubigte Signatur Erfolgreiche Entschlüsselung, aber fehlender öffentlicher Schlüssel Schlage fehlenden Schlüssel nach - OpenPGP Fehler: Benutzer-ID Client-Zertifikat verwenden diff --git a/k9mail/src/main/res/values-el/strings.xml b/k9mail/src/main/res/values-el/strings.xml index 6080fbe99..bfbebd428 100644 --- a/k9mail/src/main/res/values-el/strings.xml +++ b/k9mail/src/main/res/values-el/strings.xml @@ -870,7 +870,6 @@ Επιτυχής αποκρυπτογράφηση και έγκυρη υπογραφή αλλά χωρίς πιστοποίηση Επιτυχής αποκρυπτογράφηση αλλά απόν δημόσιο κλειδί Εύρεση κλειδιού που λείπει - Σφάλμα OpenPGP: Ταυτότητα χρήστη diff --git a/k9mail/src/main/res/values-es/strings.xml b/k9mail/src/main/res/values-es/strings.xml index 08eef109b..e40c1ece4 100644 --- a/k9mail/src/main/res/values-es/strings.xml +++ b/k9mail/src/main/res/values-es/strings.xml @@ -895,7 +895,6 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades Descifrado correctamente y firma válida pero sin certificar Descifrado correctamente pero no se encuentra la clave pública Buscar la clave no encontrada - Error OpenPGP: Id de usuario Usar certificado de cliente diff --git a/k9mail/src/main/res/values-et/strings.xml b/k9mail/src/main/res/values-et/strings.xml index 1250fe863..9899a1716 100644 --- a/k9mail/src/main/res/values-et/strings.xml +++ b/k9mail/src/main/res/values-et/strings.xml @@ -845,7 +845,6 @@ Palun saada infot probleemidest, soovitavatest lisafunktsioonidest ja küsi küs Edukalt dekrüpteeritud ja kehtiv allkiri kuid sertifitseerimata Edukalt dekrüpteeritud kuid puudub avalik võti Otsi puuduvat võtit - OpenPGP viga: Kasutaja Id diff --git a/k9mail/src/main/res/values-fi/strings.xml b/k9mail/src/main/res/values-fi/strings.xml index 3c4d805c5..18d425047 100644 --- a/k9mail/src/main/res/values-fi/strings.xml +++ b/k9mail/src/main/res/values-fi/strings.xml @@ -906,7 +906,6 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen Salauksen purku onnistui ja kelvollinen, mutta varmentamaton allekirjoitus Salauksen purku onnistui, mutta julkinen avain puuttuu Etsi puuttuva avain - OpenPGP-virhe: Käyttäjätunniste Käytä asiakasvarmennetta diff --git a/k9mail/src/main/res/values-fr/strings.xml b/k9mail/src/main/res/values-fr/strings.xml index b77ec472c..120740f92 100644 --- a/k9mail/src/main/res/values-fr/strings.xml +++ b/k9mail/src/main/res/values-fr/strings.xml @@ -904,7 +904,6 @@ jusqu\'à %d de plus Déchiffrement réussi et signature valide mais non certifiée Déchiffrement réussi mais clef publique manquante Rechercher la clef manquante - Erreur OpenPGP : ID utilisateur Utiliser le certificat client diff --git a/k9mail/src/main/res/values-hr/strings.xml b/k9mail/src/main/res/values-hr/strings.xml index 432df995c..210deae14 100644 --- a/k9mail/src/main/res/values-hr/strings.xml +++ b/k9mail/src/main/res/values-hr/strings.xml @@ -902,7 +902,6 @@ Molimo vas pošaljite izvještaj o manama, učestvujte u novim značajkama i pos Uspješna dekripcija i važeći potpis ali ne certificiran Uspješna dekripcija ali nedostaje javni kjuč Potraži nedostajući ključ - OpenPGP Greška: Korisnički ID Koristi certifikat klijenta diff --git a/k9mail/src/main/res/values-hu/strings.xml b/k9mail/src/main/res/values-hu/strings.xml index 929d7c2ef..a711516a8 100644 --- a/k9mail/src/main/res/values-hu/strings.xml +++ b/k9mail/src/main/res/values-hu/strings.xml @@ -882,7 +882,6 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd Titkosítás sikeresen feloldva és az aláírás érvényes, de nem tanúsított Titkosítás sikeresen feloldva, de hiányzik a nyilvános kulcs Hiányzó kulcs keresése - OpenPGP hiba: Felhasználói Id Ügyfél tanúsítvány használata diff --git a/k9mail/src/main/res/values-it/strings.xml b/k9mail/src/main/res/values-it/strings.xml index 9f8cea7a2..0c4ed2e0b 100644 --- a/k9mail/src/main/res/values-it/strings.xml +++ b/k9mail/src/main/res/values-it/strings.xml @@ -903,7 +903,6 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni Decifratura avvenuta e firma valida ma non certificata Decifratura avvenuta ma chiave pubblica mancante Cerca chiave mancante - Errore OpenPGP: ID utente Usa certificato client diff --git a/k9mail/src/main/res/values-ja/strings.xml b/k9mail/src/main/res/values-ja/strings.xml index b877e2eb6..d56fd162f 100644 --- a/k9mail/src/main/res/values-ja/strings.xml +++ b/k9mail/src/main/res/values-ja/strings.xml @@ -886,7 +886,6 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ 解読と署名確認(証明書なし)成功 解読成功。ただし、公開鍵なし 公開鍵調査 - OpenPGP エラー: ユーザID クライアント証明書を使う diff --git a/k9mail/src/main/res/values-lv/strings.xml b/k9mail/src/main/res/values-lv/strings.xml index 28189c615..0d6abbfe1 100644 --- a/k9mail/src/main/res/values-lv/strings.xml +++ b/k9mail/src/main/res/values-lv/strings.xml @@ -902,7 +902,6 @@ pat %d vairāk Atkodēšana sekmīga un paraksts derīgs, bet nesertificēts Atkodēšana sekmīga bet trūkst publiskās atslēgas Meklēt trūkstošo atslēgu - OpenPGP kļūda: Lietotāja ID Izmantot klienta sertifikātu diff --git a/k9mail/src/main/res/values-nb/strings.xml b/k9mail/src/main/res/values-nb/strings.xml index 182fb1330..7af017f0f 100644 --- a/k9mail/src/main/res/values-nb/strings.xml +++ b/k9mail/src/main/res/values-nb/strings.xml @@ -899,7 +899,6 @@ Vis neste melding som standard etter meldingssletting Vellykket dekryptering og gyldig signatur, men ikke sertifisert Vellykket dekryptering, men mangler offentlig nøkkel Se etter manglende nøkkel - OpenPGP feil: BrukerID Bruk klientsertifikat diff --git a/k9mail/src/main/res/values-nl/strings.xml b/k9mail/src/main/res/values-nl/strings.xml index d672d7b86..c4b356b4b 100644 --- a/k9mail/src/main/res/values-nl/strings.xml +++ b/k9mail/src/main/res/values-nl/strings.xml @@ -893,7 +893,6 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op Ongeldige pgp handtekening Geen publieke sleutel voor deze handtekening Zoek de missende sleutel - OpenPGP Fout: Gebruikers-id Gebruik cliënt certificaat diff --git a/k9mail/src/main/res/values-pl/strings.xml b/k9mail/src/main/res/values-pl/strings.xml index 4b39db55b..a55586d52 100644 --- a/k9mail/src/main/res/values-pl/strings.xml +++ b/k9mail/src/main/res/values-pl/strings.xml @@ -857,7 +857,6 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z Zapisywanie szkicu Pobieranie załącznika… - Błąd OpenPGP: ID użytkownika Zaawansowane ustawienia diff --git a/k9mail/src/main/res/values-pt-rBR/strings.xml b/k9mail/src/main/res/values-pt-rBR/strings.xml index 483443b44..2cc7de995 100644 --- a/k9mail/src/main/res/values-pt-rBR/strings.xml +++ b/k9mail/src/main/res/values-pt-rBR/strings.xml @@ -874,7 +874,6 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça Desencriptação realizada com sucesso e assinatura válida mas não certificada Desencriptação realizada mas falta chave pública Procurar chave faltando - Error do OpenPGP User Id diff --git a/k9mail/src/main/res/values-ru/strings.xml b/k9mail/src/main/res/values-ru/strings.xml index 9eacb0926..1ba1c8238 100644 --- a/k9mail/src/main/res/values-ru/strings.xml +++ b/k9mail/src/main/res/values-ru/strings.xml @@ -900,7 +900,6 @@ K-9 Mail — почтовый клиент для Android. Дешифрование выполнено, подпись действительна, но не проверена Дешифрование выполнено, но отсутствует открытый ключ Поиск отсутствующего ключа - Ошибка OpenPGP: ID пользователя Использовать сертификат клиента diff --git a/k9mail/src/main/res/values-sk/strings.xml b/k9mail/src/main/res/values-sk/strings.xml index 40caf6221..c1103edcd 100644 --- a/k9mail/src/main/res/values-sk/strings.xml +++ b/k9mail/src/main/res/values-sk/strings.xml @@ -889,7 +889,6 @@ Prosím, nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte Úspešne dešifrované a platný podpis, ale necertifikovaný Úspešne dešifrované, ale chýbajúci verejný kľúč Vyhľadať chýbajúci kľúč - Chyba OpenPGP: ID používateľa Použiť klientský certifikát diff --git a/k9mail/src/main/res/values-sv/strings.xml b/k9mail/src/main/res/values-sv/strings.xml index 0e2e6f6f0..9424624c4 100644 --- a/k9mail/src/main/res/values-sv/strings.xml +++ b/k9mail/src/main/res/values-sv/strings.xml @@ -873,7 +873,6 @@ Anmäl fel, hjälp till med nya funktioner och ställ frågor på Lyckad dekryptering och giltig signatur men ocertifierad Lyckad dekryptering men offentlig nyckel saknas Sök nyckel som saknas - OpenPGP Error: Användar-ID diff --git a/k9mail/src/main/res/values-tr/strings.xml b/k9mail/src/main/res/values-tr/strings.xml index a1f8ae820..13d09a515 100644 --- a/k9mail/src/main/res/values-tr/strings.xml +++ b/k9mail/src/main/res/values-tr/strings.xml @@ -896,7 +896,6 @@ Lütfen hata raporlarınızı, istediğiniz yeni özellikleri ve sorularınızı Şifre çözme başarılı ve imza geçerli ancak sertifikalı değil Şifre çözme başarılı ancak kamusal anahtar eksik Kayıp anahtarı bul - OpenPGP Hatası: Kullanıcı Kimliği İstemci sertifikası kullan diff --git a/k9mail/src/main/res/values-zh-rCN/strings.xml b/k9mail/src/main/res/values-zh-rCN/strings.xml index 754d8e367..652c2e6cb 100644 --- a/k9mail/src/main/res/values-zh-rCN/strings.xml +++ b/k9mail/src/main/res/values-zh-rCN/strings.xml @@ -890,7 +890,6 @@ K-9改进的功能包括: 已成功解密且签名有效,但未验证 已成功解密,但没有公钥 查找缺失的公钥 - OpenPGP 错误: 用户标识 使用客户端证书 diff --git a/k9mail/src/main/res/values/strings.xml b/k9mail/src/main/res/values/strings.xml index efcd026e8..61c314837 100644 --- a/k9mail/src/main/res/values/strings.xml +++ b/k9mail/src/main/res/values/strings.xml @@ -1114,7 +1114,8 @@ Please submit bug reports, contribute new features and ask questions at Successful decryption and valid signature but uncertified Successful decryption but missing public key Lookup missing key - OpenPGP Error: + OpenPGP Error: %s + Unknown OpenPGP Error User Id "Not Signed" @@ -1141,4 +1142,8 @@ Please submit bug reports, contribute new features and ask questions at "Includes message titled \"%s\" containing: " "Includes untitled message containing: " + + Incomplete message + + Click \'Download complete message\' to allow decryption.