123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /**
- * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: GPL-3.0-or-later
- */
- #import "RoundedNumberView.h"
- #import "NCAppBranding.h"
- #define kRoundedNumberViewImportantBackgroundColor [UIColor colorWithRed:0.00 green:0.51 blue:0.79 alpha:1.0] //#0082C9
- #define kRoundedNumberViewImportantTextColor [UIColor whiteColor]
- #define kRoundedNumberViewDefaultBackgroundColor [UIColor colorWithRed:0.84 green:0.84 blue:0.84 alpha:1.0] //#d5d5d5
- #define kRoundedNumberViewDefaultTextColor [UIColor blackColor]
- #define kRoundedNumberViewCounterLimit 9999
- @interface RoundedNumberView ()
- @property (nonatomic, strong) UILabel *numberLabel;
- @end
- @implementation RoundedNumberView
- - (id)initWithFrame:(CGRect)frame
- {
- return [self initWithNumber:0];
- }
- - (id)init
- {
- return [self initWithNumber:0];
- }
- - (id)initWithCoder:(NSCoder *)aDecoder
- {
- self = [super initWithCoder:aDecoder];
- if (self) {
- _number = 0;
- [self addNecessaryViews];
- [self setup];
- }
- return self;
- }
- - (id)initWithNumber:(NSInteger)number
- {
- self = [super initWithFrame:CGRectMake(0.0f, 0.0f, 1.0f, 1.0f)];
- if (self) {
- _number = 0;
- [self addNecessaryViews];
- [self setup];
- }
- return self;
- }
- // This method should be called only once
- - (void)addNecessaryViews
- {
- self.backgroundColor = kRoundedNumberViewDefaultBackgroundColor;
- self.numberLabel = [[UILabel alloc] init];
- self.numberLabel.font = [UIFont boldSystemFontOfSize:14];
- self.numberLabel.backgroundColor = [UIColor clearColor];
- _numberColor = kRoundedNumberViewDefaultTextColor;
- [self addSubview:self.numberLabel];
- }
- - (void)setup
- {
- NSInteger counter = _number;
- self.numberLabel.textColor = _numberColor;
- self.numberLabel.text = [NSString stringWithFormat:@"%ld", (long)counter];
- if (counter > kRoundedNumberViewCounterLimit) {
- self.numberLabel.text = [NSString stringWithFormat:@"%d+", kRoundedNumberViewCounterLimit];
- }
- [self.numberLabel sizeToFit];
- CGFloat frameWidth = self.numberLabel.frame.size.width + 16;
- CGFloat frameHeight = self.numberLabel.frame.size.height + self.numberLabel.frame.size.height / 2;
- self.frame = CGRectMake(0, 0, (frameWidth >= frameHeight) ? frameWidth : frameHeight, frameHeight);
- self.layer.cornerRadius = self.frame.size.height / 2;
- [self.numberLabel setCenter:CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)];
- }
- - (void)setNumber:(NSInteger)number
- {
- if (_number != number) {
- _number = number;
- [self setup];
- }
- }
- - (void)setNumberColor:(UIColor *)numberColor
- {
- if (_numberColor != numberColor) {
- _numberColor = numberColor;
- self.numberLabel.textColor = _numberColor;
- }
- }
- - (void)setHighlightType:(HighlightType)highlightType
- {
- _highlightType = highlightType;
-
- self.layer.borderWidth = 0;
-
- switch (highlightType) {
- case kHighlightTypeNone:
- self.backgroundColor = [NCAppBranding placeholderColor];
- _numberColor = nil;
- break;
- case kHighlightTypeBorder:
- self.backgroundColor = [UIColor systemBackgroundColor];
- _numberColor = [NCAppBranding elementColor];
- self.layer.borderWidth = 2;
- self.layer.borderColor = [NCAppBranding elementColor].CGColor;
- break;
- case kHighlightTypeImportant:
- self.backgroundColor = [NCAppBranding themeColor];
- _numberColor = [NCAppBranding themeTextColor];
- break;
- }
- }
- @end
|