Replaces AnyObserver with UIBindingObserver in public interface.

This commit is contained in:
Krunoslav Zaher 2016-10-11 22:41:05 +02:00
parent dc933008a8
commit 832f79cd02
25 changed files with 70 additions and 70 deletions

View File

@ -25,20 +25,20 @@ extension Reactive where Base: NSLayoutConstraint {
/** /**
Bindable sink for `constant` property. Bindable sink for `constant` property.
*/ */
public var constant: AnyObserver<CGFloat> { public var constant: UIBindingObserver<Base, CGFloat> {
return UIBindingObserver(UIElement: self.base) { constraint, constant in return UIBindingObserver(UIElement: self.base) { constraint, constant in
constraint.constant = constant constraint.constant = constant
}.asObserver() }
} }
/** /**
Bindable sink for `active` property. Bindable sink for `active` property.
*/ */
@available(iOS 8, OSX 10.10, *) @available(iOS 8, OSX 10.10, *)
public var active: AnyObserver<Bool> { public var active: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { constraint, value in return UIBindingObserver(UIElement: self.base) { constraint, value in
constraint.isActive = value constraint.isActive = value
}.asObserver() }
} }
} }

View File

@ -81,10 +81,10 @@ extension Reactive where Base: NSControl {
/** /**
Bindable sink for `enabled` property. Bindable sink for `enabled` property.
*/ */
public var enabled: AnyObserver<Bool> { public var enabled: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { (owner, value) in return UIBindingObserver(UIElement: self.base) { (owner, value) in
owner.isEnabled = value owner.isEnabled = value
}.asObserver() }
} }
} }

View File

@ -19,7 +19,7 @@ extension Reactive where Base: NSImageView {
/** /**
Bindable sink for `image` property. Bindable sink for `image` property.
*/ */
public var image: AnyObserver<NSImage?> { public var image: UIBindingObserver<Base, NSImage?> {
return image(transitionType: nil) return image(transitionType: nil)
} }
@ -29,7 +29,7 @@ extension Reactive where Base: NSImageView {
- parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...) - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
*/ */
@available(*, deprecated, renamed: "image(transitionType:)") @available(*, deprecated, renamed: "image(transitionType:)")
public func imageAnimated(_ transitionType: String?) -> AnyObserver<NSImage?> { public func imageAnimated(_ transitionType: String?) -> UIBindingObserver<Base, NSImage?> {
return UIBindingObserver(UIElement: self.base) { control, value in return UIBindingObserver(UIElement: self.base) { control, value in
if let transitionType = transitionType { if let transitionType = transitionType {
if value != nil { if value != nil {
@ -44,7 +44,7 @@ extension Reactive where Base: NSImageView {
control.layer?.removeAllAnimations() control.layer?.removeAllAnimations()
} }
control.image = value control.image = value
}.asObserver() }
} }
/** /**
@ -52,7 +52,7 @@ extension Reactive where Base: NSImageView {
- parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...) - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
*/ */
public func image(transitionType: String? = nil) -> AnyObserver<NSImage?> { public func image(transitionType: String? = nil) -> UIBindingObserver<Base, NSImage?> {
return UIBindingObserver(UIElement: self.base) { control, value in return UIBindingObserver(UIElement: self.base) { control, value in
if let transitionType = transitionType { if let transitionType = transitionType {
if value != nil { if value != nil {
@ -67,7 +67,7 @@ extension Reactive where Base: NSImageView {
control.layer?.removeAllAnimations() control.layer?.removeAllAnimations()
} }
control.image = value control.image = value
}.asObserver() }
} }
} }

View File

@ -18,19 +18,19 @@
/** /**
Bindable sink for `hidden` property. Bindable sink for `hidden` property.
*/ */
public var hidden: AnyObserver<Bool> { public var hidden: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { view, value in return UIBindingObserver(UIElement: self.base) { view, value in
view.isHidden = value view.isHidden = value
}.asObserver() }
} }
/** /**
Bindable sink for `alphaValue` property. Bindable sink for `alphaValue` property.
*/ */
public var alpha: AnyObserver<CGFloat> { public var alpha: UIBindingObserver<Base, CGFloat> {
return UIBindingObserver(UIElement: self.base) { view, value in return UIBindingObserver(UIElement: self.base) { view, value in
view.alphaValue = value view.alphaValue = value
}.asObserver() }
} }
} }

View File

@ -18,14 +18,14 @@ extension Reactive where Base: UIActivityIndicatorView {
/** /**
Bindable sink for `startAnimating()`, `stopAnimating()` methods. Bindable sink for `startAnimating()`, `stopAnimating()` methods.
*/ */
public var animating: AnyObserver<Bool> { public var animating: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { activityIndicator, active in return UIBindingObserver(UIElement: self.base) { activityIndicator, active in
if active { if active {
activityIndicator.startAnimating() activityIndicator.startAnimating()
} else { } else {
activityIndicator.stopAnimating() activityIndicator.stopAnimating()
} }
}.asObserver() }
} }
} }

