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.
139 lines
3.3 KiB
139 lines
3.3 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 "RCTTabBarItem.h" |
|
|
|
#import "RCTConvert.h" |
|
#import "RCTLog.h" |
|
#import "UIView+React.h" |
|
|
|
@implementation RCTConvert (UITabBarSystemItem) |
|
|
|
RCT_ENUM_CONVERTER(UITabBarSystemItem, (@{ |
|
@"bookmarks": @(UITabBarSystemItemBookmarks), |
|
@"contacts": @(UITabBarSystemItemContacts), |
|
@"downloads": @(UITabBarSystemItemDownloads), |
|
@"favorites": @(UITabBarSystemItemFavorites), |
|
@"featured": @(UITabBarSystemItemFeatured), |
|
@"history": @(UITabBarSystemItemHistory), |
|
@"more": @(UITabBarSystemItemMore), |
|
@"most-recent": @(UITabBarSystemItemMostRecent), |
|
@"most-viewed": @(UITabBarSystemItemMostViewed), |
|
@"recents": @(UITabBarSystemItemRecents), |
|
@"search": @(UITabBarSystemItemSearch), |
|
@"top-rated": @(UITabBarSystemItemTopRated), |
|
}), NSNotFound, integerValue) |
|
|
|
@end |
|
|
|
@implementation RCTTabBarItem{ |
|
UITapGestureRecognizer *_selectRecognizer; |
|
} |
|
|
|
@synthesize barItem = _barItem; |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame |
|
{ |
|
if ((self = [super initWithFrame:frame])) { |
|
_systemIcon = NSNotFound; |
|
#if TARGET_OS_TV |
|
_wasSelectedInJS = NO; |
|
#endif |
|
} |
|
return self; |
|
} |
|
|
|
- (UITabBarItem *)barItem |
|
{ |
|
if (!_barItem) { |
|
_barItem = [UITabBarItem new]; |
|
_systemIcon = NSNotFound; |
|
} |
|
return _barItem; |
|
} |
|
|
|
- (void)setTestID:(NSString *)testID |
|
{ |
|
self.barItem.accessibilityIdentifier = testID; |
|
} |
|
|
|
- (void)setBadge:(id)badge |
|
{ |
|
_badge = [badge copy]; |
|
self.barItem.badgeValue = [badge description]; |
|
} |
|
|
|
- (void)setSystemIcon:(UITabBarSystemItem)systemIcon |
|
{ |
|
if (_systemIcon != systemIcon) { |
|
_systemIcon = systemIcon; |
|
UITabBarItem *oldItem = _barItem; |
|
_barItem = [[UITabBarItem alloc] initWithTabBarSystemItem:_systemIcon |
|
tag:oldItem.tag]; |
|
_barItem.title = oldItem.title; |
|
_barItem.imageInsets = oldItem.imageInsets; |
|
_barItem.badgeValue = oldItem.badgeValue; |
|
} |
|
} |
|
|
|
- (void)setIcon:(UIImage *)icon |
|
{ |
|
_icon = icon; |
|
if (_icon && _systemIcon != NSNotFound) { |
|
_systemIcon = NSNotFound; |
|
UITabBarItem *oldItem = _barItem; |
|
_barItem = [UITabBarItem new]; |
|
_barItem.title = oldItem.title; |
|
_barItem.imageInsets = oldItem.imageInsets; |
|
_barItem.selectedImage = oldItem.selectedImage; |
|
_barItem.badgeValue = oldItem.badgeValue; |
|
} |
|
|
|
if (_renderAsOriginal) { |
|
self.barItem.image = [_icon imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; |
|
} else { |
|
self.barItem.image = _icon; |
|
} |
|
} |
|
|
|
- (void)setSelectedIcon:(UIImage *)selectedIcon |
|
{ |
|
_selectedIcon = selectedIcon; |
|
|
|
if (_renderAsOriginal) { |
|
self.barItem.selectedImage = [_selectedIcon imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; |
|
} else { |
|
self.barItem.selectedImage = _selectedIcon; |
|
} |
|
} |
|
|
|
- (void)setBadgeColor:(UIColor *)badgeColor |
|
{ |
|
// badgeColor available since iOS 10 |
|
if ([self.barItem respondsToSelector:@selector(badgeColor)]) { |
|
self.barItem.badgeColor = badgeColor; |
|
} |
|
} |
|
|
|
- (UIViewController *)reactViewController |
|
{ |
|
return self.superview.reactViewController; |
|
} |
|
|
|
#if TARGET_OS_TV |
|
|
|
// On Apple TV, we let native control the tab bar selection after initial render |
|
- (void)setSelected:(BOOL)selected |
|
{ |
|
if (!_wasSelectedInJS) { |
|
_selected = selected; |
|
} |
|
} |
|
|
|
#endif |
|
|
|
@end
|
|
|