Browse Source

read out unread messages in account switch button and account switch view controller (#1751)

Co-authored-by: cyberta <cyberta@riseup.net>
bjoern 2 years ago
parent
commit
3b7b51398e

+ 11 - 2
deltachat-ios/Controller/AccountSwitchViewController.swift

@@ -255,7 +255,8 @@ class AccountCell: UITableViewCell {
     }
 
     lazy var accountAvatar: InitialsBadge = {
-        let avatar = InitialsBadge(size: 37, accessibilityLabel: "")
+        let avatar = InitialsBadge(size: 37)
+        avatar.isAccessibilityElement = false
         return avatar
     }()
 
@@ -328,8 +329,16 @@ class AccountCell: UITableViewCell {
             accountAvatar.setImage(image)
         }
 
-        accountAvatar.setUnreadMessageCount(dcContext.getFreshMessages().count)
+        let unreadMessages = dcContext.getFreshMessages().count
+        accountAvatar.setUnreadMessageCount(unreadMessages)
+
         accountName.text = title
+        if unreadMessages > 0 {
+            accountName.accessibilityLabel = "\(title): \(String.localized(stringID: "n_messages", count: unreadMessages))"
+        } else {
+            accountName.accessibilityLabel = title
+        }
+
         if showAccountDeletion {
             showDeleteIndicator()
         } else {

+ 8 - 2
deltachat-ios/Controller/ChatListController.swift

@@ -549,8 +549,14 @@ class ChatListController: UITableViewController {
     }
     
     private func updateAccountButton() {
-        accountButtonAvatar.setUnreadMessageCount(getUnreadCounterOfOtherAccounts())
-        
+        let unreadMessages = getUnreadCounterOfOtherAccounts()
+        accountButtonAvatar.setUnreadMessageCount(unreadMessages)
+        if unreadMessages > 0 {
+            accountButtonAvatar.accessibilityLabel = "\(String.localized("switch_account")): \(String.localized(stringID: "n_messages", count: unreadMessages))"
+        } else {
+            accountButtonAvatar.accessibilityLabel = "\(String.localized("switch_account"))"
+        }
+
         let contact = dcContext.getContact(id: Int(DC_CONTACT_ID_SELF))
         let title = dcContext.displayname ?? dcContext.addr ?? ""
         accountButtonAvatar.setColor(contact.color)

+ 2 - 0
deltachat-ios/View/InitialsBadge.swift

@@ -57,6 +57,7 @@ public class InitialsBadge: UIView {
         let view = MessageCounter(count: 0, size: 20)
         view.backgroundColor = DcColors.unreadBadge
         view.isHidden = true
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -162,6 +163,7 @@ public class InitialsBadge: UIView {
         verifiedView.isHidden = true
         imageView.image = nil
         label.text = nil
+        accessibilityLabel = nil
     }
     
     public func asImage() -> UIImage? {

+ 1 - 0
deltachat-ios/View/MessageCounter.swift

@@ -13,6 +13,7 @@ class MessageCounter: UIView {
         label.textAlignment = NSTextAlignment.center
         label.textColor = UIColor.white
         label.translatesAutoresizingMaskIntoConstraints = false
+        label.isAccessibilityElement = false
         return label
     }()