This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
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.
93 lines
2.2 KiB
93 lines
2.2 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
*/ |
|
|
|
#import "RCTSurfaceRootShadowView.h" |
|
|
|
#import "RCTI18nUtil.h" |
|
#import "RCTShadowView+Layout.h" |
|
#import "RCTUIManagerUtils.h" |
|
|
|
@implementation RCTSurfaceRootShadowView { |
|
CGSize _intrinsicSize; |
|
BOOL _isRendered; |
|
BOOL _isLaidOut; |
|
} |
|
|
|
- (instancetype)init |
|
{ |
|
if (self = [super init]) { |
|
self.viewName = @"RCTSurfaceRootView"; |
|
_baseDirection = [[RCTI18nUtil sharedInstance] isRTL] ? YGDirectionRTL : YGDirectionLTR; |
|
_minimumSize = CGSizeZero; |
|
_maximumSize = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX); |
|
|
|
self.alignSelf = YGAlignStretch; |
|
self.flex = 1; |
|
} |
|
|
|
return self; |
|
} |
|
|
|
- (void)insertReactSubview:(RCTShadowView *)subview atIndex:(NSInteger)atIndex |
|
{ |
|
[super insertReactSubview:subview atIndex:atIndex]; |
|
if (!_isRendered) { |
|
[_delegate rootShadowViewDidStartRendering:self]; |
|
_isRendered = YES; |
|
} |
|
} |
|
|
|
- (void)layoutWithAffectedShadowViews:(NSHashTable<RCTShadowView *> *)affectedShadowViews |
|
{ |
|
NSHashTable<NSString *> *other = [NSHashTable new]; |
|
|
|
RCTLayoutContext layoutContext = {}; |
|
layoutContext.absolutePosition = CGPointZero; |
|
layoutContext.affectedShadowViews = affectedShadowViews; |
|
layoutContext.other = other; |
|
|
|
[self layoutWithMinimumSize:_minimumSize |
|
maximumSize:_maximumSize |
|
layoutDirection:RCTUIKitLayoutDirectionFromYogaLayoutDirection(_baseDirection) |
|
layoutContext:layoutContext]; |
|
|
|
self.intrinsicSize = self.layoutMetrics.frame.size; |
|
|
|
if (_isRendered && !_isLaidOut) { |
|
[_delegate rootShadowViewDidStartLayingOut:self]; |
|
_isLaidOut = YES; |
|
} |
|
} |
|
|
|
- (void)setMinimumSize:(CGSize)minimumSize maximumSize:(CGSize)maximumSize |
|
{ |
|
if (CGSizeEqualToSize(minimumSize, _minimumSize) && |
|
CGSizeEqualToSize(maximumSize, _maximumSize)) { |
|
return; |
|
} |
|
|
|
_maximumSize = maximumSize; |
|
_minimumSize = minimumSize; |
|
} |
|
|
|
- (void)setIntrinsicSize:(CGSize)intrinsicSize |
|
{ |
|
if (CGSizeEqualToSize(_intrinsicSize, intrinsicSize)) { |
|
return; |
|
} |
|
|
|
_intrinsicSize = intrinsicSize; |
|
|
|
[_delegate rootShadowView:self didChangeIntrinsicSize:intrinsicSize]; |
|
} |
|
|
|
- (CGSize)intrinsicSize |
|
{ |
|
return _intrinsicSize; |
|
} |
|
|
|
@end
|
|
|