Merge remote-tracking branch 'upstream/master'

Conflicts:
	src/com/fsck/k9/mail/transport/SmtpTransport.java
This commit is contained in:
cketti 2014-09-12 07:11:32 +02:00
commit 601e2880ac
55 changed files with 1857 additions and 816 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="21007"
android:versionName="4.904" package="com.fsck.k9"
android:versionCode="21008"
android:versionName="4.905" package="com.fsck.k9"
>
<uses-sdk
android:minSdkVersion="15"

View File

@ -5,10 +5,17 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:0.12.2'
classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0'
}
}
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'checkstyle'
repositories {
jcenter()
}
dependencies {
compile project(':plugins:Android-PullToRefresh:library')
@ -19,10 +26,25 @@ dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
project.ext.preDexLibs = !project.hasProperty('disablePreDex')
subprojects {
project.plugins.whenPluginAdded { plugin ->
if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name) ||
"com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
}
}
}
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
dexOptions {
preDexLibraries = rootProject.ext.preDexLibs
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
@ -51,6 +73,16 @@ android {
}
}
check.dependsOn 'checkstyle'
task checkstyle(type: Checkstyle) {
ignoreFailures = true
configFile file("config/checkstyle/checkstyle.xml")
source 'src'
include '**/*.java'
classpath = files()
}
task testsOnJVM(type :GradleBuild, dependsOn: assemble) {
buildFile = 'tests-on-jvm/build.gradle'
tasks = ['test']

View File

@ -0,0 +1,149 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!--
If you set the basedir property below, then all reported file
names will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker
<property name="basedir" value="${basedir}"/>
-->
<property name="severity" value="info"/>
<!--
<module name="SuppressionFilter">
<property name="file" value="${checkstyle.suppressions.file}"/>
</module>
-->
<module name="FileTabCharacter">
<property name="eachLine" value="false"/>
</module>
<module name="NewlineAtEndOfFile"/>
<module name="TreeWalker">
<property name="tabWidth" value="4"/>
<module name="AvoidStarImport"/>
<module name="ConstantName">
<property name="severity" value="warning"/>
</module>
<module name="EmptyBlock">
<property name="option" value="text"/>
<property name="tokens" value="LITERAL_CATCH"/>
<property name="severity" value="warning"/>
</module>
<module name="EmptyForIteratorPad"/>
<module name="EqualsHashCode">
<property name="severity" value="warning"/>
</module>
<module name="OneStatementPerLine"/>
<!-- module name="IllegalCatch"/ -->
<module name="IllegalImport">
<property name="severity" value="warning"/>
</module>
<module name="IllegalThrows">
<property name="severity" value="warning"/>
</module>
<module name="InnerAssignment">
<property name="severity" value="warning"/>
</module>
<module name="LeftCurly">
<property name="option" value="eol"/>
</module>
<module name="LineLength">
<property name="max" value="140"/>
</module>
<module name="LocalFinalVariableName">
<property name="severity" value="warning"/>
</module>
<module name="LocalVariableName">
<property name="severity" value="warning"/>
</module>
<module name="MemberName">
<property name="severity" value="warning"/>
</module>
<module name="MethodName">
<property name="severity" value="warning"/>
</module>
<module name="MethodParamPad"/>
<module name="ModifierOrder"/>
<module name="NeedBraces"/>
<module name="NoWhitespaceAfter">
<property name="tokens" value="BNOT"/>
<property name="tokens" value="DEC"/>
<property name="tokens" value="DOT"/>
<property name="tokens" value="INC"/>
<property name="tokens" value="LNOT"/>
<property name="tokens" value="UNARY_MINUS"/>
<property name="tokens" value="UNARY_PLUS"/>
</module>
<module name="NoWhitespaceBefore"/>
<module name="NoWhitespaceBefore">
<property name="tokens" value="DOT"/>
<property name="allowLineBreaks" value="true"/>
</module>
<module name="PackageName">
<property name="severity" value="warning"/>
</module>
<module name="ParameterName">
<property name="severity" value="warning"/>
</module>
<module name="ParenPad"/>
<module name="TypecastParenPad"/>
<module name="RedundantImport"/>
<module name="RedundantModifier"/>
<module name="RightCurly">
<property name="option" value="alone"/>
<property name="tokens" value="LITERAL_ELSE"/>
</module>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="TypeName">
<property name="severity" value="warning"/>
</module>
<module name="UnusedImports"/>
<module name="UpperEll"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="GenericWhitespace"/>
<!--
<module name="MissingSwitchDefault"/>
<module name="MagicNumber"/>
<module name="Indentation"/>
<module name="OperatorWrap">
<property name="option" value="eol"/>
</module>
<module name="EqualsAvoidNull">
<property name="severity" value="warning"/>
</module>
-->
<module name="ParameterAssignment">
<property name="severity" value="warning"/>
</module>
<module name="DefaultComesLast"/>
<module name="MissingDeprecated"/>
<module name="MissingOverride">
<property name="javaFiveCompatibility" value="true"/>
</module>
<module name="OuterTypeFilename">
<property name="severity" value="warning"/>
</module>
</module>
</module>

BIN
images/feature_graphic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

1474
images/feature_graphic.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
buildToolsVersion '20.0.0'
sourceSets {
main {

View File

@ -39,16 +39,4 @@
android:title="@string/read_receipt"
android:icon="?attr/iconActionRequestReadReceipt"
/>
<item
android:id="@+id/add_attachment_image"
android:title="@string/add_attachment_action_image"
android:icon="?attr/iconActionAddAttachment"
android:visible="false"
/>
<item
android:id="@+id/add_attachment_video"
android:title="@string/add_attachment_action_video"
android:icon="?attr/iconActionAddAttachment"
android:visible="false"
/>
</menu>

View File

@ -136,8 +136,6 @@ Si us plau, envia\'ns els errors, contribueix a millorar-lo a
<string name="read_receipt_enabled">Es farà una petició per la confirmació de lectura</string>
<string name="read_receipt_disabled">No es faran més peticions per les confirmacions de lectura</string>
<string name="add_attachment_action">Afegeix adjunt</string>
<string name="add_attachment_action_image">Afegeix adjunt (Imatge)</string>
<string name="add_attachment_action_video">Afegeix adjunt (Vídeo)</string>
<string name="empty_trash_action">Buida paperera</string>
<string name="expunge_action">Elimina</string>
<string name="clear_local_folder_action">Neteja missatges locals</string>
@ -705,13 +703,7 @@ Si us plau, envia\'ns els errors, contribueix a millorar-lo a
<string name="font_size_medium">Mitjà</string>
<string name="font_size_large">Gran</string>
<string name="font_size_larger">Més gran</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Comprova \"Configuració\" -&gt; \"Utilitza la galeria la Galeria d\'errors\" per poder adjuntar imatges o vídeos utilitzant la Galeria 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Utilitza \"Afegeix adjunt (Imatge)\" or \"Afegeix adjunt (Vídeo)\" per afegir imatges o vídeos amb la Galeria 3D.</string>
<string name="miscellaneous_preferences">Miscel·lània</string>
<string name="misc_preferences_attachment_title">Utilitza la Galeria d\'errors</string>
<string name="misc_preferences_attachment_description">Mostra els botons per afegir adjunts d\'imatge/vídeo (per treballar amb els errors de la Galeria 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">No s\'ha trobat cap aplicació idònia per a aquesta acció.</string>
<string name="error_apg_version_not_supported">Versió APG instal·lada no suportada.</string>

View File

@ -137,8 +137,6 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
<string name="read_receipt_enabled">Potvrzení o přečtení bude vyžadováno</string>
<string name="read_receipt_disabled">Potvrzení o přečtení nebude vyžadováno</string>
<string name="add_attachment_action">Přidat přílohu</string>
<string name="add_attachment_action_image">Přidat přílohu (obrázek)</string>
<string name="add_attachment_action_video">Přidat přílohu (video)</string>
<string name="empty_trash_action">Vysypat koš</string>
<string name="expunge_action">Vymazat</string>
<string name="clear_local_folder_action">Vyčistit místní zprávy</string>
@ -725,13 +723,7 @@ Posílejte prosím chybová hlášení, přispívejte novými funkcemi a ptejte
<string name="font_size_medium">Střední</string>
<string name="font_size_large">Velký</string>
<string name="font_size_larger">Největší</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Zaškrtněte \"Možnosti\" -&gt; \"Obejít chybu Galerie\", abyste byli schopni připojit obrázky nebo video pomocí Galerie 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Použijte \"Přidat přílohu (obrázek)\" nebo \"Přidat přílohu (video)\" k připojení obrázků a videa pomocí Galerie 3D.</string>
<string name="miscellaneous_preferences">Různé</string>
<string name="misc_preferences_attachment_title">Obejít chybu Galerie</string>
<string name="misc_preferences_attachment_description">Zobrazit tlačítka k připojení obrázku/videa jako přílohy (kvůli chybě v Galerie 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Pro tuto akci nebyla nalezena žádná vhodná aplikace.</string>
<string name="error_apg_version_not_supported">Nainstalovaná verze APG není podporována.</string>

View File

@ -133,8 +133,6 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
<string name="read_receipt_enabled">Der vil blive anmodet om kvittering for modtagelse</string>
<string name="read_receipt_disabled">Der vil ikke blive anmodet om kvittering for modtagelse</string>
<string name="add_attachment_action">Vedhæft fil</string>
<string name="add_attachment_action_image">Vedhæft (billede)</string>
<string name="add_attachment_action_video">Vedhæft (Video)</string>
<string name="empty_trash_action">Tøm papirkurv</string>
<string name="expunge_action">Ryd helt</string>
<string name="clear_local_folder_action">Fjern lokalt lagrede mails</string>
@ -699,13 +697,7 @@ Vær venlig at sende fejlrapporter, anmodning om nye funktioner, og spørgsmål
<string name="font_size_medium">Stor</string>
<string name="font_size_large">Større</string>
<string name="font_size_larger">Størst</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Kontroller \"Indstillinger\" -&gt; \"Benyt Gallery bug work-around\" for at kunne vedhæfte billeder og videoer med Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Benyt \"Tilføj vedhæft (billede)\" eller \"Tilføj vedhæftning (video)\" for at kunne vedhæfte billeder eller videoer med Gallery 3D.</string>
<string name="miscellaneous_preferences">Diverse</string>
<string name="misc_preferences_attachment_title">Benyt Gallery bug work-around</string>
<string name="misc_preferences_attachment_description">Vis knapper til vedhæftning af billede/video (måde at omgå fejl i Gallery 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Kunne ikke finde noget program som kan udføre denne handling.</string>
<string name="error_apg_version_not_supported">Den installerede version af APG understørttes ikke.</string>

View File

@ -137,8 +137,6 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc
<string name="read_receipt_enabled">Eine Empfangsbestätigung wird angefordert</string>
<string name="read_receipt_disabled">Es wird keine Empfangsbestätigung angefordert</string>
<string name="add_attachment_action">Anhang hinzufügen</string>
<string name="add_attachment_action_image">Anhang hinzufügen (Bild)</string>
<string name="add_attachment_action_video">Anhang hinzufügen (Video)</string>
<string name="empty_trash_action">Papierkorb leeren</string>
<string name="expunge_action">Bereinigen (Expunge)</string>
<string name="clear_local_folder_action">Lokale Nachrichten löschen</string>
@ -739,13 +737,7 @@ Um Fehler zu melden, neue Funktionen vorzuschlagen oder Fragen zu stellen, besuc
<string name="font_size_medium">Mittel</string>
<string name="font_size_large">Groß</string>
<string name="font_size_larger">Größer</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Wählen Sie \'Einstellungen\' -&gt; \'Galerie-Workaround aktivieren\', um Bilder oder Videos mit Hilfe der 3D-Galerie hinzufügen zu können.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Verwenden Sie \'Anhang hinzufügen (Bild)\' oder \'Anhang hinzufügen (Video)\', um Bilder oder Videos mit der 3D-Galerie hinzuzufügen.</string>
<string name="miscellaneous_preferences">Verschiedenes</string>
<string name="misc_preferences_attachment_title">Galerie-Workaround</string>
<string name="misc_preferences_attachment_description">Schaltflächen zum Hinzufügen von Bild- und Video-Anhängen anzeigen (um Fehler in 3D-Galerie zu umgehen)</string>
<!--APG related-->
<string name="error_activity_not_found">Keine geeignete Anwendung für diese Aktion gefunden.</string>
<string name="error_apg_version_not_supported">Die installierte APG-Version wird nicht unterstützt.</string>

View File

@ -135,8 +135,6 @@
<string name="read_receipt_enabled">Θα ζητηθεί απόδειξη ανάγνωσης</string>
<string name="read_receipt_disabled">Δεν θα ζητηθεί απόδειξη ανάγνωσης</string>
<string name="add_attachment_action">Προσθήκη συνημμένου</string>
<string name="add_attachment_action_image">Προσθήκη συνημμένης εικόνας</string>
<string name="add_attachment_action_video">Προσθήκη συνημμένου βίντεο</string>
<string name="empty_trash_action">Άδειασμα σκουπιδιών</string>
<string name="expunge_action">Εξάλειψη</string>
<string name="clear_local_folder_action">Καθαρισμός τοπικών μηνυμάτων</string>
@ -716,13 +714,7 @@
<string name="font_size_medium">Μεσαίο</string>
<string name="font_size_large">Μεγάλο</string>
<string name="font_size_larger">Μεγαλύτερο</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Ελέγξτε \'Ρυθμίσεις\' -&gt; \'Παράκαμψη σφάλματος πινακοθήκης\' για να μπορείτε να συνάψετε εικόνες ή βίντεο με το Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Χρήση \'Προσθήκη συνημμένου (Εικόνα)\' ή \'Προσθήκη συνημμένου (Βίντεο)\' για να συνάψετε εικόνες ή βίντεο με το Gallery 3D.</string>
<string name="miscellaneous_preferences">Διάφορα</string>
<string name="misc_preferences_attachment_title">Παράκαμψη σφάλματος πινακοθήκης</string>
<string name="misc_preferences_attachment_description">Προβολή πλήκτρων για προσθήκη συνημμένων εικόνας/βίντεο (παράκαμψη του σφάλματος Gallery 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Δεν βρέθηκε κατάλληλη εφαρμογή για αυτή την ενέργεια.</string>
<string name="error_apg_version_not_supported">Η εγκατεστημένη έκδοση APG δεν υποστηρίζεται.</string>

View File

@ -136,8 +136,6 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades
<string name="read_receipt_enabled">Se solicitará confirmación de lectura</string>
<string name="read_receipt_disabled">No se solicitará confirmación de lectura</string>
<string name="add_attachment_action">Añadir adjunto</string>
<string name="add_attachment_action_image">Añadir adjunto (imagen)</string>
<string name="add_attachment_action_video">Añadir adjunto (vídeo)</string>
<string name="empty_trash_action">Vaciar Papelera</string>
<string name="expunge_action">Purgar</string>
<string name="clear_local_folder_action">Borrar mensajes locales</string>
@ -715,13 +713,7 @@ Por favor, envía los errores detectados, contribuye con nuevas funcionalidades
<string name="font_size_medium">Mediana</string>
<string name="font_size_large">Grande</string>
<string name="font_size_larger">Muy Grande</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Comprobar \"Configuración\" -&gt; \"Usar Galería\" para poder adjuntar imágenes y vídeos utilizando la Galería 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Usar \"Añadir adjunto (Imagen)\" o \"Añadir adjunto (Vídeo)\" para Añadir imágenes o Vídeos con Galería 3D</string>
<string name="miscellaneous_preferences">Varios</string>
<string name="misc_preferences_attachment_title">Usar galería</string>
<string name="misc_preferences_attachment_description">Mostrar botones para Añadir adjuntos de imagen/vídeo</string>
<!--APG related-->
<string name="error_activity_not_found">No existe aplicación para realizar esta acción.</string>
<string name="error_apg_version_not_supported">No se admite esta versión de APG.</string>

View File

@ -137,8 +137,6 @@ Palun saada infot probleemidest, soovitavatest lisafunktsioonidest ja küsi küs
<string name="read_receipt_enabled">Taotleb lugemise kinnitust</string>
<string name="read_receipt_disabled">Ei taotle lugemise kinnitust</string>
<string name="add_attachment_action">Lisa manus</string>
<string name="add_attachment_action_image">Lisa manus (pilt)</string>
<string name="add_attachment_action_video">Lisa manus (video)</string>
<string name="empty_trash_action">Tühjenda prügikast</string>
<string name="expunge_action">Pühi ära</string>
<string name="clear_local_folder_action">Puhasta kohalikud sõnumid</string>
@ -704,8 +702,6 @@ Palun saada infot probleemidest, soovitavatest lisafunktsioonidest ja küsi küs
<string name="font_size_medium">Keskmine</string>
<string name="font_size_large">Suur</string>
<string name="font_size_larger">Suurem</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="miscellaneous_preferences">Muu</string>
<!--APG related-->
<string name="error_apg_version_not_supported">Installitud APG versioon ei ole toetatud.</string>

View File

@ -136,8 +136,6 @@ Arazoen berri emateko, ezaugarri berriak gehitzeko eta galderak egiteko
<string name="read_receipt_enabled">Irakurragiria eskatuko da</string>
<string name="read_receipt_disabled">Ez da irakurragiria eskatuko</string>
<string name="add_attachment_action">Eranskina gehitu</string>
<string name="add_attachment_action_image">Eranskina gehitu (Irudia)</string>
<string name="add_attachment_action_video">Eranskina gehitu (Bideoa)</string>
<string name="empty_trash_action">Zakarrontzia hustu</string>
<string name="expunge_action">Suntsitu</string>
<string name="clear_local_folder_action">Mezu lokalak garbitu</string>
@ -704,13 +702,7 @@ Arazoen berri emateko, ezaugarri berriak gehitzeko eta galderak egiteko
<string name="font_size_medium">Ertaina</string>
<string name="font_size_large">Handia</string>
<string name="font_size_larger">Handiagoa</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">\"Ezarpenak\" -&gt; \"Galeriako arazoa sahiestu\" gaitu 3D galeriako irudi edo bideoak erantsi ahal izateko.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">\"Eranskina gehitu (Irudia)\" edo \"Eranskina gehitu (Video)\" erabili 3D galeriatik irudi edo bideoak eransteko.</string>
<string name="miscellaneous_preferences">Bestelakoak</string>
<string name="misc_preferences_attachment_title">Galeriako arazoa sahiestu</string>
<string name="misc_preferences_attachment_description">Irudi/bideoak eransteko botoiak ikusi (3D galeriako arazoa sahiesteko)</string>
<!--APG related-->
<string name="error_activity_not_found">Ez da honetarako aplikaziorik topatu.</string>
<string name="error_apg_version_not_supported">Instalatutako APG bertsioa ezin da erabili.</string>

View File

@ -138,8 +138,6 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
<string name="read_receipt_enabled">Vastaanottokuittaus pyydetään</string>
<string name="read_receipt_disabled">Ei pyydä lukukuittausta</string>
<string name="add_attachment_action">Lisää liite</string>
<string name="add_attachment_action_image">Lisää liite (Kuva)</string>
<string name="add_attachment_action_video">Video</string>
<string name="empty_trash_action">Tyhjennä roskakori</string>
<string name="expunge_action">Poista</string>
<string name="clear_local_folder_action">Poista paikalliset viestit</string>
@ -741,13 +739,7 @@ Virheraportit, osallistuminen projektiin ja kysymykset: Mene osoitteeseen
<string name="font_size_medium">Keskikoko</string>
<string name="font_size_large">Suuri</string>
<string name="font_size_larger">Suurin</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Tarkista Asetukset -&gt; Ota käyttöön Gallery-ohjelmavirheen kierto mahdollistaaksesi kuvien tai videoiden liittämisen Gallery 3D -ohjelmalla.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Käytä Lisää liite (kuva)- tai Lisää liite (video) -toimintoa Gallery 3D:n kuvan tai videon liittämiseksi.</string>
<string name="miscellaneous_preferences">Muut</string>
<string name="misc_preferences_attachment_title">Ota käyttöön Gallery -ohjelmavirheen kierto</string>
<string name="misc_preferences_attachment_description">Näytä painikkeet liitteen (video/kuva) lisäämiseksi (Gallery 3D -ohjelmavirheen kiertäminen)</string>
<!--APG related-->
<string name="error_activity_not_found">Toiminnolle ei löytynyt sopivaa ohjelmaa.</string>
<string name="error_apg_version_not_supported">Asennettua APG-versiota ei tueta.</string>

View File

@ -135,8 +135,6 @@ Veuillez envoyer les rapports de bogues, suggérer de nouvelles fonctions et pos
<string name="read_receipt_enabled">Un accusé de lecture sera demandé</string>
<string name="read_receipt_disabled">Un accusé de lecture ne sera pas demandé</string>
<string name="add_attachment_action">Ajouter une pièce jointe</string>
<string name="add_attachment_action_image">Joindre une image</string>
<string name="add_attachment_action_video">Joindre une vidéo</string>
<string name="empty_trash_action">Vider la corbeille</string>
<string name="expunge_action">Supprimer</string>
<string name="clear_local_folder_action">Effacer les messages locaux</string>
@ -739,13 +737,7 @@ jusqu\'à <xliff:g id="messages_to_load">%d</xliff:g> de plus</string>
<string name="font_size_medium">Moyen</string>
<string name="font_size_large">Grand</string>
<string name="font_size_larger">Plus grand</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Cochez «\u00A0Paramètres\u00A0» &gt; «\u00A0Utiliser le contournement du bogue de la Galerie\u00A0» pour être capable d\'attacher des images ou des vidéos en utilisant Galerie 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Utiliser «\u00A0Joindre une image\u00A0» ou «\u00A0Joindre une vidéo\u00A0» pour joindre des images ou vidéos avec Galerie 3D</string>
<string name="miscellaneous_preferences">Divers</string>
<string name="misc_preferences_attachment_title">Utiliser le contournement du bogue de la Galerie</string>
<string name="misc_preferences_attachment_description">Afficher les boutons pour joindre des images ou des vidéos (pour contourner le bogue de la Galerie 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Aucune application adéquate n\'a été trouvée pour cette action.</string>
<string name="error_apg_version_not_supported">La version installée d\'APG n\'est pas prise en charge.</string>

View File

@ -134,8 +134,6 @@ Envía informes de erro, contribúe con novas funcionalidades e pregunta o que d
<string name="read_receipt_enabled">Pedirase confirmación de lectura</string>
<string name="read_receipt_disabled">Non se pedirá confirmación de lectura</string>
<string name="add_attachment_action">Engadir anexo</string>
<string name="add_attachment_action_image">Engadir anexo (imaxe)</string>
<string name="add_attachment_action_video">Engadir anexo (vídeo)</string>
<string name="empty_trash_action">Baleirar papeleira</string>
<string name="expunge_action">Purgar</string>
<string name="clear_local_folder_action">Limpar mensaxes locais</string>
@ -695,11 +693,7 @@ Envía informes de erro, contribúe con novas funcionalidades e pregunta o que d
<string name="font_size_medium">Mediana</string>
<string name="font_size_large">Grande</string>
<string name="font_size_larger">Moi grande</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Usar \"Engadir anexo (imaxe)\" ou \"Engadir anexo (vídeo)\" para anexar imaxes ou vídeos con Galería 3D.</string>
<string name="miscellaneous_preferences">Miscelánea</string>
<string name="misc_preferences_attachment_description">Mostrar botóns para engadir anexos de imaxe e vídeo</string>
<!--APG related-->
<string name="error_activity_not_found">Non hai un aplicativo para executar esta acción.</string>
<string name="error_apg_version_not_supported">Non se admite a versión instalada de APG.</string>

View File

@ -128,8 +128,6 @@ Por favor, envía os erros que detectes, contribúe con novas funcionalidades e
<string name="mark_as_unread_action">Marcar Non Lido</string>
<string name="add_cc_bcc_action">Engadir Cc/Bcc</string>
<string name="add_attachment_action">Engadir adxunto</string>
<string name="add_attachment_action_image">Engadir adxunto (Imaxe)</string>
<string name="add_attachment_action_video">Engadir adxunto (Vídeo)</string>
<string name="empty_trash_action">Valeirar Papelera</string>
<string name="expunge_action">Erradicar</string>
<string name="clear_local_folder_action">Borrar mensaxes locais</string>
@ -641,13 +639,7 @@ Por favor, envía os erros que detectes, contribúe con novas funcionalidades e
<string name="font_size_medium">Mediana</string>
<string name="font_size_large">Grande</string>
<string name="font_size_larger">Moi Grande</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Comprobar \"Configuración\" -&gt; \"Usar Galería\" para poder adxuntar imaxes e videos usando a Galería 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Usar \"Engadir adxunto (Imaxe)\" oo \"Engadir adxunto (Vídeo)\" para Engadir imaxes ou Vídeos con Galería 3D</string>
<string name="miscellaneous_preferences">Varios</string>
<string name="misc_preferences_attachment_title">Usar galería</string>
<string name="misc_preferences_attachment_description">Amosar botóns para Engadir adxuntos de imaxe/vídeo</string>
<!--APG related-->
<string name="error_activity_not_found">Non existe aplicación para executar esta acción</string>
<string name="error_apg_version_not_supported">Non se soporta esta versión de APG</string>

View File

@ -135,8 +135,6 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
<string name="read_receipt_enabled">Olvasási jelentés lesz kérve</string>
<string name="read_receipt_disabled">Nem lesz Olvasási jelentés lesz kérve</string>
<string name="add_attachment_action">Melléklet</string>
<string name="add_attachment_action_image">Kép-melléklet csatolása</string>
<string name="add_attachment_action_video">Videó-melléklet csatolása</string>
<string name="empty_trash_action">Lomtár ürítése</string>
<string name="expunge_action">Biztonságos törlés</string>
<string name="clear_local_folder_action">Helyi üzenetek törlése</string>
@ -693,13 +691,7 @@ Hibajelentéseivel hozzájárul az újabb verziók tökéletesítéséhez, kérd
<string name="font_size_medium">Közepes</string>
<string name="font_size_large">Nagy</string>
<string name="font_size_larger">Nagyobb</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Kapcsolja be a \"Beállítások\" -&gt; \"Galéria hiba\" ha 3D galériából akar képet mellékelni.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Használja a \"Kép csatolása\" vagy \"Videó csatolása\" opciót ha 3D galériából szeretne választani.</string>
<string name="miscellaneous_preferences">Egyéb</string>
<string name="misc_preferences_attachment_title">Galéria hiba kikerülése</string>
<string name="misc_preferences_attachment_description">Gombok megjelenítése a kép/videó csatoláshoz (a 3D Galéria hiba kikerülése érdekében)</string>
<!--APG related-->
<string name="error_activity_not_found">Nincs megfelelő alkalmazás ehhez a művelethez.</string>
<string name="error_apg_version_not_supported">A telepített APG verzió nem támogatott.</string>

View File

@ -137,8 +137,6 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni
<string name="read_receipt_enabled">Notifica di lettura attiva</string>
<string name="read_receipt_disabled">Non richiederà la notifica di lettura</string>
<string name="add_attachment_action">Aggiungi allegato</string>
<string name="add_attachment_action_image">Aggiungi allegato (Immagine)</string>
<string name="add_attachment_action_video">Aggiungi allegato (Video)</string>
<string name="empty_trash_action">Svuota cestino</string>
<string name="expunge_action">Rimuovi messaggi eliminati</string>
<string name="clear_local_folder_action">Cancella messaggi locali</string>
@ -740,13 +738,7 @@ Invia le tue segnalazioni, suggerisci nuove funzionalità e chiedi informazioni
<string name="font_size_medium">Medio</string>
<string name="font_size_large">Grande</string>
<string name="font_size_larger">Più grande</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Controlla \"Impostazioni\" -&gt; \"Aggira bug Galleria immagini\" per allegare immagini o video usando Galleria 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Utilizza \"Aggiungi allegato (Immagini)\" o \"Aggiungi allegato (Video)\" per allegare immagini o video con Galleria 3D.</string>
<string name="miscellaneous_preferences">Varie</string>
<string name="misc_preferences_attachment_title">Aggira bug della Galleria immagini</string>
<string name="misc_preferences_attachment_description">Visualizza i pulsanti per allegare immagini/video (evita bug della Galleria 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Nessuna applicazione trovata per questa azione.</string>
<string name="error_apg_version_not_supported">La versione di APG installata non è supportata.</string>

View File

@ -113,8 +113,6 @@
<string name="read_receipt_enabled">נדרש אישור לקריאה</string>
<string name="read_receipt_disabled">לא נדרש אישור קריאה</string>
<string name="add_attachment_action">צרף קובץ</string>
<string name="add_attachment_action_image">הוסף קובץ (תמונה)</string>
<string name="add_attachment_action_video">הוסף קובת (וידאו)</string>
<string name="empty_trash_action">רוקן אשפה</string>
<string name="expunge_action">רוקן</string>
<string name="clear_local_folder_action">נקה הודעות מקומיות</string>
@ -580,13 +578,7 @@
<string name="font_size_medium">בינוני</string>
<string name="font_size_large">גדול</string>
<string name="font_size_larger">ענק</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">סמן \"הגדרות\" -&gt; \"השתמש בעקיפת באג הגלריה\" כדי שתוכל לצרף תמונות או קטעי וידאו לגלריית 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">השתמש ב \"הוסף קובץ מצורף (תמונה) \" או \"הוסף קובץ מצורף (וידאו) \" כדי לצרף תמונות או קטעי וידאו באמצעות גלריית 3D.</string>
<string name="miscellaneous_preferences">שונות</string>
<string name="misc_preferences_attachment_title">השתמש בעקיפת באג הגלריה</string>
<string name="misc_preferences_attachment_description">הצג כפתורים כדי להוסיף קבצי תמונה / וידאו (כדי לעקוף את באג גלריית 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">לא נמצא ישום שיכול לבצע פעולה זו.</string>
<string name="error_apg_version_not_supported">גרסת APG המותקנת אינה נתמכת.</string>

View File

@ -136,8 +136,6 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ
<string name="read_receipt_enabled">開封確認を要求</string>
<string name="read_receipt_disabled">開封確認を要求しない</string>
<string name="add_attachment_action">添付追加</string>
<string name="add_attachment_action_image">添付ファイル追加 (画像)</string>
<string name="add_attachment_action_video">添付ファイル追加 (動画)</string>
<string name="empty_trash_action">ゴミ箱を空に</string>
<string name="expunge_action">完全削除(Expunge)</string>
<string name="clear_local_folder_action">ローカルのメッセージをクリア</string>
@ -718,13 +716,7 @@ K-9 は大多数のメールクライアントと同様に、ほとんどのフ
<string name="font_size_medium"></string>
<string name="font_size_large"></string>
<string name="font_size_larger">極大</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">ギャラリ3Dを使って画像/動画を添付するには\"設定\" -&gt; \"ギャラリのバグ回避\"をチェックしてください</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">ギャラリ3Dで画像/動画を添付するには\"添付ファイル追加 (画像)\"や\"添付ファイル追加 (動画)\" を使ってください</string>
<string name="miscellaneous_preferences">その他</string>
<string name="misc_preferences_attachment_title">ギャラリのバグ回避</string>
<string name="misc_preferences_attachment_description">添付ファイルに画像/動画を追加するボタンを表示する(ギャラリ3Dバグを回避するため)</string>
<!--APG related-->
<string name="error_activity_not_found">この操作のためのアプリケーションが見つかりません</string>
<string name="error_apg_version_not_supported">インストールされているAPGは、サポートされていないバージョンです</string>

View File

@ -135,8 +135,6 @@ K-9 메일은 대부분의 무료 hotmail 계정을 지원하지 않으며, 다
<string name="read_receipt_enabled">읽음 확인을 요청함</string>
<string name="read_receipt_disabled">읽음 확인을 요청하지 않음</string>
<string name="add_attachment_action">첨부 추가</string>
<string name="add_attachment_action_image">첨부 추가 (이미지)</string>
<string name="add_attachment_action_video">첨부 추가 (비디오)</string>
<string name="empty_trash_action">휴지통 비우기</string>
<string name="expunge_action">폐기</string>
<string name="clear_local_folder_action">로컬 메시지 삭제</string>
@ -703,13 +701,7 @@ K-9 메일은 대부분의 무료 hotmail 계정을 지원하지 않으며, 다
<string name="font_size_medium">중간</string>
<string name="font_size_large">크게</string>
<string name="font_size_larger">더 크게</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">갤러리 3D에서 이미지나 비디오를 첨부하려면 \"설정\" -&gt; \"갤러리 버그 회피\"를 확인하십시오.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">갤러리 3D에서 \"첨부 추가 (이미지)\" 혹은 \"첨부 추가 (비디오)\"를 통해 이미지나 비디오를 첨부할 수 있습니다.</string>
<string name="miscellaneous_preferences">기타 설정</string>
<string name="misc_preferences_attachment_title">갤러리 버그 회피</string>
<string name="misc_preferences_attachment_description">이미지/비디오 첨부 파일을 추가하는 버튼을 보여 줍니다 (갤러리 3D 버그를 회피할 수 있음)</string>
<!--APG related-->
<string name="error_activity_not_found">이 작동에 대해 적절한 애플리케이션을 찾을 수 없습니다.</string>
<string name="error_apg_version_not_supported">설치된 APG 버전을 지원하지 않습니다.</string>

View File

@ -136,8 +136,6 @@ Praneškite apie klaidas, pridėkite naujų galimybių ir užduokite klausimus m
<string name="read_receipt_enabled">Prašys perskaitymo patvirtinimo</string>
<string name="read_receipt_disabled">Neprašys perskaitymo patvirtinimo</string>
<string name="add_attachment_action">Priedo priedą</string>
<string name="add_attachment_action_image">Pridėti priedą (paveikslėlis)</string>
<string name="add_attachment_action_video">Pridėti priedą (Video)</string>
<string name="empty_trash_action">Išvalyti šiukšliadėžę</string>
<string name="expunge_action">Išvalyti</string>
<string name="clear_local_folder_action">Išvalyti vietinius laiškus</string>
@ -705,13 +703,7 @@ Praneškite apie klaidas, pridėkite naujų galimybių ir užduokite klausimus m
<string name="font_size_medium">Vidutinis</string>
<string name="font_size_large">Didelis</string>
<string name="font_size_larger">Didesnis</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Norėdami pridėti paveikslėlius ir video naudojant Gallery 3D, pažymėkite „Nustatymai“ -&gt; „Naudoti galerijos klaidos apėjimą“</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Norėdami pridėti paveikslėlius ir video naudojant Gallery 3D naudokite „Pridėti priedą (paveikslėlis)“ ar „Pridėti priedą (Video)“.</string>
<string name="miscellaneous_preferences">Kita</string>
<string name="misc_preferences_attachment_title">Naudoti galerijos klaidos apėjimą</string>
<string name="misc_preferences_attachment_description">Rodyti mygtukus kurie prideda vaizdo/video priedus (Gallery 3D klaidos apėjimas)</string>
<!--APG related-->
<string name="error_activity_not_found">Šiai programai nerasta tinkamo veiksmo.</string>
<string name="error_apg_version_not_supported">Įdiegta APG versija nepalaikoma.</string>

View File

@ -138,8 +138,6 @@ Lūdzu sūtiet kļūdu ziņojumus, iesakiet uzlabojumus un uzdodiet jautājumus
<string name="read_receipt_enabled">Pieprasīt izlasīšanas atskaiti</string>
<string name="read_receipt_disabled">Neprasīt izlasīšanas atskaiti</string>
<string name="add_attachment_action">Pievienot pielikumu</string>
<string name="add_attachment_action_image">Pievienot pielikumu (bildi)</string>
<string name="add_attachment_action_video">Pievienot pielikumu (video)</string>
<string name="empty_trash_action">Iztukšot miskasti</string>
<string name="expunge_action">Izmest</string>
<string name="clear_local_folder_action">Izdzēst ierīcē esošās vēstules</string>
@ -731,13 +729,7 @@ pat <xliff:g id="messages_to_load">%d</xliff:g> vairāk</string>
<string name="font_size_medium">Vidējs</string>
<string name="font_size_large">Liels</string>
<string name="font_size_larger">Lielāks</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Pārbaudiet \"Iestatījumi\" -&gt; \"Izmantot galerijas kļūdu apvedceļu\", lai varētu pievienotu bildes vai video, izmantojot Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Izmantot \"Pievienot pielikumu (bildi)\" vai \"Pievienot pielikumu (video)\", lai pievienotu bildes vai videoklipus ar Gallery 3D.</string>
<string name="miscellaneous_preferences">Dažādi</string>
<string name="misc_preferences_attachment_title">Izmantot galerijas kļūdu apvedceļu</string>
<string name="misc_preferences_attachment_description">Rādīt pogas, lai pievienotu bildi/video kā pielikumus (izmantojot Gallery 3D kļūdu apvedceļu)</string>
<!--APG related-->
<string name="error_activity_not_found">Šai darbībai nav atrasta atbilstoša aplikācija.</string>
<string name="error_apg_version_not_supported">Instalētā APG versija netiek atbalstīta.</string>

View File

@ -137,8 +137,6 @@ Vennligst send feilmeldinger, forbedringer og still spørsmål hos
<string name="read_receipt_enabled">Kommer til å be om lesekvittering</string>
<string name="read_receipt_disabled">Kommer ikke til å be om lesekvittering</string>
<string name="add_attachment_action">Legg til vedlegg</string>
<string name="add_attachment_action_image">Legg til vedlegg (bilde)</string>
<string name="add_attachment_action_video">Legg til vedlegg (video)</string>
<string name="empty_trash_action">Tøm søppeldunk</string>
<string name="expunge_action">Tilintetgjør</string>
<string name="clear_local_folder_action">Fjern lokale meldinger</string>
@ -661,8 +659,6 @@ Vis neste melding som standard etter meldingssletting</string>
<string name="font_size_medium">Medium</string>
<string name="font_size_large">Stor</string>
<string name="font_size_larger">Større</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="miscellaneous_preferences">Diverse</string>
<!--APG related-->
<string name="error_activity_not_found">Ingen egnede program ble funnet for denne handlingen.</string>

View File

@ -136,8 +136,6 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
<string name="read_receipt_enabled">Lees rapport vragen</string>
<string name="read_receipt_disabled">Geen lees rapport vragen</string>
<string name="add_attachment_action">Voeg bijlage toe</string>
<string name="add_attachment_action_image">Voeg bijlage toe (Afbeelding)</string>
<string name="add_attachment_action_video">Voeg bijlage toe (Video)</string>
<string name="empty_trash_action">Prullenbak legen</string>
<string name="expunge_action">Wissen</string>
<string name="clear_local_folder_action">Lokale berichten wissen</string>
@ -713,13 +711,7 @@ Graag foutrapporten, bijdrage nieuwe functies en vragen stellen op
<string name="font_size_medium">Gemiddeld</string>
<string name="font_size_large">Groot</string>
<string name="font_size_larger">Groter</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Controleer \"Instellingen\" -&gt; \"Use Gallery bug work-around\" to be able to attach images or videos using Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Gebruik \"Bijlage toevoegen (Afbeelding)\" of \"Bijlage toevoegen (Video)\" to attach images or videos with Gallery 3D.</string>
<string name="miscellaneous_preferences">Diversen</string>
<string name="misc_preferences_attachment_title">Gebruik Gallery bug work-around</string>
<string name="misc_preferences_attachment_description">Laat knoppen zien om afbeelding/video bijlage toe te voegen (to work around a Gallery 3D bug)</string>
<!--APG related-->
<string name="error_activity_not_found">Geen geschikte applicatie gevonden voor deze aktie.</string>
<string name="error_apg_version_not_supported">De geïnstalleerde APG versie wordt niet ondersteund.</string>

View File

@ -136,8 +136,6 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
<string name="read_receipt_enabled">Żadaj powiadomienia o przeczytaniu</string>
<string name="read_receipt_disabled">Nie wymagaj powiadomienia o przeczytaniu</string>
<string name="add_attachment_action">Dodaj załącznik</string>
<string name="add_attachment_action_image">Dodaj załącznik (Zdjęcie)</string>
<string name="add_attachment_action_video">Dodaj załącznik (Film)</string>
<string name="empty_trash_action">Opróżnij kosz</string>
<string name="expunge_action">Wyczyść</string>
<string name="clear_local_folder_action">Wyczyść wiadomości lokalne</string>
@ -714,13 +712,7 @@ Wszelkie zgłoszenia usterek, zapytania oraz nowe pomysły prosimy przesyłać z
<string name="font_size_medium">Średnia</string>
<string name="font_size_large">Duża</string>
<string name="font_size_larger">Wielka</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Włącz \"Obejdź błędy w Galerii\" aby móc załączać zdjęcia oraz filmy używając Galerii 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Użyj \"Dodaj załącznik (Zdjęcie)\" lub \"Dodaj załącznik (Film)\" aby je dodać używając Galerii 3D.</string>
<string name="miscellaneous_preferences">Różne</string>
<string name="misc_preferences_attachment_title">Obejdź błędy w Galerii</string>
<string name="misc_preferences_attachment_description">Wyświetla przyciski dodawania zdjęć oraz filmów jako załączników</string>
<!--APG related-->
<string name="error_activity_not_found">Nie znaleiono odpowiedniej aplikacji.</string>
<string name="error_apg_version_not_supported">Zainstalowana wersja APG nie jest wspierana.</string>

View File

@ -135,8 +135,6 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
<string name="read_receipt_enabled">Confirmação de leitura será requisitada</string>
<string name="read_receipt_disabled">Confirmação de leitura não será requisitada</string>
<string name="add_attachment_action">Incluir anexo</string>
<string name="add_attachment_action_image">Incluir anexo (Imagem)</string>
<string name="add_attachment_action_video">Incluir anexo (Video)</string>
<string name="empty_trash_action">Esvaziar Lixeira</string>
<string name="expunge_action">Expurgar</string>
<string name="clear_local_folder_action">Limpar mensagens locais</string>
@ -714,13 +712,7 @@ Por favor, nos envie relatórios de bugs, contribua para novas melhorias e faça
<string name="font_size_medium">Médio</string>
<string name="font_size_large">Maior</string>
<string name="font_size_larger">Grande</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Ativar em \"Configurações\" a opção \"Solução do bug da Galeria\" para poder anexar imagens ou vídeos utilizando a Galeria 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Usar \"Incluir anexo (Imagem)\" ou \"Incluir anexo (Video)\" para anexar imagens ou videos da Galeria 3D.</string>
<string name="miscellaneous_preferences">Diversos</string>
<string name="misc_preferences_attachment_title">Solução do bug da Galeria</string>
<string name="misc_preferences_attachment_description">Mostrar botões para incluir anexos de imagem/video (para contornar problemas utilizando Gallery 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Nenhum aplicativo adequado para esta ação foi encontrado.</string>
<string name="error_apg_version_not_supported"> A versão da APG instalada não é suportada.</string>

View File

@ -137,8 +137,6 @@ K-9 Mail — почтовый клиент для Android.
<string name="read_receipt_enabled">Запросить уведомление о прочтении</string>
<string name="read_receipt_disabled">Без уведомления о прочтении</string>
<string name="add_attachment_action">Вложение</string>
<string name="add_attachment_action_image">Изображение</string>
<string name="add_attachment_action_video">Видео</string>
<string name="empty_trash_action">Очистить корзину</string>
<string name="expunge_action">Стереть</string>
<string name="clear_local_folder_action">Стереть локальные</string>
@ -729,13 +727,7 @@ K-9 Mail — почтовый клиент для Android.
<string name="font_size_medium">Большой</string>
<string name="font_size_large">Огромный</string>
<string name="font_size_larger">Гигантский</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Включите в настройках \"Обход ошибки Галереи 3D\" для её использования</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Используйте дествия \"Изображение\" или \"Видео\" для вложения с помощью Галереи 3D</string>
<string name="miscellaneous_preferences">Разное</string>
<string name="misc_preferences_attachment_title">Обход ошибки Галереи 3D</string>
<string name="misc_preferences_attachment_description">Показать действия вложения изображений и видео</string>
<!--APG related-->
<string name="error_activity_not_found">Подходящее приложение не найдено</string>
<string name="error_apg_version_not_supported">Установленная версия APG не поддерживается</string>

View File

@ -137,8 +137,6 @@ Prosím, nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte
<string name="read_receipt_enabled">Potvrdenie o prečítaní bude vyžadované</string>
<string name="read_receipt_disabled">Potvrdenie o prečítaní nebude vyžadované</string>
<string name="add_attachment_action">Pridať prílohu</string>
<string name="add_attachment_action_image">Pridať prílohu (obrázok)</string>
<string name="add_attachment_action_video">Pridať prílohu (video)</string>
<string name="empty_trash_action">Vyprázdniť kôš</string>
<string name="expunge_action">Vymazať</string>
<string name="clear_local_folder_action">Vymazať správy</string>
@ -729,13 +727,7 @@ Prosím, nahlasujte prípadné chyby, prispievajte novými funkciami a pýtajte
<string name="font_size_medium">Stredné</string>
<string name="font_size_large">Veľké</string>
<string name="font_size_larger">Väčšie</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Skontrolujte \"Nastavenia\" -&gt; \"Používať riešenie chyby pre Galériu\", aby ste boli schopný pripojiť obrázky alebo videá pomocou Galérie 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Použite \"Pridať prílohu (obrázok)\" alebo \"Pridať prílohu (video)\" pre pridanie obrázkov a videí pomocou Galérie 3D.</string>
<string name="miscellaneous_preferences">Rôzne</string>
<string name="misc_preferences_attachment_title">Používať riešenie chyby pre Galériu</string>
<string name="misc_preferences_attachment_description">Zobraziť tlačidlá pre pridanie príloh (obrázky, videá) pre riešenie chyby Galérie 3D</string>
<!--APG related-->
<string name="error_activity_not_found">Nebola nájdená žiadna vhodná aplikácia pre túto akciu.</string>
<string name="error_apg_version_not_supported">Nainštalovaná verzia APG nie je podporovaná.</string>

View File

@ -136,8 +136,6 @@ Anmäl fel, hjälp till med nya funktioner och ställ frågor på
<string name="read_receipt_enabled">Läskvitto kommer att begäras</string>
<string name="read_receipt_disabled">Läskvitto kommer inte att begäras</string>
<string name="add_attachment_action">Lägg till bilaga</string>
<string name="add_attachment_action_image">Lägg till bilaga (bild)</string>
<string name="add_attachment_action_video">Lägg till bilaga (video)</string>
<string name="empty_trash_action">Töm papperskorg</string>
<string name="expunge_action">Radera</string>
<string name="clear_local_folder_action">Rensa lokalt lagrade meddelanden</string>
@ -719,13 +717,7 @@ Anmäl fel, hjälp till med nya funktioner och ställ frågor på
<string name="font_size_medium">Stor</string>
<string name="font_size_large">Större</string>
<string name="font_size_larger">Störst</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Kontrollera \"Inställningar\" -&gt; \"Använd work-adound för bug i Gallery\" för att kunna bifoga bilder och filmer med Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Använd \"Lägg till bilaga (Bild)\" eller \"Lägg till bilaga (Video)\" för att bifoga bilder eller video med Gallery 3D.</string>
<string name="miscellaneous_preferences">Diverse</string>
<string name="misc_preferences_attachment_title">Använd workadound för bug i Gallery</string>
<string name="misc_preferences_attachment_description">Visa knappar för att bifoga image/video (för att komma runt en bug i Gallery 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Hittade ingen passande applikation för denna åtgärd.</string>
<string name="error_apg_version_not_supported">Den installerade versionen av APG stöds inte.</string>

View File

@ -136,8 +136,6 @@ Lütfen hata raporlarınızı, istediğiniz yeni özellikleri ve sorularınızı
<string name="read_receipt_enabled">Okundu raporu istenecek</string>
<string name="read_receipt_disabled">Okundu raporu istenmeyecek</string>
<string name="add_attachment_action">Ekle</string>
<string name="add_attachment_action_image">Ekle (Resim)</string>
<string name="add_attachment_action_video">Ekle (Video)</string>
<string name="empty_trash_action">Çöpü Boşalt</string>
<string name="expunge_action">Çıkar</string>
<string name="clear_local_folder_action">Yerel mesajları temizle</string>
@ -718,13 +716,7 @@ Lütfen hata raporlarınızı, istediğiniz yeni özellikleri ve sorularınızı
<string name="font_size_medium">Orta</string>
<string name="font_size_large">Büyük</string>
<string name="font_size_larger">Daha büyük</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">\"Ayarlar\" -&gt; \"Galeri hata çalışması kullan\" işaretleyerek 3D Galeri kullanarak resimler veya videoları ekleyin.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">\"Ek Ekle (Resim)\" veya \"Ek Ekle (Video)\" kullanarak 3D Galeri ile resimleri ve videoları ekleyin.</string>
<string name="miscellaneous_preferences">Çeşitli</string>
<string name="misc_preferences_attachment_title">Geçici çözüm galeri hatasını kullan</string>
<string name="misc_preferences_attachment_description">Resim/Video ekleri ekleme butonlarını göster (Bir galeri 3D hatası geçici çözümüne)</string>
<!--APG related-->
<string name="error_activity_not_found">Bu eylem için uygun program bulunamadı.</string>
<string name="error_apg_version_not_supported">Kurulu APG versiyon desteklenmiyor.</string>

View File

@ -135,8 +135,6 @@ K-9 Mail це поштовий клієнт з відкритим вихідни
<string name="read_receipt_enabled">Включити запит повідомлень про прочитання</string>
<string name="read_receipt_disabled">Вимкнути запит повідомлень про прочитання</string>
<string name="add_attachment_action">Додати вкладення</string>
<string name="add_attachment_action_image">Додати вкладення (зображення)</string>
<string name="add_attachment_action_video">Додати вкладення (Відео)</string>
<string name="empty_trash_action">Очистити Кошик</string>
<string name="expunge_action">Витерти</string>
<string name="clear_local_folder_action">Видалити локальні повідомлення</string>
@ -702,13 +700,7 @@ K-9 Mail це поштовий клієнт з відкритим вихідни
<string name="font_size_medium">Середній</string>
<string name="font_size_large">Великий</string>
<string name="font_size_larger">Найбільший</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">Виберіть \"Налаштування\" -&gt; \"Використовувати обхід помилок Галереї\" для вкладень зображень та відео з допомогою Gallery 3D.</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">Виберіть \"Додати вкладення (зображення)\" або \"Додати вкладення (відео)\" для вкладень зображень та відео з допомогою Gallery 3D.</string>
<string name="miscellaneous_preferences">Різне</string>
<string name="misc_preferences_attachment_title">Використовувати обхід помилок Галереї</string>
<string name="misc_preferences_attachment_description">Показувати кнопки для додавання зображень та відео вкладень (щоб обійти проблему з Gallery 3D)</string>
<!--APG related-->
<string name="error_activity_not_found">Відсутня програма для цієї дії.</string>
<string name="error_apg_version_not_supported">Встановлена версія APG не підтримується.</string>

View File

@ -135,8 +135,6 @@ K-9改进的功能包括
<string name="read_receipt_enabled">将会请求已读回执</string>
<string name="read_receipt_disabled">将不会请求已读回执</string>
<string name="add_attachment_action">添加附件</string>
<string name="add_attachment_action_image">添加图片附件</string>
<string name="add_attachment_action_video">添加视频附件</string>
<string name="empty_trash_action">清空垃圾箱</string>
<string name="expunge_action">擦除</string>
<string name="clear_local_folder_action">清空本地邮件</string>
@ -717,13 +715,7 @@ K-9改进的功能包括
<string name="font_size_medium">中等</string>
<string name="font_size_large"></string>
<string name="font_size_larger">更大</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">选择“设置”-&gt;“避免画册发生错误”来启用使用3D画册模式添加附件或视频。</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">利用“添加附件图片”或“添加附件视频”来使用3D画册添加图片或视频。</string>
<string name="miscellaneous_preferences">杂项</string>
<string name="misc_preferences_attachment_title">避免画册发生错误</string>
<string name="misc_preferences_attachment_description">显示按钮来添加图片/视频附件以避免3D画册发生错误</string>
<!--APG related-->
<string name="error_activity_not_found">没有找到可以用于这一操作的程序。</string>
<string name="error_apg_version_not_supported">不支持所安装版本的APG。</string>

View File

@ -107,8 +107,6 @@
<string name="read_receipt_enabled">要求讀取回條</string>
<string name="read_receipt_disabled">取消讀取回條</string>
<string name="add_attachment_action">新增附件</string>
<string name="add_attachment_action_image">新增圖片附件</string>
<string name="add_attachment_action_video">新增影片附件</string>
<string name="empty_trash_action">清空垃圾桶</string>
<string name="expunge_action">刪除</string>
<string name="clear_local_folder_action">清除本地郵件</string>
@ -675,13 +673,7 @@
<string name="font_size_medium">中等</string>
<string name="font_size_large"></string>
<string name="font_size_larger">最大</string>
<!--Note: Contains references to preferences_action and misc_preferences_attachment_title-->
<string name="message_compose_buggy_gallery">選擇「設定」-&gt;「避免相簿發生錯誤」來啟用3D相簿模式新增附件或影片。</string>
<!--Note: Contains references to add_attachment_action_image and add_attachment_action_video-->
<string name="message_compose_use_workaround">利用「新增附件圖片」或「新增附件影片」來使用3D相簿新增圖片或影片。</string>
<string name="miscellaneous_preferences">偏好設定</string>
<string name="misc_preferences_attachment_title">避免相簿發生錯誤</string>
<string name="misc_preferences_attachment_description">顯示按鈕來新增圖片/影片為附件以避免3D相簿發生錯誤</string>
<!--APG related-->
<string name="error_activity_not_found">沒有找到可以用於此操作的程式。</string>
<string name="error_apg_version_not_supported">尚未支援所安裝的APG版本。</string>

View File

@ -170,8 +170,6 @@ Please submit bug reports, contribute new features and ask questions at
<string name="read_receipt_enabled">Will request read receipt</string>
<string name="read_receipt_disabled">Will not request read receipt</string>
<string name="add_attachment_action">Add attachment</string>
<string name="add_attachment_action_image">Add attachment (Image)</string>
<string name="add_attachment_action_video">Add attachment (Video)</string>
<string name="empty_trash_action">Empty Trash</string>
<string name="expunge_action">Expunge</string>
<string name="clear_local_folder_action">Clear local messages</string>
@ -908,15 +906,7 @@ Please submit bug reports, contribute new features and ask questions at
<string name="font_size_large">Large</string>
<string name="font_size_larger">Larger</string>
<!-- Note: Contains references to preferences_action and misc_preferences_attachment_title -->
<string name="message_compose_buggy_gallery">Check \"Settings\" -&gt; \"Use Gallery bug work-around\" to be able to attach images or videos using Gallery 3D.</string>
<!-- Note: Contains references to add_attachment_action_image and add_attachment_action_video -->
<string name="message_compose_use_workaround">Use \"Add attachment (Image)\" or \"Add attachment (Video)\" to attach images or videos with Gallery 3D.</string>
<string name="miscellaneous_preferences">Miscellaneous</string>
<string name="misc_preferences_attachment_title">Use Gallery bug work-around</string>
<string name="misc_preferences_attachment_description">Show buttons to add image/video attachments (to work around a Gallery 3D bug)</string>
<!-- APG related -->
<string name="error_activity_not_found">No suitable application for this action found.</string>

View File

@ -8,6 +8,21 @@
They are automatically updated with "ant bump-version".
-->
<changelog>
<release version="4.905" versioncode="21008">
<change>Dropped support for Android versions older than 4.0.3</change>
<change>Added ability to use client certificates for authentication</change>
<change>Enabled support for TLSv1.1 and TLSv1.2</change>
<change>Added SSL/TLS session caching</change>
<change>Finer grained control for notifications</change>
<change>Added support for delete confirmations in the message list</change>
<change>Added the option to show the password when setting up new accounts</change>
<change>Added privacy setting to omit the User-Agent header</change>
<change>Added privacy setting to use UTC as timezone in mail headers</change>
<change>Added auto configuration settings for various providers</change>
<change>Fixed HELO/EHLO with IPv6 address literals</change>
<change>Various bug fixes</change>
<change>Added translations: Latvian, Estonian, Norwegian Bokmål, Galician (Spain)</change>
</release>
<release version="4.904" versioncode="21007" >
<change>Added support for OpenPGP API v3</change>
<change>Fixed problems with IMAP login</change>
@ -66,7 +81,6 @@
<change>Better cleanup of old data when deleting an account</change>
<change>Worked around a bug in KitKat that stopped settings import from working</change>
<change>Updated German, Greek, Japanese, Korean, Lithuanian, Portugese, Russian and Slovak translations</change>
<change></change>
</release>
<release version="4.700" versioncode="19001" >
<change>Code cleanups</change>

View File

@ -348,12 +348,6 @@
android:title="@string/miscellaneous_preferences"
android:key="misc_preferences">
<CheckBoxPreference
android:persistent="false"
android:key="use_gallery_bug_workaround"
android:title="@string/misc_preferences_attachment_title"
android:summary="@string/misc_preferences_attachment_description" />
<Preference
android:persistent="false"
android:title="@string/settings_attachment_default_path"

View File

@ -221,7 +221,6 @@ public class Account implements BaseAccount {
private ColorChip mFlaggedUnreadColorChip;
private ColorChip mFlaggedReadColorChip;
private ColorChip mCheckmarkChip;
/**
@ -862,11 +861,6 @@ public class Account implements BaseAccount {
mUnreadColorChip = new ColorChip(mChipColor, false, ColorChip.CIRCULAR);
mFlaggedReadColorChip = new ColorChip(mChipColor, true, ColorChip.STAR);
mFlaggedUnreadColorChip = new ColorChip(mChipColor, false, ColorChip.STAR);
mCheckmarkChip = new ColorChip(mChipColor, true, ColorChip.CHECKMARK);
}
public ColorChip getCheckmarkChip() {
return mCheckmarkChip;
}
public synchronized int getChipColor() {
@ -895,10 +889,6 @@ public class Account implements BaseAccount {
return chip;
}
public ColorChip generateColorChip() {
return new ColorChip(mChipColor, false, ColorChip.CIRCULAR);
}
@Override
public String getUuid() {
return mUuid;

View File

@ -16,9 +16,7 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Debug;
import android.os.Environment;
@ -264,9 +262,6 @@ public class K9 extends Application {
private static boolean mHideUserAgent = false;
private static boolean mHideTimeZone = false;
private static boolean useGalleryBugWorkaround = false;
private static boolean galleryBuggy;
private static SortType mSortType;
private static HashMap<SortType, Boolean> mSortAscending = new HashMap<SortType, Boolean>();
@ -543,7 +538,6 @@ public class K9 extends Application {
editor.putInt("messageViewTheme", messageViewTheme.ordinal());
editor.putInt("messageComposeTheme", composerTheme.ordinal());
editor.putBoolean("fixedMessageViewTheme", useFixedMessageTheme);
editor.putBoolean("useGalleryBugWorkaround", useGalleryBugWorkaround);
editor.putBoolean("confirmDelete", mConfirmDelete);
editor.putBoolean("confirmDeleteStarred", mConfirmDeleteStarred);
@ -582,8 +576,6 @@ public class K9 extends Application {
super.onCreate();
app = this;
galleryBuggy = checkForBuggyGallery();
sIsDebuggable = ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0);
checkCachedDatabaseVersion();
@ -749,8 +741,6 @@ public class K9 extends Application {
mHideUserAgent = sprefs.getBoolean("hideUserAgent", false);
mHideTimeZone = sprefs.getBoolean("hideTimeZone", false);
useGalleryBugWorkaround = sprefs.getBoolean("useGalleryBugWorkaround", K9.isGalleryBuggy());
mConfirmDelete = sprefs.getBoolean("confirmDelete", false);
mConfirmDeleteStarred = sprefs.getBoolean("confirmDeleteStarred", false);
mConfirmSpam = sprefs.getBoolean("confirmSpam", false);
@ -1185,18 +1175,6 @@ public class K9 extends Application {
mHideSpecialAccounts = hideSpecialAccounts;
}
public static boolean useGalleryBugWorkaround() {
return useGalleryBugWorkaround;
}
public static void setUseGalleryBugWorkaround(boolean useGalleryBugWorkaround) {
K9.useGalleryBugWorkaround = useGalleryBugWorkaround;
}
public static boolean isGalleryBuggy() {
return galleryBuggy;
}
public static boolean confirmDelete() {
return mConfirmDelete;
}
@ -1245,25 +1223,6 @@ public class K9 extends Application {
sNotificationQuickDelete = mode;
}
/**
* Check if this system contains a buggy Gallery 3D package.
*
* We have to work around the fact that those Gallery versions won't show
* any images or videos when the pick intent is used with a MIME type other
* than image/* or video/*. See issue 1186.
*
* @return true, if a buggy Gallery 3D package was found. False, otherwise.
*/
private boolean checkForBuggyGallery() {
try {
PackageInfo pi = getPackageManager().getPackageInfo("com.cooliris.media", 0);
return (pi.versionCode == 30682);
} catch (NameNotFoundException e) {
return false;
}
}
public static boolean wrapFolderNames() {
return mWrapFolderNames;
}

View File

@ -2042,18 +2042,6 @@ public class MessageCompose extends K9Activity implements OnClickListener,
* Kick off a picker for whatever kind of MIME types we'll accept and let Android take over.
*/
private void onAddAttachment() {
if (K9.isGalleryBuggy()) {
if (K9.useGalleryBugWorkaround()) {
Toast.makeText(MessageCompose.this,
getString(R.string.message_compose_use_workaround),
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MessageCompose.this,
getString(R.string.message_compose_buggy_gallery),
Toast.LENGTH_LONG).show();
}
}
onAddAttachment2("*/*");
}
@ -2549,12 +2537,6 @@ public class MessageCompose extends K9Activity implements OnClickListener,
case R.id.add_attachment:
onAddAttachment();
break;
case R.id.add_attachment_image:
onAddAttachment2("image/*");
break;
case R.id.add_attachment_video:
onAddAttachment2("video/*");
break;
case R.id.read_receipt:
onReadReceipt();
default:
@ -2575,13 +2557,6 @@ public class MessageCompose extends K9Activity implements OnClickListener,
menu.findItem(R.id.save).setEnabled(false);
}
/*
* Show the menu items "Add attachment (Image)" and "Add attachment (Video)"
* if the work-around for the Gallery bug is enabled (see Issue 1186).
*/
menu.findItem(R.id.add_attachment_image).setVisible(K9.useGalleryBugWorkaround());
menu.findItem(R.id.add_attachment_video).setVisible(K9.useGalleryBugWorkaround());
return true;
}

View File

@ -87,7 +87,6 @@ public class Prefs extends K9PreferenceActivity {
private static final String PREFERENCE_AUTOFIT_WIDTH = "messageview_autofit_width";
private static final String PREFERENCE_BACKGROUND_OPS = "background_ops";
private static final String PREFERENCE_GALLERY_BUG_WORKAROUND = "use_gallery_bug_workaround";
private static final String PREFERENCE_DEBUG_LOGGING = "debug_logging";
private static final String PREFERENCE_SENSITIVE_LOGGING = "sensitive_logging";
@ -134,7 +133,6 @@ public class Prefs extends K9PreferenceActivity {
private CheckBoxPreference mShowNext;
private CheckBoxPreference mAutofitWidth;
private ListPreference mBackgroundOps;
private CheckBoxPreference mUseGalleryBugWorkaround;
private CheckBoxPreference mDebugLogging;
private CheckBoxPreference mSensitiveLogging;
private CheckBoxPreference mHideUserAgent;
@ -341,9 +339,6 @@ public class Prefs extends K9PreferenceActivity {
mBackgroundOps = setupListPreference(PREFERENCE_BACKGROUND_OPS, K9.getBackgroundOps().name());
mUseGalleryBugWorkaround = (CheckBoxPreference)findPreference(PREFERENCE_GALLERY_BUG_WORKAROUND);
mUseGalleryBugWorkaround.setChecked(K9.useGalleryBugWorkaround());
mDebugLogging = (CheckBoxPreference)findPreference(PREFERENCE_DEBUG_LOGGING);
mSensitiveLogging = (CheckBoxPreference)findPreference(PREFERENCE_SENSITIVE_LOGGING);
mHideUserAgent = (CheckBoxPreference)findPreference(PREFERENCE_HIDE_USERAGENT);
@ -492,7 +487,6 @@ public class Prefs extends K9PreferenceActivity {
K9.setSplitViewMode(SplitViewMode.valueOf(mSplitViewMode.getValue()));
K9.setAttachmentDefaultPath(mAttachmentPathPreference.getSummary().toString());
boolean needsRefresh = K9.setBackgroundOps(mBackgroundOps.getValue());
K9.setUseGalleryBugWorkaround(mUseGalleryBugWorkaround.isChecked());
if (!K9.DEBUG && mDebugLogging.isChecked()) {
Toast.makeText(this, R.string.debug_logging_enabled, Toast.LENGTH_LONG).show();

View File

@ -1,280 +0,0 @@
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.fsck.k9.helper;
import android.net.http.SslCertificate;
import android.util.Log;
import com.fsck.k9.K9;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.cert.X509Certificate;
import java.security.cert.CertificateParsingException;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
* Implements basic domain-name validation as specified by RFC2818.
*/
public class DomainNameChecker {
private static Pattern QUICK_IP_PATTERN;
static {
try {
QUICK_IP_PATTERN = Pattern.compile("^[a-f0-9\\.:]+$");
} catch (PatternSyntaxException e) {
}
}
private static final int ALT_DNS_NAME = 2;
private static final int ALT_IPA_NAME = 7;
/**
* Checks the site certificate against the domain name of the site being
* visited
*
* @param certificate
* The certificate to check
* @param thisDomain
* The domain name of the site being visited
* @return True iff if there is a domain match as specified by RFC2818
*/
public static boolean match(X509Certificate certificate, String thisDomain) {
if ((certificate == null) || (thisDomain == null)
|| thisDomain.isEmpty()) {
return false;
}
thisDomain = thisDomain.toLowerCase(Locale.US);
if (!isIpAddress(thisDomain)) {
return matchDns(certificate, thisDomain);
} else {
return matchIpAddress(certificate, thisDomain);
}
}
/**
* @return True iff the domain name is specified as an IP address
*/
private static boolean isIpAddress(String domain) {
if ((domain == null) || domain.isEmpty()) {
return false;
}
boolean rval;
try {
// do a quick-dirty IP match first to avoid DNS lookup
rval = QUICK_IP_PATTERN.matcher(domain).matches();
if (rval) {
rval = domain.equals(InetAddress.getByName(domain)
.getHostAddress());
}
} catch (UnknownHostException e) {
String errorMessage = e.getMessage();
if (errorMessage == null) {
errorMessage = "unknown host exception";
}
if (K9.DEBUG) {
Log.v(K9.LOG_TAG, "DomainNameChecker.isIpAddress(): "
+ errorMessage);
}
rval = false;
}
return rval;
}
/**
* Checks the site certificate against the IP domain name of the site being
* visited
*
* @param certificate
* The certificate to check
* @param thisDomain
* The DNS domain name of the site being visited
* @return True iff if there is a domain match as specified by RFC2818
*/
private static boolean matchIpAddress(X509Certificate certificate, String thisDomain) {
if (K9.DEBUG) {
Log.v(K9.LOG_TAG, "DomainNameChecker.matchIpAddress(): this domain: " + thisDomain);
}
try {
Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
if (subjectAltNames != null) {
for (List<?> altNameEntry : subjectAltNames) {
if ((altNameEntry != null) && (2 <= altNameEntry.size())) {
Integer altNameType = (Integer)(altNameEntry.get(0));
if (altNameType != null && altNameType.intValue() == ALT_IPA_NAME) {
String altName = (String)(altNameEntry.get(1));
if (altName != null) {
if (K9.DEBUG) {
Log.v(K9.LOG_TAG, "alternative IP: " + altName);
}
if (thisDomain.equalsIgnoreCase(altName)) {
return true;
}
}
}
}
}
}
} catch (CertificateParsingException e) {
}
return false;
}
/**
* Checks the site certificate against the DNS domain name of the site being
* visited
*
* @param certificate
* The certificate to check
* @param thisDomain
* The DNS domain name of the site being visited
* @return True iff if there is a domain match as specified by RFC2818
*/
private static boolean matchDns(X509Certificate certificate, String thisDomain) {
boolean hasDns = false;
try {
Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
if (subjectAltNames != null) {
for (List<?> altNameEntry : subjectAltNames) {
if ((altNameEntry != null) && (2 <= altNameEntry.size())) {
Integer altNameType = (Integer)(altNameEntry.get(0));
if (altNameType != null && altNameType.intValue() == ALT_DNS_NAME) {
hasDns = true;
String altName = (String)(altNameEntry.get(1));
if (altName != null && matchDns(thisDomain, altName)) {
return true;
}
}
}
}
}
} catch (CertificateParsingException e) {
// one way we can get here is if an alternative name starts with
// '*' character, which is contrary to one interpretation of the
// spec (a valid DNS name must start with a letter); there is no
// good way around this, and in order to be compatible we proceed
// to check the common name (ie, ignore alternative names)
if (K9.DEBUG) {
String errorMessage = e.getMessage();
if (errorMessage == null) {
errorMessage = "failed to parse certificate";
}
Log.v(K9.LOG_TAG, "DomainNameChecker.matchDns(): "
+ errorMessage);
}
}
if (!hasDns) {
SslCertificate sslCertificate = new SslCertificate(certificate);
return matchDns(thisDomain, sslCertificate.getIssuedTo().getCName());
}
return false;
}
/**
* @param thisDomain
* The domain name of the site being visited
* @param thatDomain
* The domain name from the certificate
* @return True iff thisDomain matches thatDomain as specified by RFC2818
*/
private static boolean matchDns(String thisDomain, String thatDomain) {
if (K9.DEBUG) {
Log.v(K9.LOG_TAG, "DomainNameChecker.matchDns():"
+ " this domain: " + thisDomain + " that domain: "
+ thatDomain);
}
if ((thisDomain == null) || thisDomain.isEmpty()
|| (thatDomain == null) || thatDomain.isEmpty()) {
return false;
}
thatDomain = thatDomain.toLowerCase(Locale.US);
// (a) domain name strings are equal, ignoring case: X matches X
boolean rval = thisDomain.equals(thatDomain);
if (!rval) {
String[] thisDomainTokens = thisDomain.split("\\.");
String[] thatDomainTokens = thatDomain.split("\\.");
int thisDomainTokensNum = thisDomainTokens.length;
int thatDomainTokensNum = thatDomainTokens.length;
// (b) OR thatHost is a '.'-suffix of thisHost: Z.Y.X matches X
if (thisDomainTokensNum >= thatDomainTokensNum) {
for (int i = thatDomainTokensNum - 1; i >= 0; --i) {
rval = thisDomainTokens[i].equals(thatDomainTokens[i]);
if (!rval) {
// (c) OR we have a special *-match:
// Z.Y.X matches *.Y.X but does not match *.X
rval = ((i == 0) && (thisDomainTokensNum == thatDomainTokensNum));
if (rval) {
rval = thatDomainTokens[0].equals("*");
if (!rval) {
// (d) OR we have a *-component match:
// f*.com matches foo.com but not bar.com
rval = domainTokenMatch(thisDomainTokens[0],
thatDomainTokens[0]);
}
}
break;
}
}
}
}
return rval;
}
/**
* @param thisDomainToken
* The domain token from the current domain name
* @param thatDomainToken
* The domain token from the certificate
* @return True iff thisDomainToken matches thatDomainToken, using the
* wildcard match as specified by RFC2818-3.1. For example, f*.com
* must match foo.com but not bar.com
*/
private static boolean domainTokenMatch(String thisDomainToken, String thatDomainToken) {
if ((thisDomainToken != null) && (thatDomainToken != null)) {
int starIndex = thatDomainToken.indexOf('*');
if (starIndex >= 0) {
if (thatDomainToken.length() - 1 <= thisDomainToken.length()) {
String prefix = thatDomainToken.substring(0, starIndex);
String suffix = thatDomainToken.substring(starIndex + 1);
return thisDomainToken.startsWith(prefix)
&& thisDomainToken.endsWith(suffix);
}
}
}
return false;
}
}

View File

@ -96,7 +96,7 @@ import com.fsck.k9.mail.store.ImapResponseParser.ImapList;
import com.fsck.k9.mail.store.ImapResponseParser.ImapResponse;
import com.fsck.k9.mail.store.imap.ImapUtility;
import com.fsck.k9.mail.transport.imap.ImapSettings;
import com.fsck.k9.net.ssl.SslHelper;
import com.fsck.k9.net.ssl.TrustedSocketFactory;
import com.jcraft.jzlib.JZlib;
import com.jcraft.jzlib.ZOutputStream;
@ -2435,7 +2435,7 @@ public class ImapStore extends Store {
mSettings.getPort());
if (connectionSecurity == ConnectionSecurity.SSL_TLS_REQUIRED) {
mSocket = SslHelper.createSslSocket(mSettings.getHost(),
mSocket = TrustedSocketFactory.createSocket(mSettings.getHost(),
mSettings.getPort(), mSettings.getClientCertificateAlias());
} else {
mSocket = new Socket();
@ -2485,8 +2485,8 @@ public class ImapStore extends Store {
// STARTTLS
executeSimpleCommand("STARTTLS");
mSocket = SslHelper.createStartTlsSocket(mSocket,
mSettings.getHost(), mSettings.getPort(), true,
mSocket = TrustedSocketFactory.createSocket(mSocket,
mSettings.getHost(), mSettings.getPort(),
mSettings.getClientCertificateAlias());
mSocket.setSoTimeout(Store.SOCKET_READ_TIMEOUT);
mIn = new PeekableInputStream(new BufferedInputStream(mSocket

View File

@ -12,7 +12,7 @@ import com.fsck.k9.mail.*;
import com.fsck.k9.mail.filter.Base64;
import com.fsck.k9.mail.filter.Hex;
import com.fsck.k9.mail.internet.MimeMessage;
import com.fsck.k9.net.ssl.SslHelper;
import com.fsck.k9.net.ssl.TrustedSocketFactory;
import javax.net.ssl.SSLException;
@ -314,7 +314,7 @@ public class Pop3Store extends Store {
try {
SocketAddress socketAddress = new InetSocketAddress(mHost, mPort);
if (mConnectionSecurity == ConnectionSecurity.SSL_TLS_REQUIRED) {
mSocket = SslHelper.createSslSocket(mHost, mPort, mClientCertificateAlias);
mSocket = TrustedSocketFactory.createSocket(mHost, mPort, mClientCertificateAlias);
} else {
mSocket = new Socket();
}
@ -336,7 +336,7 @@ public class Pop3Store extends Store {
if (mCapabilities.stls) {
executeSimpleCommand(STLS_COMMAND);
mSocket = SslHelper.createStartTlsSocket(mSocket, mHost, mPort, true,
mSocket = TrustedSocketFactory.createSocket(mSocket, mHost, mPort,
mClientCertificateAlias);
mSocket.setSoTimeout(Store.SOCKET_READ_TIMEOUT);
mIn = new BufferedInputStream(mSocket.getInputStream(), 1024);

View File

@ -15,7 +15,7 @@ import com.fsck.k9.mail.filter.PeekableInputStream;
import com.fsck.k9.mail.filter.SmtpDataStuffing;
import com.fsck.k9.mail.internet.MimeUtility;
import com.fsck.k9.mail.store.local.LocalMessage;
import com.fsck.k9.net.ssl.SslHelper;
import com.fsck.k9.net.ssl.TrustedSocketFactory;
import javax.net.ssl.SSLException;
@ -224,7 +224,7 @@ public class SmtpTransport extends Transport {
try {
SocketAddress socketAddress = new InetSocketAddress(addresses[i], mPort);
if (mConnectionSecurity == ConnectionSecurity.SSL_TLS_REQUIRED) {
mSocket = SslHelper.createSslSocket(mHost, mPort, mClientCertificateAlias);
mSocket = TrustedSocketFactory.createSocket(mHost, mPort, mClientCertificateAlias);
mSocket.connect(socketAddress, SOCKET_CONNECT_TIMEOUT);
secureConnection = true;
} else {
@ -278,7 +278,7 @@ public class SmtpTransport extends Transport {
if (extensions.containsKey("STARTTLS")) {
executeSimpleCommand("STARTTLS");
mSocket = SslHelper.createStartTlsSocket(mSocket, mHost, mPort, true,
mSocket = TrustedSocketFactory.createSocket(mSocket, mHost, mPort,
mClientCertificateAlias);
mIn = new PeekableInputStream(new BufferedInputStream(mSocket.getInputStream(),

View File

@ -1,81 +0,0 @@
package com.fsck.k9.net.ssl;
import java.io.IOException;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import android.util.Log;
import com.fsck.k9.K9;
import com.fsck.k9.mail.MessagingException;
/**
* Helper class to create SSL sockets with support for client certificate
* authentication
*/
public class SslHelper {
private static SSLContext createSslContext(String host, int port, String clientCertificateAlias)
throws NoSuchAlgorithmException, KeyManagementException, MessagingException {
if (K9.DEBUG)
Log.d(K9.LOG_TAG, "createSslContext: Client certificate alias: "
+ clientCertificateAlias);
KeyManager[] keyManagers;
if (clientCertificateAlias == null || clientCertificateAlias.isEmpty()) {
keyManagers = null;
} else {
keyManagers = new KeyManager[] { new KeyChainKeyManager(K9.app, clientCertificateAlias) };
}
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagers,
new TrustManager[] {
TrustManagerFactory.get(
host, port)
},
new SecureRandom());
return sslContext;
}
/**
* Create SSL socket
*
* @param host
* @param port
* @param clientCertificateAlias if not null, uses client certificate
* retrieved by this alias for authentication
*/
public static Socket createSslSocket(String host, int port, String clientCertificateAlias)
throws NoSuchAlgorithmException, KeyManagementException, IOException,
MessagingException {
SSLContext sslContext = createSslContext(host, port, clientCertificateAlias);
return TrustedSocketFactory.createSocket(sslContext);
}
/**
* Create socket for START_TLS. autoClose = true
*
* @param socket
* @param host
* @param port
* @param secure
* @param clientCertificateAlias if not null, uses client certificate
* retrieved by this alias for authentication
*/
public static Socket createStartTlsSocket(Socket socket, String host, int port, boolean secure,
String clientCertificateAlias) throws NoSuchAlgorithmException,
KeyManagementException, IOException, MessagingException {
SSLContext sslContext = createSslContext(host, port, clientCertificateAlias);
boolean autoClose = true;
return TrustedSocketFactory.createSocket(sslContext, socket, host, port, autoClose);
}
}

View File

@ -0,0 +1,89 @@
package com.fsck.k9.net.ssl;
import java.io.File;
import java.lang.reflect.Method;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSessionContext;
import com.fsck.k9.K9;
import android.content.Context;
import android.os.Build;
import android.util.Log;
/**
* A class to help with associating an {@code SSLContext} with a persistent
* file-based cache of SSL sessions.
* <p>
* This uses reflection to achieve its task.
* <p>
* The alternative to this would be to use {@link SSLCertificateSocketFactory}
* which also provides session caching. The problem with using that occurs when
* using STARTTLS in combination with
* {@code TrustedSocketFactory.hardenSocket(SSLSocket)}. The result is that
* {@code hardenSocket()} fails to change anything because by the time it is
* applied to the socket, the SSL handshake has already been completed. (This is
* because of another feature of {@link SSLCertificateSocketFactory} whereby it
* performs host name verification which necessitates initiating the SSL
* handshake immediately on socket creation.)
* <p>
* If eventually the use of hardenSocket() should become unnecessary, then
* switching to using {@link SSLCertificateSocketFactory} would be a better
* solution.
*/
public class SslSessionCacheHelper {
private static Object sSessionCache;
private static Method sSetPersistentCacheMethod;
private static boolean sIsDisabled = false;
static {
final String packageName;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
packageName = "org.apache.harmony.xnet.provider.jsse";
} else {
packageName = "com.android.org.conscrypt";
}
final File cacheDirectory = K9.app.getDir("sslcache", Context.MODE_PRIVATE);
try {
Class<?> fileClientSessionCacheClass = Class.forName(packageName +
".FileClientSessionCache");
Method usingDirectoryMethod = fileClientSessionCacheClass
.getMethod("usingDirectory", File.class);
sSessionCache = usingDirectoryMethod.invoke(null, cacheDirectory);
Class<?> sslClientSessionCacheClass = Class.forName(packageName +
".SSLClientSessionCache");
Class<?> clientSessionContextClass = Class.forName(packageName +
".ClientSessionContext");
sSetPersistentCacheMethod = clientSessionContextClass.getMethod(
"setPersistentCache", sslClientSessionCacheClass);
} catch (Exception e) {
// Something went wrong. Proceed without a session cache.
Log.e(K9.LOG_TAG, "Failed to initialize SslSessionCacheHelper: " + e);
sIsDisabled = true;
}
}
/**
* Associate an {@code SSLContext} with a persistent file-based cache of SSL
* sessions which can be used when re-establishing a connection to the same
* server.
* <p>
* This is beneficial because it can eliminate redundant cryptographic
* computations and network traffic, thus saving time and conserving power.
*/
public static void setPersistentCache(SSLContext sslContext) {
if (sIsDisabled) {
return;
}
try {
SSLSessionContext sessionContext = sslContext.getClientSessionContext();
sSetPersistentCacheMethod.invoke(sessionContext, sSessionCache);
} catch (Exception e) {
// Something went wrong. Proceed without a session cache.
Log.e(K9.LOG_TAG, "Failed to initialize persistent SSL cache: " + e);
sIsDisabled = true;
}
}
}

View File

@ -3,12 +3,15 @@ package com.fsck.k9.net.ssl;
import android.util.Log;
import com.fsck.k9.helper.DomainNameChecker;
import com.fsck.k9.mail.CertificateChainException;
import com.fsck.k9.security.LocalKeyStore;
import javax.net.ssl.SSLException;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ssl.StrictHostnameVerifier;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
@ -58,31 +61,25 @@ public final class TrustManagerFactory {
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
String message = null;
boolean foundInGlobalKeyStore = false;
X509Certificate certificate = chain[0];
try {
defaultTrustManager.checkServerTrusted(chain, authType);
foundInGlobalKeyStore = true;
new StrictHostnameVerifier().verify(mHost, certificate);
return;
} catch (CertificateException e) {
// cert. chain can't be validated
message = e.getMessage();
} catch (SSLException e) {
// host name doesn't match certificate
message = e.getMessage();
}
X509Certificate certificate = chain[0];
// Check the local key store if we couldn't verify the certificate using the global
// key store or if the host name doesn't match the certificate name
if (foundInGlobalKeyStore
&& DomainNameChecker.match(certificate, mHost)
|| keyStore.isValidCertificate(certificate, mHost, mPort)) {
return;
if (!keyStore.isValidCertificate(certificate, mHost, mPort)) {
throw new CertificateChainException(message, chain);
}
if (message == null) {
message = (foundInGlobalKeyStore) ?
"Certificate domain name does not match " + mHost :
"Couldn't find certificate in local key store";
}
throw new CertificateChainException(message, chain);
}
public X509Certificate[] getAcceptedIssuers() {

View File

@ -3,14 +3,21 @@ package com.fsck.k9.net.ssl;
import android.util.Log;
import com.fsck.k9.K9;
import com.fsck.k9.mail.MessagingException;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import java.io.IOException;
import java.net.Socket;
import java.security.SecureRandom;
import java.util.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@ -67,15 +74,21 @@ public class TrustedSocketFactory {
static {
String[] enabledCiphers = null;
String[] enabledProtocols = null;
String[] supportedProtocols = null;
try {
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, null, new SecureRandom());
sslContext.init(null, null, null);
SSLSocketFactory sf = sslContext.getSocketFactory();
SSLSocket sock = (SSLSocket) sf.createSocket();
enabledCiphers = sock.getEnabledCipherSuites();
enabledProtocols = sock.getEnabledProtocols();
/*
* Retrieve all supported protocols, not just the (default) enabled
* ones. TLSv1.1 & TLSv1.2 are supported on API levels 16+, but are
* only enabled by default on API levels 20+.
*/
supportedProtocols = sock.getSupportedProtocols();
} catch (Exception e) {
Log.e(K9.LOG_TAG, "Error getting information about available SSL/TLS ciphers and " +
"protocols", e);
@ -84,8 +97,8 @@ public class TrustedSocketFactory {
ENABLED_CIPHERS = (enabledCiphers == null) ? null :
reorder(enabledCiphers, ORDERED_KNOWN_CIPHERS, BLACKLISTED_CIPHERS);
ENABLED_PROTOCOLS = (enabledProtocols == null) ? null :
reorder(enabledProtocols, ORDERED_KNOWN_PROTOCOLS, null);
ENABLED_PROTOCOLS = (supportedProtocols == null) ? null :
reorder(supportedProtocols, ORDERED_KNOWN_PROTOCOLS, null);
}
protected static String[] reorder(String[] enabled, String[] known, String[] blacklisted) {
@ -114,19 +127,33 @@ public class TrustedSocketFactory {
return result.toArray(new String[result.size()]);
}
public static Socket createSocket(SSLContext sslContext) throws IOException {
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket();
hardenSocket(socket);
public static Socket createSocket(String host, int port, String clientCertificateAlias)
throws IOException, MessagingException, KeyManagementException, NoSuchAlgorithmException {
return socket;
return createSocket(null, host, port, clientCertificateAlias);
}
public static Socket createSocket(SSLContext sslContext, Socket s, String host, int port,
boolean autoClose) throws IOException {
SSLSocket socket = (SSLSocket) sslContext.getSocketFactory().createSocket(s, host, port, autoClose);
hardenSocket(socket);
public static Socket createSocket(Socket socket, String host, int port, String clientCertificateAlias)
throws NoSuchAlgorithmException, KeyManagementException, MessagingException, IOException {
return socket;
TrustManager[] trustManagers = new TrustManager[] { TrustManagerFactory.get(host, port) };
KeyManager[] keyManagers = null;
if (clientCertificateAlias != null && !clientCertificateAlias.isEmpty()) {
keyManagers = new KeyManager[] { new KeyChainKeyManager(K9.app, clientCertificateAlias) };
}
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagers, trustManagers, null);
SslSessionCacheHelper.setPersistentCache(context);
SSLSocketFactory socketFactory = context.getSocketFactory();
Socket trustedSocket;
if (socket == null) {
trustedSocket = socketFactory.createSocket();
} else {
trustedSocket = socketFactory.createSocket(socket, host, port, true);
}
hardenSocket((SSLSocket) trustedSocket);
return trustedSocket;
}
private static void hardenSocket(SSLSocket sock) {

View File

@ -188,9 +188,6 @@ public class GlobalSettings {
new V(16, new ThemeSetting(K9.Theme.LIGHT)),
new V(24, new SubThemeSetting(K9.Theme.USE_GLOBAL))
));
s.put("useGalleryBugWorkaround", Settings.versions(
new V(1, new GalleryBugWorkaroundSetting())
));
s.put("useVolumeKeysForListNavigation", Settings.versions(
new V(1, new BooleanSetting(false))
));
@ -372,27 +369,6 @@ public class GlobalSettings {
}
}
/**
* The gallery bug work-around setting.
*
* <p>
* The default value varies depending on whether you have a version of Gallery 3D installed
* that contains the bug we work around.
* </p>
*
* @see K9#isGalleryBuggy()
*/
public static class GalleryBugWorkaroundSetting extends BooleanSetting {
public GalleryBugWorkaroundSetting() {
super(false);
}
@Override
public Object getDefaultValue() {
return K9.isGalleryBuggy();
}
}
/**
* The language setting.
*

View File

@ -35,7 +35,7 @@ public class Settings {
*
* @see SettingsExporter
*/
public static final int VERSION = 34;
public static final int VERSION = 35;
public static Map<String, Object> validate(int version, Map<String,
TreeMap<Integer, SettingsDescription>> settings,

View File

@ -1,92 +1,76 @@
package com.fsck.k9.view;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.PathShape;
public class ColorChip {
public static final Path CIRCULAR = new Path();
public static final Path LEFT_POINTING = new Path();
public static final Path RIGHT_POINTING = new Path();
public static final Path RIGHT_NOTCH = new Path();
public static final Path STAR = new Path();
public static final Path CHECKMARK = new Path();
static {
CIRCULAR.addCircle(160,160,70f,Path.Direction.CW);
CIRCULAR.addCircle(160, 160, 70f, Path.Direction.CW);
CIRCULAR.close();
RIGHT_POINTING.addArc(new RectF(80f,80f,240f,240f) , 90, 180);
RIGHT_POINTING.arcTo(new RectF(160f,0f,320f,160f), 180, -90);
RIGHT_POINTING.arcTo(new RectF(160f,160f,320f,320f), 270,-90);
RIGHT_POINTING.addArc(new RectF(80f, 80f, 240f, 240f), 90, 180);
RIGHT_POINTING.arcTo(new RectF(160f, 0f, 320f, 160f), 180, -90);
RIGHT_POINTING.arcTo(new RectF(160f, 160f, 320f, 320f), 270, -90);
RIGHT_POINTING.close();
RIGHT_NOTCH.addArc(new RectF(80f,80f,240f,240f) , 90, 180);
RIGHT_NOTCH.arcTo(new RectF(160f,0f,320f,160f), 180, -90);
RIGHT_NOTCH.arcTo(new RectF(160f,160f,320f,320f), 270,-90);
RIGHT_NOTCH.addArc(new RectF(80f, 80f, 240f, 240f), 90, 180);
RIGHT_NOTCH.arcTo(new RectF(160f, 0f, 320f, 160f), 180, -90);
RIGHT_NOTCH.arcTo(new RectF(160f, 160f, 320f, 320f), 270, -90);
RIGHT_NOTCH.close();
LEFT_POINTING.addArc(new RectF(80f,80f,240f,240f) , 90, -180);
LEFT_POINTING.arcTo(new RectF(00f,00f,160f,160f), 0, 90);
LEFT_POINTING.arcTo(new RectF(00f,160f,160f,320f), 270,90);
LEFT_POINTING.addArc(new RectF(80f, 80f, 240f, 240f), 90, -180);
LEFT_POINTING.arcTo(new RectF(00f, 00f, 160f, 160f), 0, 90);
LEFT_POINTING.arcTo(new RectF(00f, 160f, 160f, 320f), 270, 90);
LEFT_POINTING.close();
STAR.moveTo(140f,60f);
STAR.lineTo(170f,110f);
STAR.lineTo(220f,120f);
STAR.lineTo(180f,160f);
STAR.lineTo(200f,220f);
STAR.lineTo(140f,190f);
STAR.lineTo(80f,220f);
STAR.lineTo(100f,160f);
STAR.lineTo(60f,120f);
STAR.lineTo(110f,110f);
STAR.lineTo(140f,60f);
STAR.moveTo(140f, 60f);
STAR.lineTo(170f, 110f);
STAR.lineTo(220f, 120f);
STAR.lineTo(180f, 160f);
STAR.lineTo(200f, 220f);
STAR.lineTo(140f, 190f);
STAR.lineTo(80f, 220f);
STAR.lineTo(100f, 160f);
STAR.lineTo(60f, 120f);
STAR.lineTo(110f, 110f);
STAR.lineTo(140f, 60f);
STAR.close();
CHECKMARK.moveTo(10f,160f);
CHECKMARK.lineTo(120f,280f);
CHECKMARK.lineTo(300f,40f);
}
private ShapeDrawable mDrawable;
public ColorChip(int color, boolean messageRead, Path shape) {
if (shape.equals(STAR)) {
mDrawable = new ShapeDrawable(new PathShape(shape, 280f, 280f));
} else {
mDrawable = new ShapeDrawable(new PathShape(shape, 320f, 320f));
}
if (shape.equals(CHECKMARK)) {
mDrawable.getPaint().setStrokeWidth(50);
} else {
mDrawable.getPaint().setStrokeWidth(20);
}
if (messageRead) {
// Read messages get an outlined circle
mDrawable.getPaint().setStyle(Paint.Style.STROKE);
} else {
// Unread messages get filled, while retaining the outline, so that they stay the same size
mDrawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);
}
mDrawable.getPaint().setStrokeWidth(20);
mDrawable.getPaint().setColor(color);
}
public ShapeDrawable drawable() {
return mDrawable;
}
}