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.
		
		
		
		
		
			
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Swift
		
	
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
 | 
						|
 | 
						|
import UIKit
 | 
						|
 | 
						|
public final class SearchBar : UISearchBar {
 | 
						|
    
 | 
						|
    public override init(frame: CGRect) {
 | 
						|
        super.init(frame: frame)
 | 
						|
        setUpSessionStyle()
 | 
						|
    }
 | 
						|
    
 | 
						|
    public required init?(coder: NSCoder) {
 | 
						|
        super.init(coder: coder)
 | 
						|
        setUpSessionStyle()
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
public final class ContactsSearchBar : UISearchBar {
 | 
						|
    
 | 
						|
    public override init(frame: CGRect) {
 | 
						|
        super.init(frame: frame)
 | 
						|
        setUpContactSearchStyle()
 | 
						|
    }
 | 
						|
    
 | 
						|
    public required init?(coder: NSCoder) {
 | 
						|
        super.init(coder: coder)
 | 
						|
        setUpContactSearchStyle()
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
public extension UISearchBar {
 | 
						|
    
 | 
						|
    func setUpSessionStyle() {
 | 
						|
        searchBarStyle = .minimal // Hide the border around the search bar
 | 
						|
        barStyle = .black // Use Apple's black design as a base
 | 
						|
        themeTintColor = .textPrimary // The cursor color
 | 
						|
        
 | 
						|
        let searchImage: UIImage = #imageLiteral(resourceName: "searchbar_search").withRenderingMode(.alwaysTemplate)
 | 
						|
        setImage(searchImage, for: .search, state: .normal)
 | 
						|
        searchTextField.leftView?.themeTintColor = .textSecondary
 | 
						|
        
 | 
						|
        let clearImage: UIImage = #imageLiteral(resourceName: "searchbar_clear").withRenderingMode(.alwaysTemplate)
 | 
						|
        setImage(clearImage, for: .clear, state: .normal)
 | 
						|
        
 | 
						|
        let searchTextField: UITextField = self.searchTextField
 | 
						|
        searchTextField.themeBackgroundColor = .messageBubble_overlay // The search bar background color
 | 
						|
        searchTextField.themeTextColor = .textPrimary
 | 
						|
        setPositionAdjustment(UIOffset(horizontal: 4, vertical: 0), for: UISearchBar.Icon.search)
 | 
						|
        searchTextPositionAdjustment = UIOffset(horizontal: 2, vertical: 0)
 | 
						|
        setPositionAdjustment(UIOffset(horizontal: -4, vertical: 0), for: UISearchBar.Icon.clear)
 | 
						|
        
 | 
						|
        ThemeManager.onThemeChange(observer: searchTextField) { [weak searchTextField] theme, _ in
 | 
						|
            guard let textColor: UIColor = theme.color(for: .textSecondary) else { return }
 | 
						|
            
 | 
						|
            searchTextField?.attributedPlaceholder = NSAttributedString(
 | 
						|
                string: "Search",
 | 
						|
                attributes: [
 | 
						|
                    .foregroundColor: textColor
 | 
						|
                ])
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    func setUpContactSearchStyle() {
 | 
						|
        searchBarStyle = .minimal
 | 
						|
        barStyle = .default
 | 
						|
        themeTintColor = .textPrimary
 | 
						|
        
 | 
						|
        let searchImage = #imageLiteral(resourceName: "searchbar_search").withRenderingMode(.alwaysTemplate)
 | 
						|
        setImage(searchImage, for: .search, state: .normal)
 | 
						|
        searchTextField.leftView?.themeTintColor = .textSecondary
 | 
						|
        
 | 
						|
        let clearImage = #imageLiteral(resourceName: "searchbar_clear").withRenderingMode(.alwaysTemplate)
 | 
						|
        setImage(clearImage, for: .clear, state: .normal)
 | 
						|
        
 | 
						|
        let searchTextField: UITextField = self.searchTextField
 | 
						|
        searchTextField.borderStyle = .none
 | 
						|
        searchTextField.layer.cornerRadius = 18
 | 
						|
        searchTextField.themeBackgroundColor = .backgroundPrimary
 | 
						|
        searchTextField.themeTextColor = .textPrimary
 | 
						|
        setPositionAdjustment(UIOffset(horizontal: 4, vertical: 0), for: UISearchBar.Icon.search)
 | 
						|
        searchTextPositionAdjustment = UIOffset(horizontal: 2, vertical: 0)
 | 
						|
        setPositionAdjustment(UIOffset(horizontal: -4, vertical: 0), for: UISearchBar.Icon.clear)
 | 
						|
        
 | 
						|
        ThemeManager.onThemeChange(observer: searchTextField) { [weak searchTextField] theme, _ in
 | 
						|
            guard let textColor: UIColor = theme.color(for: .textSecondary) else { return }
 | 
						|
            
 | 
						|
            searchTextField?.attributedPlaceholder = NSAttributedString(
 | 
						|
                string: "Search Contacts",
 | 
						|
                attributes: [
 | 
						|
                    .foregroundColor: textColor
 | 
						|
                ]
 | 
						|
            )
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |