mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Objective-C
		
	
//
 | 
						|
//  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
#import "OWSSearchBar.h"
 | 
						|
#import "Theme.h"
 | 
						|
#import "UIView+OWS.h"
 | 
						|
#import <SignalMessaging/SignalMessaging-Swift.h>
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_BEGIN
 | 
						|
 | 
						|
@implementation OWSSearchBar
 | 
						|
 | 
						|
- (instancetype)init
 | 
						|
{
 | 
						|
    if (self = [super init]) {
 | 
						|
        [self ows_configure];
 | 
						|
    }
 | 
						|
 | 
						|
    return self;
 | 
						|
}
 | 
						|
 | 
						|
- (instancetype)initWithFrame:(CGRect)frame
 | 
						|
{
 | 
						|
    if (self = [super initWithFrame:frame]) {
 | 
						|
        [self ows_configure];
 | 
						|
    }
 | 
						|
 | 
						|
    return self;
 | 
						|
}
 | 
						|
 | 
						|
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
 | 
						|
{
 | 
						|
    if (self = [super initWithCoder:aDecoder]) {
 | 
						|
        [self ows_configure];
 | 
						|
    }
 | 
						|
 | 
						|
    return self;
 | 
						|
}
 | 
						|
 | 
						|
- (void)ows_configure
 | 
						|
{
 | 
						|
    [self ows_applyTheme];
 | 
						|
 | 
						|
    [[NSNotificationCenter defaultCenter] addObserver:self
 | 
						|
                                             selector:@selector(themeDidChange:)
 | 
						|
                                                 name:ThemeDidChangeNotification
 | 
						|
                                               object:nil];
 | 
						|
}
 | 
						|
 | 
						|
- (void)dealloc
 | 
						|
{
 | 
						|
    [[NSNotificationCenter defaultCenter] removeObserver:self];
 | 
						|
}
 | 
						|
 | 
						|
- (void)ows_applyTheme
 | 
						|
{
 | 
						|
    OWSAssertIsOnMainThread();
 | 
						|
 | 
						|
    UIColor *foregroundColor = Theme.placeholderColor;
 | 
						|
    self.barTintColor = Theme.backgroundColor;
 | 
						|
    self.barStyle = Theme.barStyle;
 | 
						|
 | 
						|
    // Hide searchBar border.
 | 
						|
    // Alternatively we could hide the border by using `UISearchBarStyleMinimal`, but that causes an issue when toggling
 | 
						|
    // from light -> dark -> light theme wherein the textField background color appears darker than it should
 | 
						|
    // (regardless of our re-setting textfield.backgroundColor below).
 | 
						|
    self.backgroundImage = [UIImage new];
 | 
						|
 | 
						|
    if (Theme.isDarkThemeEnabled) {
 | 
						|
        UIImage *clearImage = [UIImage imageNamed:@"searchbar_clear"];
 | 
						|
        [self setImage:[clearImage asTintedImageWithColor:foregroundColor]
 | 
						|
            forSearchBarIcon:UISearchBarIconClear
 | 
						|
                       state:UIControlStateNormal];
 | 
						|
 | 
						|
        UIImage *searchImage = [UIImage imageNamed:@"searchbar_search"];
 | 
						|
        [self setImage:[searchImage asTintedImageWithColor:foregroundColor]
 | 
						|
            forSearchBarIcon:UISearchBarIconSearch
 | 
						|
                       state:UIControlStateNormal];
 | 
						|
    } else {
 | 
						|
        [self setImage:nil forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
 | 
						|
 | 
						|
        [self setImage:nil forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
 | 
						|
    }
 | 
						|
 | 
						|
    [self traverseViewHierarchyWithVisitor:^(UIView *view) {
 | 
						|
        if ([view isKindOfClass:[UITextField class]]) {
 | 
						|
            UITextField *textField = (UITextField *)view;
 | 
						|
            textField.backgroundColor = Theme.searchFieldBackgroundColor;
 | 
						|
            textField.textColor = Theme.primaryColor;
 | 
						|
            textField.keyboardAppearance = Theme.keyboardAppearance;
 | 
						|
        }
 | 
						|
    }];
 | 
						|
}
 | 
						|
 | 
						|
- (void)themeDidChange:(NSNotification *)notification
 | 
						|
{
 | 
						|
    OWSAssertIsOnMainThread();
 | 
						|
 | 
						|
    [self ows_applyTheme];
 | 
						|
}
 | 
						|
 | 
						|
@end
 | 
						|
 | 
						|
NS_ASSUME_NONNULL_END
 |