added iOS source code
[wl-app.git] / iOS / WolneLektury / Screens / Common / Cells / BookTableViewCell.swift
1 //
2 //  BookTableViewCell.swift
3 //  WolneLektury
4 //
5 //  Created by Pawel Dabrowski on 14/06/2018.
6 //  Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved.
7 //
8
9 import UIKit
10 import Kingfisher
11
12 protocol BookTableViewCellDelegate: class{
13     func bookTableViewCellDelegateDidTapTrashButton(bookSlug: String, indexPath: IndexPath?)
14 }
15
16 class BookTableViewCell: UITableViewCell {
17     
18     weak var delegate: BookTableViewCellDelegate?
19     
20     @IBOutlet weak var coverImageView: UIImageView!
21     @IBOutlet weak var authorLabel: UILabel!
22     @IBOutlet weak var titleLabel: UILabel!
23     
24     @IBOutlet weak var epochTitleLabel: UILabel!
25     @IBOutlet weak var kindTitleLabel: UILabel!
26     @IBOutlet weak var genreTitleLabel: UILabel!
27     
28     @IBOutlet weak var epochLabel: UILabel!
29     @IBOutlet weak var kindLabel: UILabel!
30     @IBOutlet weak var genreLabel: UILabel!
31     
32     @IBOutlet weak var descFirstImageView: UIImageView!
33     @IBOutlet weak var descFirstLabel: UILabel!
34     @IBOutlet weak var descSecondImageView: UIImageView!
35     @IBOutlet weak var descSecondLabel: UILabel!
36     
37     @IBOutlet weak var epochTopConstraint: NSLayoutConstraint!
38     
39     @IBOutlet weak var bookDescriptionView: BookDescriptionView!
40     
41     private var bookSlug = ""
42     private var indexPath: IndexPath?
43     
44     override func awakeFromNib() {
45         super.awakeFromNib()
46         coverImageView.layer.cornerRadius = 4
47     }
48
49     func setup(bookModel: BookModel){
50         
51         bookDescriptionView.setup(bookModel: bookModel)
52         
53         coverImageView.image = nil
54         bookSlug = bookModel.slug
55         if let url = bookModel.getCoverThumbUrl(){
56             
57             coverImageView.kf.setImage(with: ImageResource(downloadURL: url),
58                                            placeholder: #imageLiteral(resourceName: "list_nocover"),
59                                            options: [.transition(.fade(1))],
60                                            progressBlock: nil,
61                                            completionHandler: { (image, error, cacheType, url) in
62             })
63         }
64     }
65     
66     func setup(bookDetailsModel: BookDetailsModel, delegate: BookTableViewCellDelegate, indexPath: IndexPath){
67
68         self.delegate = delegate
69         self.indexPath = indexPath
70         
71         bookSlug = bookDetailsModel.slug
72         bookDescriptionView.setup(bookDetailsModel: bookDetailsModel)
73         bookDescriptionView.trashButton.removeTarget(nil, action: nil, for: .allEvents)
74         bookDescriptionView.trashButton.addTarget(self, action: #selector(trashButtonAction), for: .touchUpInside)
75         
76         coverImageView.image = nil
77         
78         if let url = bookDetailsModel.getCoverThumbUrl(){
79             
80             coverImageView.kf.setImage(with: ImageResource(downloadURL: url),
81                                        placeholder: #imageLiteral(resourceName: "list_nocover"),
82                                        options: [.transition(.fade(1))],
83                                        progressBlock: nil,
84                                        completionHandler: { (image, error, cacheType, url) in
85             })
86         }
87     }
88     
89     @objc func trashButtonAction(){
90         delegate?.bookTableViewCellDelegateDidTapTrashButton(bookSlug: bookSlug, indexPath: indexPath)
91     }
92 }