Unified avatar with VoIP

This commit is contained in:
Christophe Deschamps 2022-11-03 13:34:00 +01:00
parent ecdb22dc5d
commit 7ddfff9c32
3 changed files with 19 additions and 3 deletions

View file

@ -23,14 +23,14 @@ import linphonesw
extension Address {
func initials() -> String? {
var initials = initials(displayName: addressBookEnhancedDisplayName())
var initials = Address.initials(displayName: addressBookEnhancedDisplayName())
if (initials == nil || initials!.isEmpty) {
initials = String(username.prefix(1))
}
return initials
}
private func initials(displayName: String?) -> String? { // Basic ImproveMe
static func initials(displayName: String?) -> String? { // Basic ImproveMe
let separator = displayName?.contains(" ") == true ? " " : "."
return displayName?.components(separatedBy: separator)
.reduce("") {

View file

@ -100,4 +100,17 @@ class Avatar : UIView {
return shared?.toImage()
}
@objc static func imageForInitials(displayName:String) -> UIImage? {
if (shared == nil) {
shared = Avatar(color:VoipTheme.primaryTextColor, textStyle: VoipTheme.call_generated_avatar_small)
PhoneMainView.instance().mainViewController.view.addSubview(shared!)
PhoneMainView.instance().mainViewController.view.sendSubviewToBack(shared!)
shared?.bounds.size = CGSize(width: size, height: size)
}
shared?.initialsLabel.text = Address.initials(displayName: displayName)
shared?.initialsLabel.isHidden = false
shared?.iconImageView.isHidden = true
return shared?.toImage()
}
}

View file

@ -34,7 +34,9 @@
@synchronized(LinphoneManager.instance.fastAddressBook.addressBookMap) {
UIImage *retImage = [contact avatar];
if (retImage == nil) {
retImage = [UIImage imageNamed:@"avatar.png"];
retImage = contact.friend && linphone_friend_get_addresses(contact.friend) ?
[AvatarBridge imageForAddressWithAddress:linphone_friend_get_addresses(contact.friend)->data] :
[AvatarBridge imageForInitialsWithDisplayName:[contact displayName]];
}
if (retImage.size.width != retImage.size.height) {
retImage = [retImage squareCrop];
@ -109,6 +111,7 @@
}
}
}
return contact;
}