123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- //
- // NCEmptyDataSet.swift
- // Nextcloud
- //
- // Created by Marino Faggiana on 19/10/2020.
- // Copyright © 2020 Marino Faggiana. All rights reserved.
- //
- import UIKit
- @objc public protocol NCEmptyDataSetDelegate {
- @objc optional func emptyDataSetView(_ view: NCEmptyView)
- }
- class NCEmptyDataSet: NSObject {
-
- var emptyView: NCEmptyView?
- var fillBackgroundView: NCFillBackgroundView?
- var delegate: NCEmptyDataSetDelegate?
- var timer: Timer?
- var numberItemsForSections: Int = 0
-
- init(view: UIView, offset: CGFloat = 0, delegate: NCEmptyDataSetDelegate?) {
- super.init()
-
- if let fillBackgroundView = UINib(nibName: "NCFillBackgroundView", bundle: nil).instantiate(withOwner: self, options: nil).first as? NCFillBackgroundView {
-
- self.fillBackgroundView = fillBackgroundView
-
- fillBackgroundView.isHidden = true
- fillBackgroundView.translatesAutoresizingMaskIntoConstraints = false
-
- view.addSubview(fillBackgroundView)
-
- fillBackgroundView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
- fillBackgroundView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
- fillBackgroundView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
- fillBackgroundView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
- }
- if let emptyView = UINib(nibName: "NCEmptyView", bundle: nil).instantiate(withOwner: self, options: nil).first as? NCEmptyView {
-
- self.delegate = delegate
- self.emptyView = emptyView
-
- emptyView.isHidden = true
- emptyView.translatesAutoresizingMaskIntoConstraints = false
-
- // emptyView.backgroundColor = .red
- // emptyView.isHidden = false
-
- emptyView.emptyTitle.sizeToFit()
- emptyView.emptyDescription.sizeToFit()
-
- view.addSubview(emptyView)
- emptyView.widthAnchor.constraint(equalToConstant: 350).isActive = true
- emptyView.heightAnchor.constraint(equalToConstant: 250).isActive = true
-
- emptyView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
- emptyView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: offset).isActive = true
- }
- }
-
- func numberOfItemsInSection(_ num: Int, section: Int) {
-
- if section == 0 {
- numberItemsForSections = num
- } else {
- numberItemsForSections = numberItemsForSections + num
- }
-
- if let emptyView = emptyView {
-
- self.delegate?.emptyDataSetView?(emptyView)
-
- if !(timer?.isValid ?? false) && emptyView.isHidden == true {
- timer = Timer.scheduledTimer(timeInterval: 0.3, target: self, selector: #selector(timerHandler(_:)), userInfo: nil, repeats: false)
- }
-
- if numberItemsForSections > 0 {
- self.emptyView?.isHidden = true
- }
- }
- }
-
- @objc func timerHandler(_ timer: Timer) {
-
- if numberItemsForSections == 0 {
- self.emptyView?.isHidden = false
- } else {
- self.emptyView?.isHidden = true
- }
- }
- }
- public class NCEmptyView: UIView {
-
- @IBOutlet weak var emptyImage: UIImageView!
- @IBOutlet weak var emptyTitle: UILabel!
- @IBOutlet weak var emptyDescription: UILabel!
-
- public override func awakeFromNib() {
- super.awakeFromNib()
-
- emptyTitle.textColor = NCBrandColor.shared.label
- }
- }
- public class NCFillBackgroundView: UIView {
-
- @IBOutlet weak var fillBackground: UIImageView!
-
- public override func awakeFromNib() {
- super.awakeFromNib()
- }
- }
|