Skip to content
Snippets Groups Projects
Commit 3b849b0b authored by Aylin's avatar Aylin
Browse files

Renaming, Comments

parent 628b129e
Branches
No related tags found
1 merge request!79Resolve "Add comments to: AttachmentViewMain.swift"
...@@ -66,7 +66,7 @@ struct ReadMainView <M: DisplayMail>: View { ...@@ -66,7 +66,7 @@ struct ReadMainView <M: DisplayMail>: View {
tab: ReadPart.Attachments.value, tab: ReadPart.Attachments.value,
image: Image(systemName: "rectangle.and.paperclip"), image: Image(systemName: "rectangle.and.paperclip"),
description: "Tab.Label.Attachments", description: "Tab.Label.Attachments",
content: AnyView(AttachmentsViewMain(attachments: model.mail.displayAttachments, dlAll: true)) content: AnyView(AttachmentsViewMain(attachments: model.mail.displayAttachments, downloadAll: true))
) )
] ]
} }
......
...@@ -15,29 +15,40 @@ ...@@ -15,29 +15,40 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
/// a file that preview the attachments of incoming mails
// currently this view only previews a ProxyAttachment
import SwiftUI import SwiftUI
struct AttachmentsViewMain: View { struct AttachmentsViewMain: View {
// TODO: Refactor to model? // TODO: Refactor to model?
//a list that contains all the attachment files
@State var attachments: [DisplayAttachment] @State var attachments: [DisplayAttachment]
// Whether the Download all button was clicked // Whether the Download all button was clicked
@State var dlAll = true; @State var downloadAll = true;
var body: some View { var body: some View {
VStack{ VStack{
Spacer() Spacer()
// TODO: Add link section // TODO: Add link section
// check if there even are attachments to be displayed // default view if there are no attachments to be displayed
if attachments.count == 0{ if attachments.count == 0{
noAttachments noAttachments
} }
// otherwise preview the attachments
else { else {
attachmentsView attachmentsView
} }
} }
} }
/// default view if there are no attachments to be displayed
var noAttachments: some View {
return Text(NSLocalizedString("ReadView.Attachments.No", comment: "")).font(.footnote).padding(30)
}
/// a view that previews all the attachment files
var attachmentsView: some View { var attachmentsView: some View {
return VStack(alignment: .leading, spacing: 5){ return VStack(alignment: .leading, spacing: 5){
// headline // headline
...@@ -54,7 +65,7 @@ struct AttachmentsViewMain: View { ...@@ -54,7 +65,7 @@ struct AttachmentsViewMain: View {
ForEach(0..<attachments.count) { i in ForEach(0..<attachments.count) { i in
AttPrev( AttPrev(
attachment: self.attachments[i], attachment: self.attachments[i],
preload: self.dlAll shouldBeDownloaded: self.downloadAll
) )
} }
} }
...@@ -63,34 +74,37 @@ struct AttachmentsViewMain: View { ...@@ -63,34 +74,37 @@ struct AttachmentsViewMain: View {
.padding(.top, 30) .padding(.top, 30)
.padding(.bottom,10) .padding(.bottom,10)
} }
var noAttachments: some View {
return Text(NSLocalizedString("ReadView.Attachments.No", comment: "")).font(.footnote).padding(30)
}
} }
struct AttachmentsViewMain_Previews: PreviewProvider { struct AttachmentsViewMain_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
// here we call the view with a single ProxyAttachment() for
// demonstration purposes
AttachmentsViewMain(attachments: [ProxyAttachment()]) AttachmentsViewMain(attachments: [ProxyAttachment()])
} }
} }
// MARK: one AttachmentPreview /// a view that previews one attachment file
struct AttPrev:View{ struct AttPrev:View{
// the attachment that is going to be previewed
var attachment: DisplayAttachment var attachment: DisplayAttachment
var preload = false // by default false
var shouldBeDownloaded = false
// whether this attachment is downloaded to the documents directory
@State var isDownloaded: Bool = false @State var isDownloaded: Bool = false
@State var isFullScreen: Bool = false @State var isFullScreen: Bool = false
func download(){ /// a func to find the documents directory
func getDocumentsDirectory() -> URL { func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0] return paths[0]
} }
/// a func that downloads the attachment into the documents directory
func download() {
let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName) let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName)
do { do {
...@@ -101,19 +115,16 @@ struct AttPrev:View{ ...@@ -101,19 +115,16 @@ struct AttPrev:View{
self.isDownloaded = true self.isDownloaded = true
} }
//is the file already downloaded? /// a func that checks if an attachment is downloaded into the documents directory or not
/// updates the 'isDownloaded' property accordingly
func getDownloadedState(){ func getDownloadedState(){
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName) let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName)
if FileManager.default.fileExists(atPath: filename.path){self.isDownloaded = true} if FileManager.default.fileExists(atPath: filename.path){self.isDownloaded = true}
} }
var body: some View{ var body: some View{
if preload {self.download()} if shouldBeDownloaded {self.download()}
//this QuickLookView has to be defined here so it reloads on every state-change //this QuickLookView has to be defined here so it reloads on every state-change
let QLV = QuickLookView(name: self.attachment.myName, data: self.attachment.myData, shallDL: self.isDownloaded) let QLV = QuickLookView(name: self.attachment.myName, data: self.attachment.myData, shallDL: self.isDownloaded)
...@@ -122,7 +133,7 @@ struct AttPrev:View{ ...@@ -122,7 +133,7 @@ struct AttPrev:View{
CardV(title: self.attachment.myName, CardV(title: self.attachment.myName,
//those are the actions visable under the cklicked preview //those are the actions visable under the cklicked preview
actions: self.isDownloaded||self.preload ? actions: self.isDownloaded||self.shouldBeDownloaded ?
[ [
/* /*
self.ActionView(NSLocalizedString("delete", comment: ""), self.ActionView(NSLocalizedString("delete", comment: ""),
...@@ -181,13 +192,9 @@ struct AttPrev:View{ ...@@ -181,13 +192,9 @@ struct AttPrev:View{
self.getDownloadedState() self.getDownloadedState()
//download all functionality //download all functionality
if self.preload {self.isDownloaded=true; self.download()} if self.shouldBeDownloaded {self.isDownloaded=true; self.download()}
}) })
.onDisappear(perform: { .onDisappear(perform: {
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName) let filename = getDocumentsDirectory().appendingPathComponent(self.attachment.myName)
do { do {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment