#import "UIConstants.h"
#import "Lang.h"
#import "SDK.h"
#import "CocoaUtils.h"

@implementation UIConstants

+ (NSDictionary<NSNumber *, NSArray<NSFont *> *> *)defaultTableViewCellFontMetrics {
	static dispatch_once_t onceToken;
	static NSMutableDictionary *metrics;
	dispatch_once(&onceToken, ^{
		metrics = [NSMutableDictionary dictionary];
		if (YES) {
			UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([UITableViewCell class])];
			metrics[@(UITableViewCellStyleDefault)] = [NSArray arrayWithObject:[cell.textLabel.font copy]];
		}
		if (YES) {
			UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:NSStringFromClass([UITableViewCell class])];
			metrics[@(UITableViewCellStyleValue1)] = [NSArray arrayWithObjects:[cell.textLabel.font copy], [cell.detailTextLabel.font copy], nil];
		}
		if (YES) {
			UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:NSStringFromClass([UITableViewCell class])];
			metrics[@(UITableViewCellStyleValue2)] = [NSArray arrayWithObjects:[cell.textLabel.font copy], [cell.detailTextLabel.font copy], nil];
		}
		if (YES) {
			UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:NSStringFromClass([UITableViewCell class])];
			metrics[@(UITableViewCellStyleSubtitle)] = [NSArray arrayWithObjects:[cell.textLabel.font copy], [cell.detailTextLabel.font copy], nil];
		}
	});
	return metrics;
}

+ (CGFloat)defaultStatusBarHeight {
	return 20;
}

+ (CGFloat)defaultLabelHeight {
	return 21;
}

+ (CGFloat)defaultButtonHeight {
	return 30;
}

+ (CGFloat)defaultSwitchHeight {
	return 31;
}

+ (CGFloat)defaultStepperHeight {
	return 29;
}

+ (CGFloat)defaultSliderHeight {
	return 30;
}

+ (CGFloat)defaultSegmentedControlHeight {
	return 28;
}

+ (CGFloat)defaultTextFieldHeight {
	return 30;
}

+ (CGFloat)defaultTableViewRowHeight {
	return 44;
}

+ (CGFloat)defaultTableViewSectionHeight:(UITableViewStyle)style {
	if (style == UITableViewStylePlain) {
		return 28;
	} else if (UITableViewStyleGrouped) {
		return 18;
	}
	return 0;
}

+ (CGFloat)defaultTableViewSeparatorHeight {
	return 1;
}

+ (CGFloat)defaultTableViewIndexWidth {
	return 15;
}

+ (UIEdgeInsets)defaultTableViewCellLayoutInsets {
	return UIEdgeInsetsMake(5, 15, 5, 15);
}

+ (CGFloat)defaultTableViewCellAccessoryWidth:(UITableViewCellAccessoryType)accessoryType {
	CGFloat w = 0;
	switch (accessoryType) {
		case UITableViewCellAccessoryDisclosureIndicator:
			w = 33;
			
			break;
			
		case UITableViewCellAccessoryDetailDisclosureButton:
			w = 67;
			
			break;
			
		case UITableViewCellAccessoryCheckmark:
			w = 39;
			
			break;
			
		case UITableViewCellAccessoryDetailButton:
			w = 47;
			
			break;
			
		default:
			
			break;
	}
	return w;
}

+ (CGFloat)defaultTableViewCellValue2TextLabelWidth {
	return 91;
}

+ (CGFloat)defaultTableViewCellValue2DetailTextLabelMarginLeft {
	return 6;
}

+ (CGFloat)defaultTableViewCellValue2DetailTextLabelPointX {
	return 113;
}

+ (UIFont *)defaultTableViewCellTextLabelFont:(UITableViewCellStyle)style {
	return [self defaultTableViewCellFontMetrics][@(style)].firstObject;
}

+ (UIFont *)defaultTableViewCellDetailTextLabelFont:(UITableViewCellStyle)style {
	return [self defaultTableViewCellFontMetrics][@(style)].lastObject;
}

+ (CGSize)defaultCollectionViewFlowLayoutItemSize {
	return CGSizeMake(50, 50);
}

+ (CGFloat)defaultCollectionViewFlowLayoutLineSpacing {
	return 10;
}

+ (CGFloat)defaultCollectionViewFlowLayoutInteritemSpacing {
	return 10;
}

+ (CGFloat)defaultDatePickerHeight {
	return 162;
}

+ (CGFloat)defaultPickerViewHeight {
	return 162;
}

+ (CGFloat)defaultNavigationBarHeight {
	return 44;
}

+ (CGFloat)defaultTabBarHeight {
	return 44;
}

+ (CGFloat)defaultToolbarHeight {
	return 44;
}

+ (UIColor *)defaultTableViewCellAccessoryDisclosureIndicatorColor {
	return [CocoaUtils colorWithRGBs:0xc7c7cc];
}

@end
