You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.0 KiB
110 lines
3.0 KiB
//
|
|
// Created by Marco Schmickler on 25.05.15.
|
|
// Copyright (c) 2015 Marco Schmickler. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
import Combine
|
|
|
|
var defaultImage = UIImage(named: "Kirschkeks-256x256.png")
|
|
var blackImage = UIImage(systemName: "0.circle")
|
|
|
|
class ItemCell: UICollectionViewCell {
|
|
var item: MediaItem?
|
|
private var cancellable: AnyCancellable?
|
|
|
|
var image: UIImageView!
|
|
var fav: UIImageView!
|
|
var loop: UIImageView!
|
|
var progress: UIProgressView!
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
super.init(coder: aDecoder)
|
|
}
|
|
|
|
override init(frame: CGRect) {
|
|
|
|
super.init(frame: frame)
|
|
|
|
image = UIImageView(frame: frame)
|
|
image.contentMode = UIView.ContentMode.scaleAspectFit
|
|
|
|
let fi = UIImage(systemName: "heart")
|
|
fav = UIImageView(image: fi)
|
|
// fav.contentMode = UIView.ContentMode.scaleAspectFill
|
|
|
|
image.addSubview(fav)
|
|
fav.isHidden = true
|
|
|
|
let ci = UIImage(systemName: "repeat.circle")
|
|
loop = UIImageView(image: ci)
|
|
// fav.contentMode = UIView.ContentMode.scaleAspectFill
|
|
|
|
image.addSubview(loop)
|
|
loop.isHidden = true
|
|
|
|
progress = UIProgressView(progressViewStyle: .default)
|
|
progress.progressTintColor = .red
|
|
progress.trackTintColor = .lightGray
|
|
progress.progress = 0.0
|
|
|
|
autolayout(["imag": image, "prog" : progress],
|
|
constraints:
|
|
"H:|[imag]|",
|
|
"H:|[prog]|",
|
|
"V:|[imag][prog]|")
|
|
}
|
|
|
|
func setItem(_ item: MediaItem) {
|
|
self.item = item
|
|
|
|
if item.type == ItemType.DOWNLOAD {
|
|
progress.progress = Float(item.length)
|
|
return
|
|
}
|
|
var f = false
|
|
|
|
if item.type == ItemType.SNAPSHOT {
|
|
f = item.parent!.favorite
|
|
}
|
|
|
|
fav.isHidden = !f
|
|
|
|
loop.isHidden = item.length == 0.0
|
|
|
|
if NetworkManager.sharedInstance.isBlack(item) {
|
|
image.image = blackImage
|
|
return
|
|
}
|
|
|
|
if let _ = item.thumbUrl, let nsurl = URL(string: item.thumbUrlAbsolute) {
|
|
image.image = defaultImage
|
|
cancellable = ImageLoader.shared.loadImage(from: nsurl).sink { [weak self] img in
|
|
self?.image.image = img ?? defaultImage
|
|
}
|
|
} else {
|
|
if let i = item.image {
|
|
image.image = i.scaleToSize(15 * 16, height: 15 * 9)
|
|
} else if item.children.count > 0 {
|
|
if let _ = item.children[0].thumbUrl, let nsurl = URL(string: item.children[0].thumbUrlAbsolute) {
|
|
image.image = defaultImage
|
|
cancellable = ImageLoader.shared.loadImage(from: nsurl).sink { [weak self] img in
|
|
self?.image.image = img ?? defaultImage
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
image.image = defaultImage
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
override func prepareForReuse() {
|
|
cancellable?.cancel()
|
|
cancellable = nil
|
|
image.image = nil
|
|
}
|
|
}
|