View File

@ -22,10 +22,10 @@ extension Reactive where Base: UIAlertAction {
/** /**
Bindable sink for `enabled` property. Bindable sink for `enabled` property.
*/ */
public var enabled: AnyObserver<Bool> { public var enabled: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { alertAction, value in return UIBindingObserver(UIElement: self.base) { alertAction, value in
alertAction.isEnabled = value alertAction.isEnabled = value
}.asObserver() }
} }
} }

View File

@ -20,10 +20,10 @@ import Foundation
/** /**
Bindable sink for `networkActivityIndicatorVisible`. Bindable sink for `networkActivityIndicatorVisible`.
*/ */
public var networkActivityIndicatorVisible: AnyObserver<Bool> { public var networkActivityIndicatorVisible: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { application, active in return UIBindingObserver(UIElement: self.base) { application, active in
application.isNetworkActivityIndicatorVisible = active application.isNetworkActivityIndicatorVisible = active
}.asObserver() }
} }
} }
#endif #endif

View File

@ -20,10 +20,10 @@ extension Reactive where Base: UIBarButtonItem {
/** /**
Bindable sink for `enabled` property. Bindable sink for `enabled` property.
*/ */
public var enabled: AnyObserver<Bool> { public var enabled: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { UIElement, value in return UIBindingObserver(UIElement: self.base) { UIElement, value in
UIElement.isEnabled = value UIElement.isEnabled = value
}.asObserver() }
} }
/** /**

View File

@ -59,10 +59,10 @@ extension Reactive where Base: UIButton {
/** /**
Reactive wrapper for `setTitle(_:controlState:)` Reactive wrapper for `setTitle(_:controlState:)`
*/ */
public func title(controlState: UIControlState = []) -> AnyObserver<String?> { public func title(controlState: UIControlState = []) -> UIBindingObserver<Base, String?> {
return UIBindingObserver<UIButton, String?>(UIElement: self.base) { (button, title) -> () in return UIBindingObserver<Base, String?>(UIElement: self.base) { (button, title) -> () in
button.setTitle(title, for: controlState) button.setTitle(title, for: controlState)
}.asObserver() }
} }
} }
#endif #endif

View File

@ -19,19 +19,19 @@ extension Reactive where Base: UIControl {
/** /**
Bindable sink for `enabled` property. Bindable sink for `enabled` property.
*/ */
public var enabled: AnyObserver<Bool> { public var enabled: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { control, value in return UIBindingObserver(UIElement: self.base) { control, value in
control.isEnabled = value control.isEnabled = value
}.asObserver() }
} }
/** /**
Bindable sink for `selected` property. Bindable sink for `selected` property.
*/ */
public var selected: AnyObserver<Bool> { public var selected: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { control, selected in return UIBindingObserver(UIElement: self.base) { control, selected in
control.isSelected = selected control.isSelected = selected
}.asObserver() }
} }
/** /**

View File

@ -19,7 +19,7 @@ extension Reactive where Base: UIImageView {
/** /**
Bindable sink for `image` property. Bindable sink for `image` property.
*/ */
public var image: AnyObserver<UIImage?> { public var image: UIBindingObserver<Base, UIImage?> {
return image(transitionType: nil) return image(transitionType: nil)
} }
@ -29,7 +29,7 @@ extension Reactive where Base: UIImageView {
- parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...) - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
*/ */
@available(*, deprecated, renamed: "image(transitionType:)") @available(*, deprecated, renamed: "image(transitionType:)")
public func imageAnimated(_ transitionType: String?) -> AnyObserver<UIImage?> { public func imageAnimated(_ transitionType: String?) -> UIBindingObserver<Base, UIImage?> {
return UIBindingObserver(UIElement: base) { imageView, image in return UIBindingObserver(UIElement: base) { imageView, image in
if let transitionType = transitionType { if let transitionType = transitionType {
if image != nil { if image != nil {
@ -44,7 +44,7 @@ extension Reactive where Base: UIImageView {
imageView.layer.removeAllAnimations() imageView.layer.removeAllAnimations()
} }
imageView.image = image imageView.image = image
}.asObserver() }
} }
/** /**
@ -52,7 +52,7 @@ extension Reactive where Base: UIImageView {
- parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...) - parameter transitionType: Optional transition type while setting the image (kCATransitionFade, kCATransitionMoveIn, ...)
*/ */
public func image(transitionType: String? = nil) -> AnyObserver<UIImage?> { public func image(transitionType: String? = nil) -> UIBindingObserver<Base, UIImage?> {
return UIBindingObserver(UIElement: base) { imageView, image in return UIBindingObserver(UIElement: base) { imageView, image in
if let transitionType = transitionType { if let transitionType = transitionType {
if image != nil { if image != nil {
@ -67,7 +67,7 @@ extension Reactive where Base: UIImageView {
imageView.layer.removeAllAnimations() imageView.layer.removeAllAnimations()
} }
imageView.image = image imageView.image = image
}.asObserver() }
} }
} }

View File

@ -19,19 +19,19 @@ extension Reactive where Base: UILabel {
/** /**
Bindable sink for `text` property. Bindable sink for `text` property.
*/ */
public var text: AnyObserver<String?> { public var text: UIBindingObserver<Base, String?> {
return UIBindingObserver(UIElement: self.base) { label, text in return UIBindingObserver(UIElement: self.base) { label, text in
label.text = text label.text = text
}.asObserver() }
} }
/** /**
Bindable sink for `attributedText` property. Bindable sink for `attributedText` property.
*/ */
public var attributedText: AnyObserver<NSAttributedString?> { public var attributedText: UIBindingObserver<Base, NSAttributedString?> {
return UIBindingObserver(UIElement: self.base) { label, text in return UIBindingObserver(UIElement: self.base) { label, text in
label.attributedText = text label.attributedText = text
}.asObserver() }
} }
} }

View File

@ -18,10 +18,10 @@ extension Reactive where Base: UINavigationItem {
/** /**
Bindable sink for `title` property. Bindable sink for `title` property.
*/ */
public var title: AnyObserver<String?> { public var title: UIBindingObserver<Base, String?> {
return UIBindingObserver(UIElement: self.base) { navigationItem, text in return UIBindingObserver(UIElement: self.base) { navigationItem, text in
navigationItem.title = text navigationItem.title = text
}.asObserver() }
} }
} }

View File

@ -19,10 +19,10 @@ extension Reactive where Base: UIPageControl {
/** /**
Bindable sink for `currentPage` property. Bindable sink for `currentPage` property.
*/ */
public var currentPage: AnyObserver<Int> { public var currentPage: UIBindingObserver<Base, Int> {
return UIBindingObserver(UIElement: self.base) { controller, page in return UIBindingObserver(UIElement: self.base) { controller, page in
controller.currentPage = page controller.currentPage = page
}.asObserver() }
} }
} }

View File

@ -19,10 +19,10 @@ extension Reactive where Base: UIProgressView {
/** /**
Bindable sink for `progress` property Bindable sink for `progress` property
*/ */
public var progress: AnyObserver<Float> { public var progress: UIBindingObserver<Base, Float> {
return UIBindingObserver(UIElement: self.base) { progressView, progress in return UIBindingObserver(UIElement: self.base) { progressView, progress in
progressView.progress = progress progressView.progress = progress
}.asObserver() }
} }
} }

View File

@ -18,14 +18,14 @@ extension Reactive where Base: UIRefreshControl {
/** /**
Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.
*/ */
public var refreshing: AnyObserver<Bool> { public var refreshing: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { refreshControl, refresh in return UIBindingObserver(UIElement: self.base) { refreshControl, refresh in
if refresh { if refresh {
refreshControl.beginRefreshing() refreshControl.beginRefreshing()
} else { } else {
refreshControl.endRefreshing() refreshControl.endRefreshing()
} }
}.asObserver() }
} }
} }

