Commit e9b90994 authored by Oliver Wiese's avatar Oliver Wiese

first approach (warnings etc placed in map)

parent 2a2c74ca
......@@ -60,10 +60,6 @@ struct ReadMainView <M: DisplayMail>: View {
}
var moreInfoButton: some View{
/* NavigationLink(destination: DialogView(option: SecurityState(mail: mail).dialog, ctaAction: nil, additionalAction: nil, dismissAction: nil), label: {
Image(systemName: isSecIndExpanded ? "arrow.up.circle" : "info.circle")
})
.isDetailLink(false)*/
Button(action: {
self.isSecIndExpanded.toggle()
......@@ -79,12 +75,12 @@ struct ReadMainView <M: DisplayMail>: View {
let dialog = SecurityState(mail: mail).dialog
return DialogView(option: dialog, ctaAction: {
self.isSecIndExpanded = false
}, additionalAction: nil, dismissAction: nil)
}, additionalAction: nil, dismissAction: nil, extend: false)
}
}
struct Tab{
struct Tab {
let id = UUID()
var image : Image = Image(systemName: "tag.fill")
......@@ -93,108 +89,6 @@ struct Tab{
}
struct SecInd:View{
var secNum:UInt8=0 //1: trouble ; 2:safe ; 3 not safe
@Binding var isExpanded:Bool
var color:Color
@State private var pullInfo:Bool = true;
var body : some View {
VStack(spacing:0){
Rectangle()
.fill(color)
.frame(height: 2)
.frame(height: 2)
if isExpanded {
expandedSecInd(secNum: secNum).onTapGesture {
self.isExpanded = false
}
.padding(/*[.leading, .bottom, .trailing],*/20)
.background(RoundedCorners(color: color, tl: 0, tr: 0, bl: 30, br: 30))
}
if pullInfo {Text("tap info-icon to get more info").font(.system(size: 8)).padding(.vertical,4)}
}
.padding(0)
.background((isExpanded || !pullInfo) ? RoundedCorners(color: color, tl: 0, tr: 0, bl: 30, br: 30) : nil)
.animation(.easeInOut(duration: 1))
.onAppear(perform:{
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
self.pullInfo=false
}}
)
}
}
struct expandedSecInd: View {
var secNum:UInt8 //1: trouble ; 2:safe ; 3 not safe & subcases of unsecure(4,5,6)
var icon = LogData.IndicatorButton.self
var body: some View {
VStack(){
if secNum == 1 {
layout(
title: NSLocalizedString("LetterDamaged", comment: "Modified email received")/*"Angerissener Brief"*/,
text: NSLocalizedString("ReceiveDamagedInfo", comment: "Modified email infotext"),
icon: Image(icon.error.name)//TODO: ask oli how to do this correctly
)
} else if secNum == 2 {
layout(
title: NSLocalizedString("Letter", comment: "letter label"),
text: NSLocalizedString("ReceiveSecureInfo", comment: "Letter infotext"),
icon: Image(icon.confidential.name)//TODO: ask oli how to do this correctly
)
}else if secNum==4 {
layout(
title: NSLocalizedString("Postcard", comment: "postcard label"),
text: NSLocalizedString("ReceiveInsecureInfoVerified", comment: "Postcard infotext"),
icon: Image(icon.signedOnly.name)//TODO: ask oli how to do this correctly
)
} else if secNum==5 {
layout(
title: NSLocalizedString("Postcard", comment: "postcard label"),
text: NSLocalizedString("ReceiveInsecureInfoEncrypted", comment: "Postcard infotext"),
icon: Image(icon.encryptedOnly.name)//TODO: ask oli how to do this correctly
)
} else if secNum==6 {
layout(
title: NSLocalizedString("Postcard", comment: "postcard label"),
text: NSLocalizedString("ReceiveInsecureInfoDecryptionFailed", comment: "Postcard infotext"),
icon: Image(icon.unableToDecrypt.name)//TODO: ask oli how to do this correctly
)
}else if secNum == 3 {
layout(
title: NSLocalizedString("Postcard", comment: "postcard label"),
text: NSLocalizedString("ReceiveInsecureInfo", comment: "Postcard infotext"),
icon: Image("work")//Image(icon.notConfidential.name)//TODO: ask oli how to do this correctly
)
}
}
}
func layout(title:String, text:String, icon:Image)->some View{
//TODO: add a cool layout
return VStack{
HStack{
Spacer()
icon.resizable()
.scaledToFit()
.frame(width:30,height: 30)
Text(title).font(.system(size:22)).fontWeight(.light)
Spacer()
}
Text(text).font(.caption).multilineTextAlignment(.center)
}
}
}
#if DEBUG
struct Layout_Previews: PreviewProvider {
static var previews: some View {
......
......@@ -32,7 +32,7 @@ struct MessageViewMain <M: DisplayMail>: View {
Divider()
if mail.warnings.count > 0 {
ForEach(0..<mail.warnings.count) { index in
DialogView(option: self.mail.warnings[index], ctaAction: self.action, additionalAction: self.action, dismissAction: self.action)
DialogView(option: self.mail.warnings[index], ctaAction: self.action, additionalAction: self.action, dismissAction: self.action, extend: false)
}
Divider()
MessageBody.padding(.horizontal)
......@@ -105,17 +105,16 @@ struct MessageViewMain <M: DisplayMail>: View {
deleteButton.offset(x: showExtraButtons ? -innerPadding*9 : 0)
archiveButton.offset(x: showExtraButtons ? -innerPadding*13.5 : 0)
}
//options
FloatingActionButton(
//radius: innerPadding,
onShortPress: {self.showExtraButtons.toggle()}/*TODO: fill in stuff*/
){
VStack{
Image(systemName: "arrowshape.turn.up.left.fill")
Text("options").font(.system(size: 7)).fontWeight(.none)
}
}.opacity(showExtraButtons ? 0 : 1)
//options
FloatingActionButton(
//radius: innerPadding,
onShortPress: {self.showExtraButtons.toggle()}/*TODO: fill in stuff*/
){
VStack{
Image(systemName: "arrowshape.turn.up.left.fill")
Text("options").font(.system(size: 7)).fontWeight(.none)
}
}.opacity(showExtraButtons ? 0 : 1)
}.animation(.easeInOut(duration: 0.2))
}.padding(outerPadding)
}.padding(outerPadding)
......
......@@ -25,17 +25,31 @@ import CoreLocation
struct SenderViewMain <M: DisplayMail>: View {
let mail: M
let secState: SecurityState<M>
@State var selectedLandmark: Landmark? = nil
@State var showingLandmarkDetails = false
init(mail: M) {
self.mail = mail
secState = SecurityState(mail: mail)
}
var body: some View {
ScrollView {
map
if secState.warnings.count > 0 {
ForEach(0..<secState.warnings.count) { index in
DialogView(option: self.secState.warnings[index], ctaAction: {print("Hello")}, additionalAction: {print("Hello")}, dismissAction: {print("Hello")}, extend: (index == (self.secState.warnings.count - 1)))
}
} else {
map
}
icon
sender
.offset(y: (-110/2 + 5))
.offset(y: (-110/2 + 20))
Divider()
SmallContactListView(contacts: mail.tos, title: NSLocalizedString("To", comment: "To"))
Divider()
......@@ -166,15 +180,13 @@ struct SenderView_Previews: PreviewProvider {
static var previews: some View {
let deviceNames: [String] = [
"iPhone SE",
"iPhone 11 Pro Max"//,
// "iPad Pro (11-inch)"
"iPhone 11 Pro Max"
]
return ForEach(deviceNames, id: \.self) {deviceName in
SenderViewMain<PseuoMail>(mail: mail)
.previewDisplayName(deviceName)
.previewDevice(.init(rawValue: deviceName))
//.colorScheme(.dark)
}
}
......
......@@ -14,6 +14,7 @@ struct DialogView <D: Dialog> : View {
var ctaAction: (() -> Void)?
var additionalAction: (() -> Void)?
var dismissAction: (() -> Void)?
var extend: Bool
private let color = Color(UIColor.systemGray6)
......@@ -30,19 +31,12 @@ struct DialogView <D: Dialog> : View {
.frame(maxWidth: .infinity)
.padding(.vertical, 20)
.addBorder(option.dialogColor, width: 2, cornerRadius: 30)
HStack{
option.img
.resizable()
.frame(width: 60, height: 60)
.foregroundColor(option.dialogColor)
.padding(.trailing, 20)
Text(option.body)
.fontWeight(.light)
.font(.body)
Text(option.body)
.fontWeight(.light)
.font(.body)
.lineLimit(10)
.fixedSize(horizontal: false, vertical: true)
}
.padding(20)
.padding(20)
if option.ctaButtonTitle != nil && ctaAction != nil {
Button(action: ctaAction!) {
Text(option.ctaButtonTitle!)
......@@ -73,8 +67,11 @@ struct DialogView <D: Dialog> : View {
.background(RoundedCorners(color: color, radius: 30))
.padding(.vertical, 10)
.padding(.horizontal, 20)
}
}
}
if extend {
Text("").padding(20)
}
}
.background(RoundedCorners(color: color, radius: 30))
.padding(10)
......@@ -85,10 +82,10 @@ struct DialogView <D: Dialog> : View {
struct DialogView_Previews: PreviewProvider {
static let options = SecurityState.init(mail: mail)
static var previews: some View {
VStack{
DialogView(option: options.dialog, ctaAction: action, additionalAction: action, dismissAction: action)
//DialogView(option: DialogOption.corrupted, ctaAction: action, additionalAction: action, dismissAction: action)
// DialogView(option: DialogOption.couldNotDecrypt, ctaAction: action, additionalAction: action, dismissAction: action)
ScrollView{
DialogView(option: options.dialog, ctaAction: action, additionalAction: action, dismissAction: action, extend: false)
DialogView(option: DialogOption.corrupted, ctaAction: action, additionalAction: action, dismissAction: action, extend: false)
DialogView(option: DialogOption.couldNotDecrypt, ctaAction: action, additionalAction: action, dismissAction: action, extend: false)
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment