...
 
Commits (3)
......@@ -67,6 +67,7 @@
472F398C1E2519C8009260FB /* CNContactExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472F398B1E2519C8009260FB /* CNContactExtension.swift */; };
472F398E1E251B8D009260FB /* MailAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472F398D1E251B8D009260FB /* MailAddress.swift */; };
472F39901E252470009260FB /* CNMailAddressesExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472F398F1E252470009260FB /* CNMailAddressesExtension.swift */; };
47358D92244A5AEA000116D7 /* SelectableTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47358D91244A5AEA000116D7 /* SelectableTextView.swift */; };
474054982244D7A9007CF83B /* MailServerConfigurationTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474054972244D7A9007CF83B /* MailServerConfigurationTest.swift */; };
474994022261E4E6000F8DA5 /* SimpleSendIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474994012261E4E6000F8DA5 /* SimpleSendIcon.swift */; };
4751C6EE233CA583006B2A4D /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751C6ED233CA583006B2A4D /* DateExtension.swift */; };
......@@ -161,7 +162,6 @@
47C822682438A85C005BCE73 /* SenderDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C822662438A85C005BCE73 /* SenderDetails.swift */; };
47C822692438A85C005BCE73 /* PhishingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C822672438A85C005BCE73 /* PhishingView.swift */; };
47C8226B2438A86B005BCE73 /* SenderViewMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C8226A2438A86A005BCE73 /* SenderViewMain.swift */; };
47C8226D2438C2CF005BCE73 /* ReadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C8226C2438C2CF005BCE73 /* ReadViewModel.swift */; };
47CD5AAA2012368D00E771A1 /* logging_pk.asc in Resources */ = {isa = PBXBuildFile; fileRef = 47CD5AA82012368D00E771A1 /* logging_pk.asc */; };
47CD5AAD2012369400E771A1 /* support_pk2.asc in Resources */ = {isa = PBXBuildFile; fileRef = 47CD5AAC2012369300E771A1 /* support_pk2.asc */; };
47CEAC98222541B40075B7DC /* MailSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CEAC97222541B40075B7DC /* MailSession.swift */; };
......@@ -404,6 +404,7 @@
472F398B1E2519C8009260FB /* CNContactExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNContactExtension.swift; sourceTree = "<group>"; };
472F398D1E251B8D009260FB /* MailAddress.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MailAddress.swift; sourceTree = "<group>"; };
472F398F1E252470009260FB /* CNMailAddressesExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CNMailAddressesExtension.swift; sourceTree = "<group>"; };
47358D91244A5AEA000116D7 /* SelectableTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectableTextView.swift; sourceTree = "<group>"; };
474054972244D7A9007CF83B /* MailServerConfigurationTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailServerConfigurationTest.swift; sourceTree = "<group>"; };
474994012261E4E6000F8DA5 /* SimpleSendIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleSendIcon.swift; sourceTree = "<group>"; };
4751C6ED233CA583006B2A4D /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = "<group>"; };
......@@ -613,7 +614,6 @@
47C822662438A85C005BCE73 /* SenderDetails.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SenderDetails.swift; sourceTree = "<group>"; };
47C822672438A85C005BCE73 /* PhishingView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhishingView.swift; sourceTree = "<group>"; };
47C8226A2438A86A005BCE73 /* SenderViewMain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SenderViewMain.swift; sourceTree = "<group>"; };
47C8226C2438C2CF005BCE73 /* ReadViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadViewModel.swift; sourceTree = "<group>"; };
47CD5AA82012368D00E771A1 /* logging_pk.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = logging_pk.asc; path = keys/logging_pk.asc; sourceTree = "<group>"; };
47CD5AAC2012369300E771A1 /* support_pk2.asc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = support_pk2.asc; path = keys/support_pk2.asc; sourceTree = "<group>"; };
47CEAC97222541B40075B7DC /* MailSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailSession.swift; sourceTree = "<group>"; };
......@@ -1149,6 +1149,7 @@
isa = PBXGroup;
children = (
476406922416B54D00C7D426 /* VCSwiftUIView.swift */,
47358D91244A5AEA000116D7 /* SelectableTextView.swift */,
);
path = "SwiftUI to UIKit";
sourceTree = "<group>";
......@@ -1281,7 +1282,6 @@
47C8224224379EAE005BCE73 /* Tabbed Views */,
47C8225124379EAE005BCE73 /* ReadViewCoordinator.swift */,
47C8225224379EAE005BCE73 /* ReadMainView.swift */,
47C8226C2438C2CF005BCE73 /* ReadViewModel.swift */,
);
path = Read;
sourceTree = "<group>";
......@@ -2259,7 +2259,6 @@
4751C7002344D37C006B2A4D /* SecretKey+CoreDataClass.swift in Sources */,
A1AEBA5921E808CB00C84E59 /* IntroYesNoViewController.swift in Sources */,
A1EB05941D956931008659C1 /* InboxCellDelegator.swift in Sources */,
47C8226D2438C2CF005BCE73 /* ReadViewModel.swift in Sources */,
47C822602437A143005BCE73 /* CornerRounder.swift in Sources */,
8428A85D1F436A05007649A5 /* Badges.swift in Sources */,
4775D7AC243F18BC0052F2CC /* SecurityBriefingView.swift in Sources */,
......@@ -2374,6 +2373,7 @@
A1083A541E8BFEA6003666B7 /* Onboarding.swift in Sources */,
476406982416B54D00C7D426 /* CiricleImage.swift in Sources */,
A111F6AD1FA77B170060AFDE /* LoggerDetail.swift in Sources */,
47358D92244A5AEA000116D7 /* SelectableTextView.swift in Sources */,
A13526791D955BDF00D3BFE1 /* AppDelegate.swift in Sources */,
476916A2216B86CF00491527 /* EnzevalosContact+CoreDataClass.swift in Sources */,
0EF148052422543E00B3C198 /* Certificate.swift in Sources */,
......
......@@ -155,7 +155,23 @@ struct PseuoMail: DisplayMail {
var subject: String? = "Hello World"
var body: String? = "This is my message."
var body: String? = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent laoreet justo tellus, vitae molestie erat pharetra a. Curabitur porta finibus quam, eget posuere elit luctus vel. In sapien orci, eleifend pharetra nunc id, hendrerit gravida orci. In fringilla tellus mauris, hendrerit cursus enim lacinia vitae. Fusce vel nisl id sem blandit cursus vel quis odio. Aenean accumsan arcu eu quam iaculis, eu malesuada sapien dignissim. Aenean consequat elit nec metus auctor tempor. Aliquam erat volutpat. Proin non mi felis.
www.fu-berlin.de
Sed elementum consectetur diam, ut placerat justo varius eget. Donec sit amet sem arcu. In sit amet purus tellus. Quisque pulvinar vitae metus nec ultricies. Aenean ac risus id quam euismod dapibus sed in nunc. Suspendisse vestibulum id arcu ac ultricies. Sed aliquam quam condimentum efficitur commodo. Cras imperdiet, nisl vel rhoncus aliquam, nisl elit tincidunt arcu, quis congue sem velit ut leo. Cras sodales commodo dolor et placerat. Nunc sit amet finibus lectus. Nam laoreet condimentum lorem, a auctor sem imperdiet sed. In venenatis ut ligula eget rhoncus. Quisque vitae porttitor enim. Integer ac tellus neque.
Sed non porta risus, hendrerit pellentesque diam. Cras sollicitudin ultricies tincidunt. Aliquam erat volutpat. Cras ut est velit. In eleifend, augue quis fringilla pretium, leo purus tincidunt tellus, nec tempus orci mauris in enim. Aliquam sed purus ligula. Cras mattis nisl sit amet porta rutrum. Phasellus quis tempor libero, sit amet finibus purus.
Quisque eleifend pulvinar lacus eu eleifend. Integer ipsum neque, molestie et risus sit amet, volutpat volutpat enim. Suspendisse pulvinar sem et sapien pretium pharetra. Phasellus euismod efficitur neque, ac scelerisque est aliquet quis. Aliquam pulvinar, diam vitae lobortis consectetur, tortor nunc feugiat neque, a fringilla nibh magna non sapien. Aliquam ante ex, rutrum et pellentesque in, convallis at erat. Integer tristique, libero eget congue condimentum, enim erat elementum nisl, vel mollis elit magna eu leo. Maecenas elementum id magna ut pellentesque. Ut in lacus accumsan, suscipit enim semper, tempus nisl. Nulla sit amet tortor semper justo tristique posuere. Donec feugiat ligula arcu, semper tristique dui ultricies vitae. Integer ultrices libero at arcu viverra varius. Duis lacus mi, laoreet vitae consectetur vel, aliquet vitae sem. Curabitur rhoncus tincidunt luctus. Maecenas aliquet lectus quis mauris pulvinar sodales. Suspendisse faucibus consectetur sagittis.
Phasellus tempor pulvinar felis, sed fermentum sem eleifend in. Nullam magna nisl, bibendum tincidunt tellus in, elementum interdum felis. Duis sit amet porttitor sapien. Nam mollis pellentesque odio, a rutrum nulla volutpat sed. Suspendisse at feugiat felis. Nulla efficitur nibh eget mauris ullamcorper cursus. In enim dolor, venenatis quis nunc id, tempor commodo felis. Nam fermentum blandit dui. Nunc congue mauris rutrum magna porttitor, quis rutrum augue tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Morbi lacinia suscipit lacinia. Donec ultricies turpis neque, fringilla congue nibh pharetra eget. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent eleifend iaculis blandit. Duis eget ipsum nunc. Aliquam vitae posuere magna. Mauris venenatis odio urna, quis condimentum diam blandit ac. In erat nisi, aliquam id sodales eget, malesuada nec diam. Pellentesque non sem justo. Quisque pellentesque erat metus, nec dapibus urna imperdiet vel. Aliquam erat volutpat. Morbi ornare id nisl sed vulputate. Suspendisse aliquam dapibus elit. Suspendisse dapibus, nisl lobortis lobortis dictum, ligula nulla iaculis nulla, id scelerisque est turpis ac tortor.
Sed elementum nibh eget justo porta, nec accumsan justo blandit. Ut vel vestibulum augue. Fusce et placerat diam, vitae faucibus odio. Curabitur lacinia metus lacus, at pulvinar mi ultricies vel. Quisque eu molestie nisi, vitae blandit tortor. Nulla posuere, arcu pulvinar consectetur ultrices, urna nibh ornare enim, non aliquam velit mauris at odio. Cras ultrices luctus tellus sit amet viverra. Suspendisse ut dolor nulla. Integer vehicula lectus vel enim interdum hendrerit. Maecenas ut quam ex. Aenean rutrum vestibulum felis vitae condimentum. Cras molestie fermentum eros, egestas euismod eros posuere sit amet. Nulla ornare faucibus urna eget consequat. Nunc a hendrerit augue, ultrices aliquet risus. Vivamus id facilisis massa. Phasellus vulputate neque quis risus egestas luctus.
"""
var sender: U
......
......@@ -73,14 +73,12 @@ class ReadViewCoordinator {
}
func delete(mail: PersistentMail){
//TODO: make this work
Logger.log(delete: mail, toTrash: true)
AppDelegate.getAppDelegate().mailHandler.move(mails: [mail], from: mail.folder.path, to: UserManager.backendTrashFolderPath)
AppDelegate.getAppDelegate().presentInboxViewController()
}
func archive(mail: PersistentMail){
//TODO: make this work
Logger.log(archive: mail)
AppDelegate.getAppDelegate().mailHandler.move(mails: [mail], from: mail.folder.path, to: UserManager.backendArchiveFolderPath)
}
......
//
// ReadViewModel.swift
// enzevalos_iphone
//
// Created by Oliver Wiese on 04.04.20.
// Copyright © 2020 fu-berlin. All rights reserved.
//
import Foundation
import SwiftUI
class ReadViewModel: ObservableObject {
// Meta data
let senderName: String
let senderImg: Image
let landmarks: [Landmark]
let ccsNames: [String]
let bccsNames: [String]
init(senderName: String, senderImg: Image, landmarks: [Landmark], ccs: [String], bccs: [String]) {
self.senderName = senderName
self.senderImg = senderImg
self.landmarks = landmarks
self.ccsNames = ccs
self.bccsNames = bccs
}
}
......@@ -28,7 +28,7 @@ struct CardV<Content:View>: View{
var content: () -> Content
@State private var isAdvancedVisable:Bool = false
@/*Gesture*/State private var isTapDownB:Bool = false
@State private var isTapDownB:Bool = false
private let colo=Color(red:0.85,green:0.85,blue:0.88)
......
......@@ -14,24 +14,18 @@ struct MessageViewMain <M: DisplayMail>: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
let innerPadding:CGFloat = 20 // button radius
let outerPadding:CGFloat = 5
let innerPadding: CGFloat = 20 // button radius
let outerPadding: CGFloat = 5
let extraButtonFactor: CGFloat = 0.8
@State var showExtraButtons:Bool = false
func action() {
print("Click!")
}
@State var showExtraButtons: Bool = false
var body: some View {
ZStack{
ScrollView{
VStack{
Subjectbar
Divider()
MessageBody.padding(.horizontal)
}
VStack{
Subjectbar
Divider()
MessageBody.padding(.horizontal)
}
.onTapGesture {
self.showExtraButtons = false
......@@ -57,7 +51,15 @@ struct MessageViewMain <M: DisplayMail>: View {
}
var MessageBody : some View {
return Text(self.mail.body!).padding(.bottom, 2 * innerPadding + outerPadding)
GeometryReader {geometry in
SelectableTextView((self.mail.body ?? ""))
.frame(
width: geometry.size.width,
height: geometry.size.height
)
.padding(.bottom, 2 * self.innerPadding + self.outerPadding)
}
}
var FloatingReplyButtons: some View{
......@@ -66,7 +68,6 @@ struct MessageViewMain <M: DisplayMail>: View {
HStack{
Spacer()
ZStack{
if mail.folderType == FolderType.Archive {
forwardButton.offset(y: showExtraButtons ? -innerPadding*9 : 0)
replyAllButton.offset(y: showExtraButtons ? -innerPadding*4.5 : 0)
......@@ -160,7 +161,7 @@ struct MessageViewMain <M: DisplayMail>: View {
radius: innerPadding*extraButtonFactor,
onShortPress: {
self.moveMail(target: .Trash)
self.presentationMode.wrappedValue.dismiss()}/*TODO: fill in stuff*/
self.presentationMode.wrappedValue.dismiss()}
){
VStack{
Image(systemName: "trash")
......
......@@ -123,7 +123,7 @@ struct WarningView: View {
init(warning: Dialog) {
title = warning.title
description = warning.body
icon = Image(systemName: "xmark.octagon.fill") //warning.img
icon = Image(systemName: "xmark.octagon.fill")
color = warning.dialogColor
if let ctaTitle = warning.ctaButtonTitle, let ctaAction = warning.ctaButtonAction {
ctaButton = ButtonStruct(titleKey: ctaTitle, action: ctaAction, type: .CTA)
......@@ -189,9 +189,6 @@ struct InfoView: View {
Text(titleString)
.font(.headline)
.padding(padding)
// Text(descriptionString)
// .fontWeight(.light)
// .padding(padding)
HStack {
icon
Text(stateString)
......@@ -205,13 +202,13 @@ struct InfoView: View {
var color: Color
switch rating {
case .Positiv:
image = Image(systemName: "hand.thumbsup")//"checkmark")
image = Image(systemName: "hand.thumbsup")
color = Color(ThemeManager.encryptedMessageColor())
case .Neutral:
image = Image(systemName: "hand.thumbsdown")
color = Color(ThemeManager.unencryptedMessageColor())
case .Negativ:
image = Image(systemName: "xmark.ocatgon.fill")//"hand.raised")
image = Image(systemName: "xmark.ocatgon.fill")
color = Color(ThemeManager.troubleMessageColor())
}
image = image.resizable()
......
......@@ -34,7 +34,6 @@ struct AllPhishingContent: Identifiable {
let message: String
}
//not
struct PhishingView : View {
/// This content stores the phishing information in a list
var PhishingList = [
......@@ -45,21 +44,14 @@ struct PhishingView : View {
]
var body: some View {
List(PhishingList) { AllPhishingContent in
List(PhishingList) { AllPhishingContent in
VStack {
Text("Identification").bold()
Text(AllPhishingContent.name)
Text(AllPhishingContent.message).italic()
}
}
}
}
}
......
......@@ -36,20 +36,16 @@ struct SenderDetails: View {
@State private var moreDetails = false
var body: some View {
VStack (alignment: .leading, spacing: 20) {
Text("Sender:")
.font(.subheadline)
.padding(.bottom, 5)
HStack(alignment: .top) {
Text("More Details")
.foregroundColor(.blue)
.font(.system(size: 10))
Button (action: {
self.moreDetails.toggle()
}) {
Image(systemName: moreDetails ? "chevron.up" : "chevron.down")
.resizable()
.frame(width: 12.0, height: 7.0)
......
......@@ -127,7 +127,7 @@ struct SenderViewMain <M: DisplayMail>: View {
/// this button displays the previous selected landmark
self.selectPrevLandmark()
}) {
Text("prev")
Text("Button.Prev")
.foregroundColor(.black)
.padding()
.background(Color.white)
......@@ -141,7 +141,7 @@ struct SenderViewMain <M: DisplayMail>: View {
/// this button displays the next selected landmark
self.selectNextLandmark()
}) {
Text("Next")
Text("Button.Next")
.foregroundColor(.black)
.padding()
.background(Color.white)
......
......@@ -138,7 +138,6 @@ struct MapView: UIViewRepresentable {
*/
print(view.annotation)
guard let placemark = view.annotation as? LandmarkAnnotation?/*MKPointAnnotation?*/ else { print("failed conversion") ;return }
parent.selectedLandmark = getLandMarkByCoordinates(placemark!.coordinate)
parent.showingLandmarkDetails = true
......
//
// SelectableTextView.swift
// enzevalos_iphone
//
// Created by Oliver Wiese on 17.04.20.
// Copyright © 2020 fu-berlin. All rights reserved.
//
import SwiftUI
class TextViewDelegate:NSObject, UITextViewDelegate {
func textView(_ textView: UITextView, shouldInteractWith url: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {
if url.scheme == "mailto" {
if let coord = AppDelegate.getAppDelegate().readViewCoordinator {
let to = DataHandler.handler.getMailAddress(url.absoluteString.replacingOccurrences(of: "mailto:", with: ""), temporary: true)
coord.pushComposeView(to: [to], cc: [], bcc: [], subject: "", body: "", responseType: .Reply)
}
return false
}
return true
}
}
struct SelectableTextView: UIViewRepresentable {
var text: String
var textDelegate = TextViewDelegate()
init(_ text: String) {
self.text = text
}
func makeUIView(context: Context) -> UITextView {
let view = UITextView()
view.isSelectable = true
view.isEditable = false
view.isScrollEnabled = true
view.font = .preferredFont(forTextStyle: .body)
view.dataDetectorTypes = .link
view.delegate = textDelegate
return view
}
func updateUIView(_ label: UITextView, context: Context) {
label.text = text
}
}
struct AttributedTextView_Previews: PreviewProvider {
static let text = "Hello World www.fu-berlin.de https://www.google.com"
static var previews: some View {
VStack{
SelectableTextView(text)
Text(text)
}
}
}
......@@ -394,3 +394,40 @@
"MailView.MoreMails" = "Mehr Mails sehen";
"Searchbar.Title" = "Suchen";
"Gamification.Overview.HeaderTitle" = "Abzeichen";
"Security.Dialog.Title.No.Crypto" = "Unsicher";
"Security.Dialog.Title.Enc+Sign" = "Vertrauliche und echte Mail";
"Security.Dialog.Title.UnableToDecrypt" = "Nicht lesbar";
"Security.Dialog.Title.InvalidSignature" = "Manipulierte Mail";
"Security.Dialog.Title.Plain+Sig" = "Genuine but not confidential mail";
"Security.Dialog.Title.PlainMissingPublicKeyToVerify" = "Nicht vertrauliche Mail";
"Security.Dialog.Title.Enc+NoSign" = "Vertrauliche aber echte Mail";
"Security.Dialog.Title.EncMissingPublicKeyToVerify" = "Vertrauliche Mail";
"Security.Dialog.Body.EncButMissingPublicKeyToVerify" = "Wir können den Absender nicht verifieren, weil die Absender ID fehlt. \n Nur du und der Sender können den Inhalt der Mail lesen.";
"Security.Dialog.Body.PlainMissingPublicKeyToVerify" = "Wir können den Absender nicht verifieren, weil die Absender ID fehlt. \n Alle involvierten Mail-Provider, du und der Sender können den Inhalt der Mail lesen.";
"Security.Dialog.Button.Title.MoreInfo" = "Mehr Information";
"Security.Dialog.Button.Title.OK" = "OK";
"Security.Dialog.Button.Title.Import.SK" = "Importiere eigenen Schlüssel";
"Security.Dialog.Button.Title.Ask.Resend.ForPK" = "Um erneutes senden bitten";
"Security.Dialog.Button.Title.Ignore.Mail" = "Mail ignorieren";
"Security.Dialog.Button.Title.Confirmation" = "Um Bestätigung bitten";
"Security.Dialog.Button.Title.Invite" = "Um Verschlüsselung bitten";
"Security.Dialog.Button.Title.Ask.ForPK" = "Um senden der ID bitten";
"Security.Dialog.Button.Title.Send.PK" = "Eigenen öffentlichen Schlüssel versenden";
"ReadView.SecurityBriefing.Title" = "Sicherheitsbriefing";
"ReadView.SecurityBriefing.Conf.Title" = "Wer kann die Mail lesen?";
"ReadView.SecurityBriefing.Conf.Description" = "Deine Mails gehen durch verschiedene Hände: Deinem Mail-Provider, dem Mail-Provider der anderen Seite und vielleicht weitere Mail-Provider als Vermittler dazwischen. Außerdem transporieren dein Internet-Provider und andere auch andere Internet-Provider deine Mail.";
"ReadView.SecurityBriefing.Conf.State.Encrypted" = "Nur du, andere Empfänger und Absender können den Inhalt der Mail lesen.";
"ReadView.SecurityBriefing.Conf.State.Plain" = "Jeder kann den Inhalt lesen.";
"ReadView.SecurityBriefing.Conf.State.TransportEnc" = "Die beteiligten Mail-Provider können mitlesen. Du, die anderen Empfänger und der Sender kann auch den Inhalt lesen.";
"ReadView.SecurityBriefing.Conf.State.UnableToDecrypt" = "Dies ist eine vertrauliche Mail, aber sie kann nicht entschlüsselt werden. Wenn du die Mail auf einem anderen Gerät lesen kannst, solltest du die Geräte abgleichen. Ansonsten hat der Absender vielleicht einen Fehler gemacht und du solltest ihn bitten die Mail nochmal zu schicken.";
"ReadView.SecurityBriefing.Conf.Problem.PrivacyPolicy" = "At least one involved email provider read the mail advertising as they say in their privicy policy.";
"ReadView.SecurityBriefing.Auth.Title" = "Wer ist der Absender?";
"ReadView.SecurityBriefing.Auth.State.UnSigned" = "Wir wissen nicht, ob der Absenderaddresse der tatsächliche Absender ist. Sei wachsam! Es könnte ein womöglich auch ein Betrüger sein.";
"ReadView.SecurityBriefing.Auth.State.Signed" = "Der Absender hat eine ID und wir haben eine glaubwürdige vorherige Mails.";
"ReadView.SecurityBriefing.Auth.State.MissingPK" = "Der Absender kann nicht verifiziert werden, weil die Absender ID fehlt. Aber falls diese importiert wird, wird dies nachgeholt.";
"ReadView.SecurityBriefing.Auth.State.InvalidSignature" = "Diese Mail wurde verändert! Bitte sei misstrauisch, falls du trotzdem die Mail liest.";
"ReadView.SecurityBriefing.Actions.Title" = "Erhöhe die Sicherheit";
"ReadView.SecurityBriefing.Actions.Description" = "Wir können die Sicherheit dieser und weitere Mails in Zukunft verbessern.";
"ReadView.PrefilledMail.AskForPK.Body" = "Hey, \nIch konnte die letzte Mail nicht verifizieren, weil ich deinen öffentlichen Schlüssel nicht habe. Kannst du mir deinen öffentlichen Schlüssel schicken? Vielen Dank und viele Grüße";
"ReadView.PrefilledMail.AskForPK.Subject" = "Fehlender öffentlicher Schlüssel";
"ReadView.PrefilledMail.AskForResend.Body" = "Hey, \nIch konnte deine letzte Mail nicht entschlüsseln, weil ich den geheimen Schlüssel nicht habe. Kannst du die Mail nochmal mit dem angehängten öffentlichen Schlüssel verschlüsseln? Vielen Dank und viele Grüße";
......@@ -101,6 +101,7 @@
"Next" = "Next";
"Button.Next" = "Next";
"next" = "next";
"Button.Prev" = "Prev";
"None" = "None";
"NormalPassword" = "Normal, password";
"Now" = "just now";
......