View File

@ -54,10 +54,10 @@ extension Reactive where Base: UIScrollView {
/** /**
Bindable sink for `scrollEnabled` property. Bindable sink for `scrollEnabled` property.
*/ */
public var scrollEnabled: AnyObserver<Bool> { public var scrollEnabled: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { scrollView, scrollEnabled in return UIBindingObserver(UIElement: self.base) { scrollView, scrollEnabled in
scrollView.isScrollEnabled = scrollEnabled scrollView.isScrollEnabled = scrollEnabled
}.asObserver() }
} }
/** /**

View File

@ -19,10 +19,10 @@ extension Reactive where Base: UITabBarItem {
/** /**
Bindable sink for `badgeValue` property. Bindable sink for `badgeValue` property.
*/ */
public var badgeValue: AnyObserver<String?> { public var badgeValue: UIBindingObserver<Base, String?> {
return UIBindingObserver(UIElement: self.base) { tabBarItem, badgeValue in return UIBindingObserver(UIElement: self.base) { tabBarItem, badgeValue in
tabBarItem.badgeValue = badgeValue tabBarItem.badgeValue = badgeValue
}.asObserver() }
} }
} }

View File

@ -18,19 +18,19 @@ extension Reactive where Base: UIView {
/** /**
Bindable sink for `hidden` property. Bindable sink for `hidden` property.
*/ */
public var hidden: AnyObserver<Bool> { public var hidden: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: self.base) { view, hidden in return UIBindingObserver(UIElement: self.base) { view, hidden in
view.isHidden = hidden view.isHidden = hidden
}.asObserver() }
} }
/** /**
Bindable sink for `alpha` property. Bindable sink for `alpha` property.
*/ */
public var alpha: AnyObserver<CGFloat> { public var alpha: UIBindingObserver<Base, CGFloat> {
return UIBindingObserver(UIElement: self.base) { view, alpha in return UIBindingObserver(UIElement: self.base) { view, alpha in
view.alpha = alpha view.alpha = alpha
}.asObserver() }
} }
} }

View File

@ -20,10 +20,10 @@ import Foundation
/** /**
Bindable sink for `title`. Bindable sink for `title`.
*/ */
public var title: AnyObserver<String> { public var title: UIBindingObserver<Base, String> {
return UIBindingObserver(UIElement: self.base) { viewController, title in return UIBindingObserver(UIElement: self.base) { viewController, title in
viewController.title = title viewController.title = title
}.asObserver() }
} }
} }
#endif #endif

View File

@ -14,15 +14,15 @@ import CoreLocation
#endif #endif
private extension Reactive where Base: UILabel { private extension Reactive where Base: UILabel {
var driveCoordinates: AnyObserver<CLLocationCoordinate2D> { var driveCoordinates: UIBindingObserver<Base, CLLocationCoordinate2D> {
return UIBindingObserver(UIElement: base) { label, location in return UIBindingObserver(UIElement: base) { label, location in
label.text = "Lat: \(location.latitude)\nLon: \(location.longitude)" label.text = "Lat: \(location.latitude)\nLon: \(location.longitude)"
}.asObserver() }
} }
} }
private extension Reactive where Base: UIView { private extension Reactive where Base: UIView {
var driveAuthorization: AnyObserver<Bool> { var driveAuthorization: UIBindingObserver<Base, Bool> {
return UIBindingObserver(UIElement: base) { view, authorized in return UIBindingObserver(UIElement: base) { view, authorized in
if authorized { if authorized {
view.isHidden = true view.isHidden = true
@ -32,7 +32,7 @@ private extension Reactive where Base: UIView {
view.isHidden = false view.isHidden = false
view.superview?.bringSubview(toFront:view) view.superview?.bringSubview(toFront:view)
} }
}.asObserver() }
} }
} }

View File

@ -19,7 +19,7 @@ struct Colors {
} }
extension Reactive where Base: UINavigationController { extension Reactive where Base: UINavigationController {
var serviceState: AnyObserver<ServiceState?> { var serviceState: UIBindingObserver<Base, ServiceState?> {
return UIBindingObserver(UIElement: base) { navigationController, maybeServiceState in return UIBindingObserver(UIElement: base) { navigationController, maybeServiceState in
// if nil is being bound, then don't change color, it's not perfect, but :) // if nil is being bound, then don't change color, it's not perfect, but :)
if let serviceState = maybeServiceState { if let serviceState = maybeServiceState {
@ -29,6 +29,6 @@ extension Reactive where Base: UINavigationController {
? Colors.OfflineColor ? Colors.OfflineColor
: Colors.OnlineColor : Colors.OnlineColor
} }
}.asObserver() }
} }
} }

View File

@ -49,10 +49,10 @@ extension ValidationResult {
} }
extension Reactive where Base: UILabel { extension Reactive where Base: UILabel {
var validationResult: AnyObserver<ValidationResult> { var validationResult: UIBindingObserver<Base, ValidationResult> {
return UIBindingObserver(UIElement: base) { label, result in return UIBindingObserver(UIElement: base) { label, result in
label.textColor = result.textColor label.textColor = result.textColor
label.text = result.description label.text = result.description
}.asObserver() }
} }
} }

View File

@ -20,7 +20,7 @@ extension Reactive where Base: UIImageView{
return downloadableImageAnimated(nil) return downloadableImageAnimated(nil)
} }
func downloadableImageAnimated(_ transitionType:String?) -> AnyObserver<DownloadableImage> { func downloadableImageAnimated(_ transitionType:String?) -> UIBindingObserver<Base, DownloadableImage> {
return UIBindingObserver(UIElement: base as UIImageView) { imageView, image in return UIBindingObserver(UIElement: base as UIImageView) { imageView, image in
for subview in imageView.subviews { for subview in imageView.subviews {
subview.removeFromSuperview() subview.removeFromSuperview()
@ -35,7 +35,7 @@ extension Reactive where Base: UIImageView{
label.text = "⚠️" label.text = "⚠️"
imageView.addSubview(label) imageView.addSubview(label)
} }
}.asObserver() }
} }
} }
#endif #endif

View File

@ -60,7 +60,7 @@ extension ControlTests {
extension ControlTests { extension ControlTests {
func testLabel_HasWeakReference() { func testLabel_HasWeakReference() {
let variable = Variable<NSAttributedString?>(nil) let variable = Variable<NSAttributedString?>(nil)
ensureControlObserverHasWeakReference(UILabel(), { (label: UILabel) -> AnyObserver<NSAttributedString?> in label.rx.attributedText }, { variable.asObservable() }) ensureControlObserverHasWeakReference(UILabel(), { (label: UILabel) -> AnyObserver<NSAttributedString?> in label.rx.attributedText.asObserver() }, { variable.asObservable() })
} }
func testLabel_NextElementsSetsValue() { func testLabel_NextElementsSetsValue() {
@ -77,7 +77,7 @@ extension ControlTests {
// UIProgressView // UIProgressView
extension ControlTests { extension ControlTests {
func testProgressView_HasWeakReference() { func testProgressView_HasWeakReference() {
ensureControlObserverHasWeakReference(UIProgressView(), { (progressView: UIProgressView) -> AnyObserver<Float> in progressView.rx.progress }, { Variable<Float>(0.0).asObservable() }) ensureControlObserverHasWeakReference(UIProgressView(), { (progressView: UIProgressView) -> AnyObserver<Float> in progressView.rx.progress.asObserver() }, { Variable<Float>(0.0).asObservable() })
} }
func testProgressView_NextElementsSetsValue() { func testProgressView_NextElementsSetsValue() {
@ -126,7 +126,7 @@ extension ControlTests {
// UIActivityIndicatorView // UIActivityIndicatorView
extension ControlTests { extension ControlTests {
func testActivityIndicator_HasWeakReference() { func testActivityIndicator_HasWeakReference() {
ensureControlObserverHasWeakReference(UIActivityIndicatorView(), { (view: UIActivityIndicatorView) -> AnyObserver<Bool> in view.rx.animating }, { Variable<Bool>(true).asObservable() }) ensureControlObserverHasWeakReference(UIActivityIndicatorView(), { (view: UIActivityIndicatorView) -> AnyObserver<Bool> in view.rx.animating.asObserver() }, { Variable<Bool>(true).asObservable() })
} }
func testActivityIndicator_NextElementsSetsValue() { func testActivityIndicator_NextElementsSetsValue() {