mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-08 22:33:26 +01:00
94 lines
4.1 KiB
Swift
94 lines
4.1 KiB
Swift
//
|
|
// AddSourceTextFieldCell.swift
|
|
// AltStore
|
|
//
|
|
// Created by Riley Testut on 10/17/23.
|
|
// Copyright © 2023 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class AddSourceTextFieldCell: UICollectionViewCell
|
|
{
|
|
let textField: UITextField
|
|
|
|
private let backgroundEffectView: UIVisualEffectView
|
|
private let imageView: UIImageView
|
|
|
|
override init(frame: CGRect)
|
|
{
|
|
self.textField = UITextField(frame: frame)
|
|
self.textField.translatesAutoresizingMaskIntoConstraints = false
|
|
self.textField.placeholder = "apps.sidestore.io"
|
|
self.textField.textContentType = .URL
|
|
// self.textField.keyboardType = .URL // we can add multiple sources now delimited by spaces/newline so we use normal keyboard not url keyboard
|
|
self.textField.returnKeyType = .done
|
|
self.textField.autocapitalizationType = .none
|
|
self.textField.autocorrectionType = .no
|
|
self.textField.spellCheckingType = .no
|
|
self.textField.enablesReturnKeyAutomatically = true
|
|
self.textField.tintColor = .altPrimary
|
|
self.textField.textColor = UIColor { traits in
|
|
if traits.userInterfaceStyle == .dark
|
|
{
|
|
//TODO: Change once we update UIColor.altPrimary to match 2.0 icon.
|
|
return UIColor(resource: .gradientTop)
|
|
}
|
|
else
|
|
{
|
|
return UIColor.altPrimary
|
|
}
|
|
}
|
|
|
|
let blurEffect = UIBlurEffect(style: .systemChromeMaterial)
|
|
self.backgroundEffectView = UIVisualEffectView(effect: blurEffect)
|
|
self.backgroundEffectView.translatesAutoresizingMaskIntoConstraints = false
|
|
self.backgroundEffectView.clipsToBounds = true
|
|
self.backgroundEffectView.backgroundColor = .altPrimary
|
|
|
|
let config = UIImage.SymbolConfiguration(pointSize: 20, weight: .bold)
|
|
let image = UIImage(systemName: "link", withConfiguration: config)?.withRenderingMode(.alwaysTemplate)
|
|
self.imageView = UIImageView(image: image)
|
|
self.imageView.translatesAutoresizingMaskIntoConstraints = false
|
|
self.imageView.contentMode = .center
|
|
self.imageView.tintColor = .altPrimary
|
|
|
|
super.init(frame: frame)
|
|
|
|
self.contentView.preservesSuperviewLayoutMargins = true
|
|
|
|
self.backgroundEffectView.contentView.addSubview(self.imageView)
|
|
self.backgroundEffectView.contentView.addSubview(self.textField)
|
|
self.contentView.addSubview(self.backgroundEffectView)
|
|
|
|
NSLayoutConstraint.activate([
|
|
self.backgroundEffectView.leadingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.leadingAnchor),
|
|
self.backgroundEffectView.trailingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.trailingAnchor),
|
|
self.backgroundEffectView.topAnchor.constraint(equalTo: self.contentView.topAnchor),
|
|
self.backgroundEffectView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor),
|
|
|
|
self.imageView.widthAnchor.constraint(equalToConstant: 44),
|
|
self.imageView.heightAnchor.constraint(equalToConstant: 44),
|
|
self.imageView.centerYAnchor.constraint(equalTo: self.backgroundEffectView.centerYAnchor),
|
|
|
|
self.textField.topAnchor.constraint(equalTo: self.backgroundEffectView.topAnchor, constant: 15),
|
|
self.textField.bottomAnchor.constraint(equalTo: self.backgroundEffectView.bottomAnchor, constant: -15),
|
|
self.textField.trailingAnchor.constraint(equalTo: self.backgroundEffectView.trailingAnchor, constant: -15),
|
|
|
|
self.imageView.leadingAnchor.constraint(equalTo: self.backgroundEffectView.leadingAnchor, constant: 15),
|
|
self.textField.leadingAnchor.constraint(equalToSystemSpacingAfter: self.imageView.trailingAnchor, multiplier: 1.0),
|
|
])
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func layoutSubviews()
|
|
{
|
|
super.layoutSubviews()
|
|
|
|
self.backgroundEffectView.layer.cornerRadius = self.backgroundEffectView.bounds.midY
|
|
}
|
|
}
|