瀏覽代碼

Merge pull request #176 from deltachat/streamline-names

prefer Dc-prefix over DC-prefix
björn petersen 6 年之前
父節點
當前提交
7b14a52da3
共有 26 個文件被更改,包括 611 次插入759 次删除
  1. 4 4
      deltachat-ios.xcodeproj/project.pbxproj
  2. 2 2
      deltachat-ios/AppDelegate.swift
  3. 32 32
      deltachat-ios/Controller/AccountSetupController.swift
  4. 4 4
      deltachat-ios/Controller/ChatListController.swift
  5. 17 17
      deltachat-ios/Controller/ChatViewController.swift
  6. 2 2
      deltachat-ios/Controller/ContactDetailViewController.swift
  7. 2 2
      deltachat-ios/Controller/ContactListController.swift
  8. 1 1
      deltachat-ios/Controller/DcNavigationController.swift
  9. 1 1
      deltachat-ios/Controller/EditContactController.swift
  10. 2 2
      deltachat-ios/Controller/EditGroupViewController.swift
  11. 6 6
      deltachat-ios/Controller/EditSettingsController.swift
  12. 6 6
      deltachat-ios/Controller/GroupChatDetailViewController.swift
  13. 3 3
      deltachat-ios/Controller/GroupMembersViewController.swift
  14. 1 1
      deltachat-ios/Controller/GroupNameController.swift
  15. 2 2
      deltachat-ios/Controller/MessageInfoViewController.swift
  16. 2 2
      deltachat-ios/Controller/NewChatViewController.swift
  17. 7 7
      deltachat-ios/Controller/NewProfileViewController.swift
  18. 5 5
      deltachat-ios/Controller/ProfileViewController.swift
  19. 16 16
      deltachat-ios/Controller/SettingsController.swift
  20. 19 19
      deltachat-ios/Coordinator/AppCoordinator.swift
  21. 472 620
      deltachat-ios/DC/Wrapper.swift
  22. 1 1
      deltachat-ios/DC/events.swift
  23. 1 1
      deltachat-ios/Helper/Colors.swift
  24. 1 1
      deltachat-ios/Helper/Extensions.swift
  25. 1 1
      deltachat-ios/View/ContactCell.swift
  26. 1 1
      deltachat-ios/View/ProfileView.swift

+ 4 - 4
deltachat-ios.xcodeproj/project.pbxproj

@@ -25,7 +25,7 @@
 		789E879D21D6DF86003ED1C5 /* ProgressHud.swift in Sources */ = {isa = PBXBuildFile; fileRef = 789E879C21D6DF86003ED1C5 /* ProgressHud.swift */; };
 		78E45E3A21D3CFBC00D4B15E /* SettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3921D3CFBC00D4B15E /* SettingsController.swift */; };
 		78E45E3C21D3D03700D4B15E /* TextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3B21D3D03700D4B15E /* TextFieldTableViewCell.swift */; };
-		78E45E3E21D3D28C00D4B15E /* DCNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3D21D3D28C00D4B15E /* DCNavigationController.swift */; };
+		78E45E3E21D3D28C00D4B15E /* DcNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3D21D3D28C00D4B15E /* DcNavigationController.swift */; };
 		78E45E4021D3D70700D4B15E /* ContactListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E3F21D3D70700D4B15E /* ContactListController.swift */; };
 		78E45E4421D3F14A00D4B15E /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E4321D3F14A00D4B15E /* UIImage+Extension.swift */; };
 		78E45E4C21D404AE00D4B15E /* CustomMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78E45E4B21D404AE00D4B15E /* CustomMessageCell.swift */; };
@@ -163,7 +163,7 @@
 		78E45E2121D1768900D4B15E /* src */ = {isa = PBXFileReference; lastKnownFileType = folder; name = src; path = "deltachat-ios/libraries/deltachat-core/src"; sourceTree = "<group>"; };
 		78E45E3921D3CFBC00D4B15E /* SettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsController.swift; sourceTree = "<group>"; };
 		78E45E3B21D3D03700D4B15E /* TextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldTableViewCell.swift; sourceTree = "<group>"; };
-		78E45E3D21D3D28C00D4B15E /* DCNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DCNavigationController.swift; sourceTree = "<group>"; };
+		78E45E3D21D3D28C00D4B15E /* DcNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DcNavigationController.swift; sourceTree = "<group>"; };
 		78E45E3F21D3D70700D4B15E /* ContactListController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactListController.swift; sourceTree = "<group>"; };
 		78E45E4321D3F14A00D4B15E /* UIImage+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = "<group>"; };
 		78E45E4B21D404AE00D4B15E /* CustomMessageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomMessageCell.swift; sourceTree = "<group>"; };
@@ -350,7 +350,7 @@
 			isa = PBXGroup;
 			children = (
 				AE18F28B228C17630007B1BE /* AccountSetup */,
-				78E45E3D21D3D28C00D4B15E /* DCNavigationController.swift */,
+				78E45E3D21D3D28C00D4B15E /* DcNavigationController.swift */,
 				785BE16721E247F1003BE98C /* MessageInfoViewController.swift */,
 				7A0052C71FBE6CB40048C3BF /* NewContactController.swift */,
 				AEE56D752253431E007DC082 /* AccountSetupController.swift */,
@@ -723,7 +723,7 @@
 				AE52EA20229EB9F000C586C9 /* EditGroupViewController.swift in Sources */,
 				70B08FCD21073B910097D3EA /* NewGroupMemberChoiceController.swift in Sources */,
 				30BD261422F8679200F399DF /* ProfileView.swift in Sources */,
-				78E45E3E21D3D28C00D4B15E /* DCNavigationController.swift in Sources */,
+				78E45E3E21D3D28C00D4B15E /* DcNavigationController.swift in Sources */,
 				78E45E4021D3D70700D4B15E /* ContactListController.swift in Sources */,
 				AE18F294228C602A0007B1BE /* SecuritySettingsController.swift in Sources */,
 				78ED838D21D577D000243125 /* events.swift in Sources */,

+ 2 - 2
deltachat-ios/AppDelegate.swift

@@ -192,7 +192,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
             }
         }
 
-        if DCConfig.sentboxWatch {
+        if DcConfig.sentboxWatch {
             DispatchQueue.global(qos: .background).async {
                 while self.state == .running {
                     dc_perform_sentbox_fetch(mailboxPointer)
@@ -201,7 +201,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
             }
         }
 
-        if DCConfig.mvboxWatch {
+        if DcConfig.mvboxWatch {
             DispatchQueue.global(qos: .background).async {
                 while self.state == .running {
                     dc_perform_mvbox_fetch(mailboxPointer)

+ 32 - 32
deltachat-ios/Controller/AccountSetupController.swift

@@ -17,7 +17,7 @@ class AccountSetupController: UITableViewController {
         progress.style = UICircularRingStyle.inside
         progress.outerRingColor = UIColor.clear
         progress.maxValue = 100
-        progress.innerRingColor = DCColors.primary
+        progress.innerRingColor = DcColors.primary
         progress.innerRingWidth = 2
         progress.startAngle = 270
         progress.fontColor = UIColor.lightGray
@@ -43,7 +43,7 @@ class AccountSetupController: UITableViewController {
         let cell = TextFieldCell.makeEmailCell(delegate: self)
         cell.textField.tag = 0
         cell.textField.accessibilityIdentifier = "emailTextField" // will be used to eventually show oAuth-Dialogue when pressing return key
-        cell.setText(text: DCConfig.addr ?? nil)
+        cell.setText(text: DcConfig.addr ?? nil)
         cell.textField.delegate = self
         return cell
     }()
@@ -52,7 +52,7 @@ class AccountSetupController: UITableViewController {
         let cell = TextFieldCell.makePasswordCell(delegate: self)
         cell.textField.tag = 1
         cell.accessibilityIdentifier = "passwordCell" // will be used to eventually show oAuth-Dialogue when selecting
-        cell.setText(text: DCConfig.mailPw ?? nil)
+        cell.setText(text: DcConfig.mailPw ?? nil)
         return cell
     }()
 
@@ -65,7 +65,7 @@ class AccountSetupController: UITableViewController {
 
     lazy var imapServerCell: TextFieldCell = {
         let cell = TextFieldCell(descriptionID: "login_imap_server",
-                                 placeholder: DCConfig.mailServer ?? DCConfig.configuredMailServer,
+                                 placeholder: DcConfig.mailServer ?? DcConfig.configuredMailServer,
                                  delegate: self)
         cell.accessibilityIdentifier = "IMAPServerCell"
         cell.textField.tag = 2
@@ -76,7 +76,7 @@ class AccountSetupController: UITableViewController {
     }()
 
     lazy var imapUserCell: TextFieldCell = {
-        let cell = TextFieldCell(descriptionID: "login_imap_login", placeholder: DCConfig.mailUser ?? DCConfig.configuredMailUser, delegate: self)
+        let cell = TextFieldCell(descriptionID: "login_imap_login", placeholder: DcConfig.mailUser ?? DcConfig.configuredMailUser, delegate: self)
         cell.accessibilityIdentifier = "IMAPUserCell"
         cell.textField.tag = 3
         return cell
@@ -86,27 +86,27 @@ class AccountSetupController: UITableViewController {
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("login_imap_port")
         cell.accessoryType = .disclosureIndicator
-        cell.detailTextLabel?.text = DCConfig.mailPort ?? DCConfig.configuredMailPort
+        cell.detailTextLabel?.text = DcConfig.mailPort ?? DcConfig.configuredMailPort
         cell.accessibilityIdentifier = "IMAPPortCell"
         cell.selectionStyle = .none
         return cell
     }()
 
     lazy var imapSecurityCell: UITableViewCell = {
-        let text = "\(DCConfig.getImapSecurity())"
+        let text = "\(DcConfig.getImapSecurity())"
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("login_imap_security")
         // let cell = TextFieldCell(description: "IMAP Security", placeholder: text, delegate: self)
         cell.accessibilityIdentifier = "IMAPSecurityCell"
         cell.accessoryType = .disclosureIndicator
-        cell.detailTextLabel?.text = "\(DCConfig.getImapSecurity())"
+        cell.detailTextLabel?.text = "\(DcConfig.getImapSecurity())"
         cell.selectionStyle = .none
         return cell
     }()
 
     lazy var smtpServerCell: TextFieldCell = {
         let cell = TextFieldCell(descriptionID: "login_smtp_server",
-                                 placeholder: DCConfig.sendServer ?? DCConfig.configuredSendServer,
+                                 placeholder: DcConfig.sendServer ?? DcConfig.configuredSendServer,
                                  delegate: self)
         cell.accessibilityIdentifier = "SMTPServerCell"
         cell.textField.tag = 4
@@ -117,7 +117,7 @@ class AccountSetupController: UITableViewController {
     }()
 
     lazy var smtpUserCell: TextFieldCell = {
-        let cell = TextFieldCell(descriptionID: "login_smtp_login", placeholder: DCConfig.sendUser ?? DCConfig.configuredSendUser, delegate: self)
+        let cell = TextFieldCell(descriptionID: "login_smtp_login", placeholder: DcConfig.sendUser ?? DcConfig.configuredSendUser, delegate: self)
         cell.accessibilityIdentifier = "SMTPUserCell"
         cell.textField.tag = 5
         return cell
@@ -127,7 +127,7 @@ class AccountSetupController: UITableViewController {
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("login_smtp_port")
         cell.accessoryType = .disclosureIndicator
-        cell.detailTextLabel?.text = DCConfig.sendPort ?? DCConfig.configuredSendPort
+        cell.detailTextLabel?.text = DcConfig.sendPort ?? DcConfig.configuredSendPort
         cell.accessibilityIdentifier = "SMTPPortCell"
         cell.selectionStyle = .none
         return cell
@@ -143,7 +143,7 @@ class AccountSetupController: UITableViewController {
     }()
 
     lazy var smtpSecurityCell: UITableViewCell = {
-        let security = "\(DCConfig.getSmtpSecurity())"
+        let security = "\(DcConfig.getSmtpSecurity())"
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("login_smtp_security")
         cell.detailTextLabel?.text = security
@@ -195,10 +195,10 @@ class AccountSetupController: UITableViewController {
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         // needs to be changed if returning from portSettingsController
-        smtpPortCell.detailTextLabel?.text = DCConfig.sendPort ?? DCConfig.configuredSendPort
-        imapPortCell.detailTextLabel?.text = DCConfig.mailPort ?? DCConfig.configuredMailPort
-        smtpSecurityCell.detailTextLabel?.text = SecurityConverter.convertHexToString(type: .SMTPSecurity, hex: DCConfig.getSmtpSecurity())
-        imapSecurityCell.detailTextLabel?.text  = SecurityConverter.convertHexToString(type: .IMAPSecurity, hex: DCConfig.getImapSecurity())
+        smtpPortCell.detailTextLabel?.text = DcConfig.sendPort ?? DcConfig.configuredSendPort
+        imapPortCell.detailTextLabel?.text = DcConfig.mailPort ?? DcConfig.configuredMailPort
+        smtpSecurityCell.detailTextLabel?.text = SecurityConverter.convertHexToString(type: .SMTPSecurity, hex: DcConfig.getSmtpSecurity())
+        imapSecurityCell.detailTextLabel?.text  = SecurityConverter.convertHexToString(type: .IMAPSecurity, hex: DcConfig.getImapSecurity())
     }
 
     override func viewDidAppear(_ animated: Bool) {
@@ -361,14 +361,14 @@ class AccountSetupController: UITableViewController {
 
     private func login(emailAddress: String, password: String, skipAdvanceSetup: Bool = false) {
         resignFirstResponderOnAllCells()	// this will resign focus from all textFieldCells so the keyboard wont pop up anymore
-        DCConfig.addr = emailAddress
-        DCConfig.mailPw = password
+        DcConfig.addr = emailAddress
+        DcConfig.mailPw = password
 
         if !skipAdvanceSetup {
             evaluateAdvancedSetup() // this will set MRConfig related to advanced fields
         }
 
-        print("oAuth-Flag when loggin in: \(DCConfig.getAuthFlags())")
+        print("oAuth-Flag when loggin in: \(DcConfig.getAuthFlags())")
         dc_configure(mailboxPointer)
         showProgressHud()
     }
@@ -430,7 +430,7 @@ class AccountSetupController: UITableViewController {
             return
         }
         passwordCell.setText(text: token)
-        DCConfig.setAuthFlags(flags: Int(DC_LP_AUTH_OAUTH2))
+        DcConfig.setAuthFlags(flags: Int(DC_LP_AUTH_OAUTH2))
         login(emailAddress: emailAddress, password: token, skipAdvanceSetup: true)
     }
 
@@ -479,25 +479,25 @@ class AccountSetupController: UITableViewController {
             if let textFieldCell = cell as? TextFieldCell {
                 switch cell.accessibilityIdentifier {
                 case "IMAPServerCell":
-                    DCConfig.mailServer = textFieldCell.getText() ?? nil
+                    DcConfig.mailServer = textFieldCell.getText() ?? nil
                 case "IMAPUserCell":
-                    DCConfig.mailUser = textFieldCell.getText() ?? nil
+                    DcConfig.mailUser = textFieldCell.getText() ?? nil
                 case "IMAPPortCell":
-                    DCConfig.mailPort = textFieldCell.getText() ?? nil
+                    DcConfig.mailPort = textFieldCell.getText() ?? nil
                 case "IMAPSecurityCell":
                     let flag = 0
-                    DCConfig.setImapSecurity(imapFlags: flag)
+                    DcConfig.setImapSecurity(imapFlags: flag)
                 case "SMTPServerCell":
-                    DCConfig.sendServer = textFieldCell.getText() ?? nil
+                    DcConfig.sendServer = textFieldCell.getText() ?? nil
                 case "SMTPUserCell":
-                    DCConfig.sendUser = textFieldCell.getText() ?? nil
+                    DcConfig.sendUser = textFieldCell.getText() ?? nil
                 case "SMTPPortCell":
-                    DCConfig.sendPort = textFieldCell.getText() ?? nil
+                    DcConfig.sendPort = textFieldCell.getText() ?? nil
                 case "SMTPPasswordCell":
-                    DCConfig.sendPw = textFieldCell.getText() ?? nil
+                    DcConfig.sendPw = textFieldCell.getText() ?? nil
                 case "SMTPSecurityCell":
                     let flag = 0
-                    DCConfig.setSmtpSecurity(smptpFlags: flag)
+                    DcConfig.setSmtpSecurity(smptpFlags: flag)
                 default:
                     logger.info("unknown identifier", cell.accessibilityIdentifier ?? "")
                 }
@@ -507,7 +507,7 @@ class AccountSetupController: UITableViewController {
 
     private func restoreBackup() {
         logger.info("restoring backup")
-        if DCConfig.configured {
+        if DcConfig.configured {
             return
         }
         let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
@@ -681,8 +681,8 @@ extension AccountSetupController {
     }
 
     func loginCancelled(_ action: UIAlertAction) {
-        DCConfig.addr = nil
-        DCConfig.mailPw = nil
+        DcConfig.addr = nil
+        DcConfig.mailPw = nil
         DispatchQueue.global(qos: .background).async {
             dc_stop_ongoing_process(mailboxPointer)		// this function freezes UI so execute in background thread
         }

+ 4 - 4
deltachat-ios/Controller/ChatListController.swift

@@ -2,7 +2,7 @@ import UIKit
 
 class ChatListController: UIViewController {
     weak var coordinator: ChatListCoordinator?
-    var chatList: DCChatList?
+    var chatList: DcChatlist?
 
     lazy var chatTable: UITableView = {
         let chatTable = UITableView()
@@ -75,7 +75,7 @@ class ChatListController: UIViewController {
         navigationController?.navigationBar.prefersLargeTitles = true
 
         newButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.compose, target: self, action: #selector(didPressNewChat))
-        newButton.tintColor = DCColors.primary
+        newButton.tintColor = DcColors.primary
         navigationItem.rightBarButtonItem = newButton
 
         setupChatTable()
@@ -99,7 +99,7 @@ class ChatListController: UIViewController {
             fatalError("chatlistPointer was nil")
         }
         // ownership of chatlistPointer transferred here to ChatList object
-        chatList = DCChatList(chatListPointer: chatlistPointer)
+        chatList = DcChatlist(chatListPointer: chatlistPointer)
         chatTable.reloadData()
     }
 }
@@ -127,7 +127,7 @@ extension ChatListController: UITableViewDataSource, UITableViewDelegate {
         }
 
         let chatId = chatList.getChatId(index: row)
-        let chat = DCChat(id: chatId)
+        let chat = DcChat(id: chatId)
         let summary = chatList.summary(index: row)
 
         cell.nameLabel.text = chat.name

+ 17 - 17
deltachat-ios/Controller/ChatViewController.swift

@@ -23,7 +23,7 @@ class ChatViewController: MessagesViewController {
 
     let chatId: Int
     let refreshControl = UIRefreshControl()
-    var messageList: [DCMessage] = []
+    var messageList: [DcMsg] = []
 
     var msgChangedObserver: Any?
     var incomingMsgObserver: Any?
@@ -64,8 +64,8 @@ class ChatViewController: MessagesViewController {
         super.viewDidLoad()
         navigationItem.titleView = titleView
 
-        view.backgroundColor = DCColors.chatBackgroundColor
-        if !DCConfig.configured {
+        view.backgroundColor = DcColors.chatBackgroundColor
+        if !DcConfig.configured {
             // TODO: display message about nothing being configured
             return
         }
@@ -86,7 +86,7 @@ class ChatViewController: MessagesViewController {
         // this will be removed in viewWillDisappear
         navigationController?.navigationBar.addGestureRecognizer(navBarTap)
 
-        let chat = DCChat(id: chatId)
+        let chat = DcChat(id: chatId)
         titleView.updateTitleView(title: chat.name, subtitle: chat.subtitle)
 
         if let image = chat.profileImage {
@@ -130,7 +130,7 @@ class ChatViewController: MessagesViewController {
                 if self.chatId == ui["chat_id"] as? Int {
                     if let id = ui["message_id"] as? Int {
                         if id > 0 {
-                            self.insertMessage(DCMessage(id: id))
+                            self.insertMessage(DcMsg(id: id))
                         }
                     }
                 }
@@ -216,7 +216,7 @@ class ChatViewController: MessagesViewController {
         return nil
     }
 
-    private func getMessageIds(_ count: Int, from: Int? = nil) -> [DCMessage] {
+    private func getMessageIds(_ count: Int, from: Int? = nil) -> [DcMsg] {
         let cMessageIds = dc_get_chat_msgs(mailboxPointer, UInt32(chatId), 0, 0)
 
         let ids: [Int]
@@ -230,7 +230,7 @@ class ChatViewController: MessagesViewController {
         dc_markseen_msgs(mailboxPointer, UnsafePointer(markIds), Int32(ids.count))
 
         return ids.map {
-            DCMessage(id: $0)
+            DcMsg(id: $0)
         }
     }
 
@@ -303,11 +303,11 @@ class ChatViewController: MessagesViewController {
 
     private func configureMessageInputBar() {
         messageInputBar.delegate = self
-        messageInputBar.inputTextView.tintColor = DCColors.primary
+        messageInputBar.inputTextView.tintColor = DcColors.primary
         messageInputBar.inputTextView.placeholder = String.localized("chat_input_placeholder")
         messageInputBar.isTranslucent = true
         messageInputBar.separatorLine.isHidden = true
-        messageInputBar.inputTextView.tintColor = DCColors.primary
+        messageInputBar.inputTextView.tintColor = DcColors.primary
 
         scrollsToBottomOnKeyboardBeginsEditing = true
 
@@ -349,7 +349,7 @@ class ChatViewController: MessagesViewController {
                     $0.tintColor = UIColor(white: 0.8, alpha: 1)
                     $0.setSize(CGSize(width: 30, height: 30), animated: false)
                 }.onSelected {
-                    $0.tintColor = DCColors.primary
+                    $0.tintColor = DcColors.primary
                 }.onDeselected {
                     $0.tintColor = UIColor(white: 0.8, alpha: 1)
                 }.onTouchUpInside { _ in
@@ -363,7 +363,7 @@ class ChatViewController: MessagesViewController {
         messageInputBar.sendButton
             .onEnabled { item in
                 UIView.animate(withDuration: 0.3, animations: {
-                    item.backgroundColor = DCColors.primary
+                    item.backgroundColor = DcColors.primary
                 })
             }.onDisabled { item in
                 UIView.animate(withDuration: 0.3, animations: {
@@ -595,7 +595,7 @@ extension ChatViewController: MessagesDataSource {
         if let index = messageList.firstIndex(where: { $0.id == messageId }) {
             dc_markseen_msgs(mailboxPointer, UnsafePointer([UInt32(messageId)]), 1)
 
-            messageList[index] = DCMessage(id: messageId)
+            messageList[index] = DcMsg(id: messageId)
             // Reload section to update header/footer labels
             messagesCollectionView.performBatchUpdates({
                 messagesCollectionView.reloadSections([index])
@@ -611,14 +611,14 @@ extension ChatViewController: MessagesDataSource {
                 }
             })
         } else {
-            let msg = DCMessage(id: messageId)
+            let msg = DcMsg(id: messageId)
             if msg.chatId == chatId {
                 insertMessage(msg)
             }
         }
     }
 
-    func insertMessage(_ message: DCMessage) {
+    func insertMessage(_ message: DcMsg) {
         dc_markseen_msgs(mailboxPointer, UnsafePointer([UInt32(message.id)]), 1)
         messageList.append(message)
         // Reload last section to update header/footer labels and insert a new one
@@ -651,7 +651,7 @@ extension ChatViewController: MessagesDisplayDelegate {
 
     // MARK: - All Messages
     func backgroundColor(for message: MessageType, at _: IndexPath, in _: MessagesCollectionView) -> UIColor {
-        return isFromCurrentSender(message: message) ? DCColors.messagePrimaryColor : DCColors.messageSecondaryColor
+        return isFromCurrentSender(message: message) ? DcColors.messagePrimaryColor : DcColors.messageSecondaryColor
     }
 
     func messageStyle(for message: MessageType, at indexPath: IndexPath, in _: MessagesCollectionView) -> MessageStyle {
@@ -798,7 +798,7 @@ extension ChatViewController: MessageCellDelegate {
 
                 var prev: Int = Int(dc_get_next_media(mailboxPointer, UInt32(message.id), -1, Int32(message.type), 0, 0))
                 while prev != 0 {
-                    let prevMessage = DCMessage(id: prev)
+                    let prevMessage = DcMsg(id: prev)
                     if let url = prevMessage.fileURL {
                         previousUrls.insert(url, at: 0)
                     }
@@ -807,7 +807,7 @@ extension ChatViewController: MessageCellDelegate {
 
                 var next: Int = Int(dc_get_next_media(mailboxPointer, UInt32(message.id), 1, Int32(message.type), 0, 0))
                 while next != 0 {
-                    let nextMessage = DCMessage(id: next)
+                    let nextMessage = DcMsg(id: next)
                     if let url = nextMessage.fileURL {
                         nextUrls.insert(url, at: 0)
                     }

+ 2 - 2
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -13,8 +13,8 @@ class ContactDetailViewController: UITableViewController {
 
     private let contactId: Int
 
-    private var contact: DCContact {
-        return DCContact(id: contactId)
+    private var contact: DcContact {
+        return DcContact(id: contactId)
     }
 
     private var notificationsCell: UITableViewCell = {

+ 2 - 2
deltachat-ios/Controller/ContactListController.swift

@@ -16,7 +16,7 @@ class ContactListController: UITableViewController {
 
     // contactWithSearchResults.indexesToHightLight empty by default
     var contacts: [ContactWithSearchResults] {
-        return contactIds.map { ContactWithSearchResults(contact: DCContact(id: $0), indexesToHighlight: []) }
+        return contactIds.map { ContactWithSearchResults(contact: DcContact(id: $0), indexesToHighlight: []) }
     }
 
     // used when seachbar is active
@@ -175,7 +175,7 @@ class ContactListController: UITableViewController {
                 self.coordinator?.showContactDetail(contactId: contactId)
             }
         }
-        edit.backgroundColor = DCColors.primary
+        edit.backgroundColor = DcColors.primary
         return [edit]
     }
 

+ 1 - 1
deltachat-ios/Controller/DCNavigationController.swift → deltachat-ios/Controller/DcNavigationController.swift

@@ -1,7 +1,7 @@
 import UIKit
 import Reachability
 
-final class DCNavigationController: UINavigationController {
+final class DcNavigationController: UINavigationController {
     var stateChangedObserver: Any?
 
     override func viewDidLoad() {

+ 1 - 1
deltachat-ios/Controller/EditContactController.swift

@@ -9,7 +9,7 @@ class EditContactController: NewContactController {
         super.init()
         title = String.localized("edit_contact")
 
-        let contact = DCContact(id: contactIdForUpdate)
+        let contact = DcContact(id: contactIdForUpdate)
         nameCell.textField.text = contact.name
         emailCell.textField.text = contact.email
         emailCell.textField.isEnabled = false

+ 2 - 2
deltachat-ios/Controller/EditGroupViewController.swift

@@ -4,7 +4,7 @@ class EditGroupViewController: UITableViewController {
 
     weak var coordinator: EditGroupCoordinator?
 
-    private let chat: DCChat
+    private let chat: DcChat
 
     lazy var groupNameCell: GroupLabelCell = {
         let cell = GroupLabelCell(style: .default, reuseIdentifier: nil)
@@ -23,7 +23,7 @@ class EditGroupViewController: UITableViewController {
         return button
     }()
 
-    init(chat: DCChat) {
+    init(chat: DcChat) {
         self.chat = chat
         super.init(style: .grouped)
         groupNameCell.inputField.text = chat.name

+ 6 - 6
deltachat-ios/Controller/EditSettingsController.swift

@@ -7,13 +7,13 @@ class EditSettingsController: UITableViewController {
 
     private lazy var displayNameCell: TextFieldCell = {
         let cell = TextFieldCell(description: String.localized("display_name"), placeholder: String.localized("display_name"))
-        cell.setText(text: DCConfig.displayname ?? nil)
+        cell.setText(text: DcConfig.displayname ?? nil)
         return cell
     }()
 
     private lazy var statusCell: TextFieldCell = {
         let cell = TextFieldCell(description: String.localized("status"), placeholder: String.localized("your_status"))
-        cell.setText(text: DCConfig.selfstatus ?? nil)
+        cell.setText(text: DcConfig.selfstatus ?? nil)
         return cell
     }()
 
@@ -30,14 +30,14 @@ class EditSettingsController: UITableViewController {
     }
 
     override func viewWillAppear(_ animated: Bool) {
-        displayNameBackup = DCConfig.displayname
-        statusCellBackup = DCConfig.selfstatus
+        displayNameBackup = DcConfig.displayname
+        statusCellBackup = DcConfig.selfstatus
     }
 
     override func viewWillDisappear(_ animated: Bool) {
         if displayNameBackup != displayNameCell.getText() || statusCellBackup != displayNameCell.getText() {
-            DCConfig.selfstatus = statusCell.getText()
-            DCConfig.displayname = displayNameCell.getText()
+            DcConfig.selfstatus = statusCell.getText()
+            DcConfig.displayname = displayNameCell.getText()
             dc_configure(mailboxPointer)
         }
     }

+ 6 - 6
deltachat-ios/Controller/GroupChatDetailViewController.swift

@@ -1,13 +1,13 @@
 import UIKit
 
 class GroupChatDetailViewController: UIViewController {
-    private var currentUser: DCContact? {
-        return groupMembers.filter { $0.email == DCConfig.addr }.first
+    private var currentUser: DcContact? {
+        return groupMembers.filter { $0.email == DcConfig.addr }.first
     }
 
     weak var coordinator: GroupChatDetailCoordinator?
 
-    fileprivate var chat: DCChat
+    fileprivate var chat: DcChat
 
     var chatDetailTable: UITableView = {
         let table = UITableView(frame: .zero, style: .grouped)
@@ -20,7 +20,7 @@ class GroupChatDetailViewController: UIViewController {
     }()
 
     init(chatId: Int) {
-        chat = DCChat(id: chatId)
+        chat = DcChat(id: chatId)
         super.init(nibName: nil, bundle: nil)
         setupSubviews()
     }
@@ -52,7 +52,7 @@ class GroupChatDetailViewController: UIViewController {
         UIBarButtonItem(title: String.localized("global_menu_edit_desktop"), style: .plain, target: self, action: #selector(editButtonPressed))
     }()
 
-    private var groupMembers: [DCContact] = []
+    private var groupMembers: [DcContact] = []
 
     private let staticCellCountMemberSection = 1 //
 
@@ -73,7 +73,7 @@ class GroupChatDetailViewController: UIViewController {
 
     private func updateGroupMembers() {
         let ids = chat.contactIds
-        groupMembers = ids.map { DCContact(id: $0) }
+        groupMembers = ids.map { DcContact(id: $0) }
         chatDetailTable.reloadData()
     }
 

+ 3 - 3
deltachat-ios/Controller/GroupMembersViewController.swift

@@ -39,9 +39,9 @@ class AddGroupMembersViewController: GroupMembersViewController {
         }
     }
 
-    private lazy var chat: DCChat? = {
+    private lazy var chat: DcChat? = {
         if let chatId = chatId {
-            return DCChat(id: chatId)
+            return DcChat(id: chatId)
         }
         return nil
     }()
@@ -133,7 +133,7 @@ class GroupMembersViewController: UITableViewController {
         let row = indexPath.row
         let contactRow = row
 
-        let contact = DCContact(id: contactIds[contactRow])
+        let contact = DcContact(id: contactIds[contactRow])
         cell.nameLabel.text = contact.name
         cell.emailLabel.text = contact.email
         cell.initialsLabel.text = Utils.getInitials(inputName: contact.name)

+ 1 - 1
deltachat-ios/Controller/GroupNameController.swift

@@ -68,7 +68,7 @@ class GroupNameController: UITableViewController {
         } else {
             let cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath)
             if let contactCell = cell as? ContactCell {
-                let contact = DCContact(id: groupContactIds[row])
+                let contact = DcContact(id: groupContactIds[row])
                 contactCell.nameLabel.text = contact.name
                 contactCell.emailLabel.text = contact.email
                 contactCell.initialsLabel.text = Utils.getInitials(inputName: contact.name)

+ 2 - 2
deltachat-ios/Controller/MessageInfoViewController.swift

@@ -2,9 +2,9 @@ import UIKit
 
 class MessageInfoViewController: UITableViewController {
     var dcContext: DcContext
-    var message: DCMessage
+    var message: DcMsg
 
-    init(dcContext: DcContext, message: DCMessage) {
+    init(dcContext: DcContext, message: DcMsg) {
         self.dcContext = dcContext
         self.message = message
         super.init(style: .grouped)

+ 2 - 2
deltachat-ios/Controller/NewChatViewController.swift

@@ -21,7 +21,7 @@ class NewChatViewController: UITableViewController {
 
     // contactWithSearchResults.indexesToHightLight empty by default
     var contacts: [ContactWithSearchResults] {
-        return contactIds.map { ContactWithSearchResults(contact: DCContact(id: $0), indexesToHighlight: []) }
+        return contactIds.map { ContactWithSearchResults(contact: DcContact(id: $0), indexesToHighlight: []) }
     }
 
     // used when seachbar is active
@@ -385,6 +385,6 @@ enum ContactDetail {
 }
 
 struct ContactWithSearchResults {
-    let contact: DCContact
+    let contact: DcContact
     let indexesToHighlight: [ContactHighlights]
 }

+ 7 - 7
deltachat-ios/Controller/NewProfileViewController.swift

@@ -59,16 +59,16 @@ class NewProfileViewController: UIViewController, QrCodeReaderDelegate {
         }))
     }
 
-    var contact: DCContact? {
+    var contact: DcContact? {
         // This is nil if we do not have an account setup yet
-        if !DCConfig.configured {
+        if !DcConfig.configured {
             return nil
         }
-        return DCContact(id: Int(DC_CONTACT_ID_SELF))
+        return DcContact(id: Int(DC_CONTACT_ID_SELF))
     }
 
     var fingerprint: String? {
-        if !DCConfig.configured {
+        if !DcConfig.configured {
             return nil
         }
         return dcContext.getSecurejoinQr(chatId: 0)
@@ -175,7 +175,7 @@ class NewProfileViewController: UIViewController, QrCodeReaderDelegate {
                     if let contactId = ui["contact_id"] as? Int {
                         self.progressAlert.message = String.localizedStringWithFormat(
                             String.localized("qrscan_x_verified_introduce_myself"),
-                            DCContact(id: contactId).nameNAddr)
+                            DcContact(id: contactId).nameNAddr)
                     }
                 }
             }
@@ -197,7 +197,7 @@ class NewProfileViewController: UIViewController, QrCodeReaderDelegate {
         }
 
         let qrParsed: DcLot = self.dcContext.checkQR(qrCode: code)
-        let nameAndAddress = DCContact(id: qrParsed.id).nameNAddr
+        let nameAndAddress = DcContact(id: qrParsed.id).nameNAddr
         let alert = UIAlertController(title: String.localizedStringWithFormat(String.localized("qrscan_ask_fingerprint_ask_oob"), nameAndAddress),
                                       message: nil,
                                       preferredStyle: .alert)
@@ -277,7 +277,7 @@ class NewProfileViewController: UIViewController, QrCodeReaderDelegate {
 
         let profileView = ProfileView(frame: CGRect())
         if let contact = self.contact {
-            let name = DCConfig.displayname ?? contact.name
+            let name = DcConfig.displayname ?? contact.name
             profileView.setBackgroundColor(bg)
             profileView.nameLabel.text = name
             profileView.emailLabel.text = contact.email

+ 5 - 5
deltachat-ios/Controller/ProfileViewController.swift

@@ -4,16 +4,16 @@ class ProfileViewController: UITableViewController {
     var dcContext: DcContext
     weak var coordinator: ProfileCoordinator?
 
-    var contact: DCContact? {
+    var contact: DcContact? {
         // This is nil if we do not have an account setup yet
-        if !DCConfig.configured {
+        if !DcConfig.configured {
             return nil
         }
-        return DCContact(id: Int(DC_CONTACT_ID_SELF))
+        return DcContact(id: Int(DC_CONTACT_ID_SELF))
     }
 
     var fingerprint: String? {
-        if !DCConfig.configured {
+        if !DcConfig.configured {
             return nil
         }
 
@@ -136,7 +136,7 @@ class ProfileViewController: UITableViewController {
         if section == 0 {
             let contactCell = ContactCell()
             if let contact = self.contact {
-                let name = DCConfig.displayname ?? contact.name
+                let name = DcConfig.displayname ?? contact.name
                 contactCell.backgroundColor = bg
                 contactCell.nameLabel.text = name
                 contactCell.emailLabel.text = contact.email

+ 16 - 16
deltachat-ios/Controller/SettingsController.swift

@@ -104,10 +104,10 @@ internal final class SettingsViewController: QuickTableViewController {
                 title: String.localized("user_details"),
                 rows: [
                     //FIXME: fix action callback!
-                    NavigationRow(text: String.localized("display_name"), detailText: .value1(DCConfig.displayname ?? ""), action: {
+                    NavigationRow(text: String.localized("display_name"), detailText: .value1(DcConfig.displayname ?? ""), action: {
                         [weak self] in self?.editNameAndStatus($0, option: SettingsEditOption.DISPLAYNAME)
                     }),
-                    NavigationRow(text: String.localized("status"), detailText: .value1(DCConfig.selfstatus ?? ""), action: {
+                    NavigationRow(text: String.localized("status"), detailText: .value1(DcConfig.selfstatus ?? ""), action: {
                         [weak self] in self?.editNameAndStatus($0, option: SettingsEditOption.STATUS)
                     }),
                     TapActionRow(text: String.localized("configure_my_account"), action: { [weak self] in self?.presentAccountSetup($0) }),
@@ -117,25 +117,25 @@ internal final class SettingsViewController: QuickTableViewController {
                 title: String.localized("flags"),
                 rows: [
                     SwitchRow(text: String.localized("autocrypt_prefer_e2ee"),
-                              switchValue: DCConfig.e2eeEnabled,
+                              switchValue: DcConfig.e2eeEnabled,
                               action: editCell(key: SVC.e2eeEnabled)),
                     SwitchRow(text: String.localized("pref_read_receipts"),
-                              switchValue: DCConfig.mdnsEnabled,
+                              switchValue: DcConfig.mdnsEnabled,
                               action: editCell(key: SVC.readReceipts)),
                     SwitchRow(text: String.localized("pref_watch_inbox_folder"),
-                              switchValue: DCConfig.inboxWatch,
+                              switchValue: DcConfig.inboxWatch,
                               action: editCell(key: SVC.watchMvBox)),
                     SwitchRow(text: String.localized("pref_watch_sent_folder"),
-                              switchValue: DCConfig.sentboxWatch,
+                              switchValue: DcConfig.sentboxWatch,
                               action: editCell(key: SVC.watchSentbox)),
                     SwitchRow(text: String.localized("pref_watch_mvbox_folder"),
-                              switchValue: DCConfig.mvboxWatch,
+                              switchValue: DcConfig.mvboxWatch,
                               action: editCell(key: SVC.watchMvBox)),
                     SwitchRow(text: String.localized("pref_auto_folder_moves"),
-                              switchValue: DCConfig.mvboxMove,
+                              switchValue: DcConfig.mvboxMove,
                               action: editCell(key: SVC.MvToMvbox)),
                     SwitchRow(text: String.localized("save_mime_headers"),
-                              switchValue: DCConfig.saveMimeHeaders,
+                              switchValue: DcConfig.saveMimeHeaders,
                               action: editCell(key: SVC.SaveMimeHeaders))
                 ]
             ),
@@ -161,19 +161,19 @@ internal final class SettingsViewController: QuickTableViewController {
                 let value = sender.switchValue
                 switch key {
                 case SVC.e2eeEnabled:
-                    DCConfig.e2eeEnabled = value
+                    DcConfig.e2eeEnabled = value
                 case SVC.readReceipts:
-                    DCConfig.mdnsEnabled = value
+                    DcConfig.mdnsEnabled = value
                 case SVC.watchInbox:
-                    DCConfig.inboxWatch = value
+                    DcConfig.inboxWatch = value
                 case SVC.watchSentbox:
-                    DCConfig.sentboxWatch = value
+                    DcConfig.sentboxWatch = value
                 case SVC.watchMvBox:
-                    DCConfig.mvboxWatch = value
+                    DcConfig.mvboxWatch = value
                 case SVC.MvToMvbox:
-                    DCConfig.mvboxMove = value
+                    DcConfig.mvboxMove = value
                 case SVC.SaveMimeHeaders:
-                    DCConfig.saveMimeHeaders = value
+                    DcConfig.saveMimeHeaders = value
                 default:
                     logger.info("unknown key", String(key))
                 }

+ 19 - 19
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -18,7 +18,7 @@ class AppCoordinator: NSObject, Coordinator {
         tabBarController.viewControllers = [contactListController, mailboxController, profileController, chatListController, settingsController]
         // put viewControllers here
         tabBarController.delegate = self
-        tabBarController.tabBar.tintColor = DCColors.primary
+        tabBarController.tabBar.tintColor = DcColors.primary
         tabBarController.tabBar.backgroundColor = .white
         return tabBarController
     }()
@@ -27,7 +27,7 @@ class AppCoordinator: NSObject, Coordinator {
 
     private lazy var contactListController: UIViewController = {
         let controller = ContactListController()
-        let nav = DCNavigationController(rootViewController: controller)
+        let nav = DcNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "contacts")
         nav.tabBarItem = UITabBarItem(title: String.localized("contacts_title"), image: settingsImage, tag: 0)
         let coordinator = ContactListCoordinator(dcContext: dcContext, navigationController: nav)
@@ -39,7 +39,7 @@ class AppCoordinator: NSObject, Coordinator {
     private lazy var mailboxController: UIViewController = {
         let controller = MailboxViewController(dcContext: dcContext, chatId: Int(DC_CHAT_ID_DEADDROP), title: String.localized("mailbox"))
         controller.disableWriting = true
-        let nav = DCNavigationController(rootViewController: controller)
+        let nav = DcNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "message")
         nav.tabBarItem = UITabBarItem(title: String.localized("mailbox"), image: settingsImage, tag: 1)
         let coordinator = MailboxCoordinator(dcContext: dcContext, navigationController: nav)
@@ -50,7 +50,7 @@ class AppCoordinator: NSObject, Coordinator {
 
     private lazy var profileController: UIViewController = {
         let controller = NewProfileViewController(dcContext: dcContext)
-        let nav = DCNavigationController(rootViewController: controller)
+        let nav = DcNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "report_card")
         nav.tabBarItem = UITabBarItem(title: String.localized("my_profile"), image: settingsImage, tag: 2)
         let coordinator = ProfileCoordinator(navigationController: nav)
@@ -61,7 +61,7 @@ class AppCoordinator: NSObject, Coordinator {
 
     private lazy var chatListController: UIViewController = {
         let controller = ChatListController()
-        let nav = DCNavigationController(rootViewController: controller)
+        let nav = DcNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "chat")
         nav.tabBarItem = UITabBarItem(title: String.localized("pref_chats"), image: settingsImage, tag: 3)
         let coordinator = ChatListCoordinator(dcContext: dcContext, navigationController: nav)
@@ -72,7 +72,7 @@ class AppCoordinator: NSObject, Coordinator {
 
     private lazy var settingsController: UIViewController = {
         let controller = SettingsViewController()
-        let nav = DCNavigationController(rootViewController: controller)
+        let nav = DcNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "settings")
         nav.tabBarItem = UITabBarItem(title: String.localized("menu_settings"), image: settingsImage, tag: 4)
         let coordinator = SettingsCoordinator(navigationController: nav)
@@ -112,7 +112,7 @@ class AppCoordinator: NSObject, Coordinator {
 
     func presentLoginController() {
         let accountSetupController = AccountSetupController()
-        let accountSetupNav = DCNavigationController(rootViewController: accountSetupController)
+        let accountSetupNav = DcNavigationController(rootViewController: accountSetupController)
         let coordinator = AccountSetupCoordinator(navigationController: accountSetupNav)
         childCoordinators.append(coordinator)
         accountSetupController.coordinator = coordinator
@@ -122,7 +122,7 @@ class AppCoordinator: NSObject, Coordinator {
 
 extension AppCoordinator: UITabBarControllerDelegate {
     func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
-        if let dcNav = viewController as? DCNavigationController {
+        if let dcNav = viewController as? DcNavigationController {
             switch tabBarController.selectedIndex {
             case 0, 3, 4:
                 dcNav.navigationBar.prefersLargeTitles = true
@@ -260,7 +260,7 @@ class SettingsCoordinator: Coordinator {
         let coordinator = AccountSetupCoordinator(navigationController: navigationController)
         childCoordinators.append(coordinator)
         accountSetupVC.coordinator = coordinator
-        let accountSetupNavigationController = DCNavigationController(rootViewController: accountSetupVC)
+        let accountSetupNavigationController = DcNavigationController(rootViewController: accountSetupVC)
         navigationController.present(accountSetupNavigationController, animated: true, completion: nil)
     }
 }
@@ -273,20 +273,20 @@ class AccountSetupCoordinator: Coordinator {
     }
 
     func showImapPortOptions() {
-        let currentMailPort = DCConfig.mailPort ?? DCConfig.configuredMailPort
+        let currentMailPort = DcConfig.mailPort ?? DcConfig.configuredMailPort
         let currentPort = Int(currentMailPort)
         let portSettingsController = PortSettingsController(sectionTitle: String.localized("login_imap_port"),
                                                             ports: [143, 993],
                                                             currentPort: currentPort)
         portSettingsController.onDismiss = {
             port in
-            DCConfig.mailPort = port
+            DcConfig.mailPort = port
         }
         navigationController.pushViewController(portSettingsController, animated: true)
     }
 
     func showImapSecurityOptions() {
-        let currentSecurityOption = DCConfig.getImapSecurity()
+        let currentSecurityOption = DcConfig.getImapSecurity()
         let convertedOption = SecurityConverter.convertHexToString(type: .IMAPSecurity, hex: currentSecurityOption)
         let securitySettingsController = SecuritySettingsController(title: String.localized("login_imap_security"),
                                                                     options: ["Automatic", "SSL / TLS", "STARTTLS", "OFF"],
@@ -295,27 +295,27 @@ class AccountSetupCoordinator: Coordinator {
             option in
             if let secValue = SecurityValue(rawValue: option) {
                 let value = SecurityConverter.convertValueToInt(type: .IMAPSecurity, value: secValue)
-                DCConfig.setImapSecurity(imapFlags: value)
+                DcConfig.setImapSecurity(imapFlags: value)
             }
         }
         navigationController.pushViewController(securitySettingsController, animated: true)
     }
 
     func showSmtpPortsOptions() {
-        let currentMailPort = DCConfig.sendPort ?? DCConfig.configuredSendPort
+        let currentMailPort = DcConfig.sendPort ?? DcConfig.configuredSendPort
         let currentPort = Int(currentMailPort)
         let portSettingsController = PortSettingsController(sectionTitle: String.localized("login_smtp_port"),
                                                             ports: [25, 465, 587],
                                                             currentPort: currentPort)
         portSettingsController.onDismiss = {
             port in
-            DCConfig.sendPort = port
+            DcConfig.sendPort = port
         }
         navigationController.pushViewController(portSettingsController, animated: true)
     }
 
     func showSmptpSecurityOptions() {
-        let currentSecurityOption = DCConfig.getSmtpSecurity()
+        let currentSecurityOption = DcConfig.getSmtpSecurity()
         let convertedOption = SecurityConverter.convertHexToString(type: .SMTPSecurity, hex: currentSecurityOption)
         let securitySettingsController = SecuritySettingsController(title: String.localized("login_imap_security"),
                                                                     options: ["Automatic", "SSL / TLS", "STARTTLS", "OFF"],
@@ -324,7 +324,7 @@ class AccountSetupCoordinator: Coordinator {
             option in
             if let secValue = SecurityValue(rawValue: option) {
                 let value = SecurityConverter.convertValueToInt(type: .SMTPSecurity, value: secValue)
-                DCConfig.setSmtpSecurity(smptpFlags: value)
+                DcConfig.setSmtpSecurity(smptpFlags: value)
             }
         }
         navigationController.pushViewController(securitySettingsController, animated: true)
@@ -403,7 +403,7 @@ class GroupChatDetailCoordinator: Coordinator {
         navigationController.pushViewController(groupMemberViewController, animated: true)
     }
 
-    func showGroupChatEdit(chat: DCChat) {
+    func showGroupChatEdit(chat: DcChat) {
         let editGroupViewController = EditGroupViewController(chat: chat)
         let coordinator = EditGroupCoordinator(navigationController: navigationController)
         childCoordinators.append(coordinator)
@@ -427,7 +427,7 @@ class ChatViewCoordinator: NSObject, Coordinator {
     }
 
     func showChatDetail(chatId: Int) {
-        let chat = DCChat(id: chatId)
+        let chat = DcChat(id: chatId)
         switch chat.chatType {
         case .SINGLE:
             if let contactId = chat.contactIds.first {

+ 472 - 620
deltachat-ios/DC/Wrapper.swift

@@ -2,101 +2,6 @@ import Foundation
 import MessageKit
 import UIKit
 
-enum MessageViewType: CustomStringConvertible {
-    case audio
-    case file
-    case gif
-    case image
-    case text
-    case video
-    case voice
-
-    var description: String {
-        switch self {
-        // Use Internationalization, as appropriate.
-        case .audio: return "Audio"
-        case .file: return "File"
-        case .gif: return "GIF"
-        case .image: return "Image"
-        case .text: return "Text"
-        case .video: return "Video"
-        case .voice: return "Voice"
-        }
-    }
-}
-
-class DCContact {
-    private var contactPointer: OpaquePointer
-
-    var nameNAddr: String {
-        return String(cString: dc_contact_get_name_n_addr(contactPointer))
-    }
-
-    var name: String {
-        return String(cString: dc_contact_get_name(contactPointer))
-    }
-
-    var email: String {
-        return String(cString: dc_contact_get_addr(contactPointer))
-    }
-
-    var isVerified: Bool {
-        return dc_contact_is_verified(contactPointer) > 0
-    }
-
-    var isBlocked: Bool {
-        return dc_contact_is_blocked(contactPointer) == 1
-    }
-
-    lazy var profileImage: UIImage? = { [unowned self] in
-        let file = dc_contact_get_profile_image(contactPointer)
-        if let cFile = file {
-            let filename = String(cString: cFile)
-            let path: URL = URL(fileURLWithPath: filename, isDirectory: false)
-            if path.isFileURL {
-                do {
-                    let data = try Data(contentsOf: path)
-                    return UIImage(data: data)
-                } catch {
-                    logger.warning("failed to load image: \(filename), \(error)")
-                    return nil
-                }
-            }
-            return nil
-        }
-
-        return nil
-    }()
-
-    var color: UIColor {
-        return UIColor(netHex: Int(dc_contact_get_color(contactPointer)))
-    }
-
-    var id: Int {
-        return Int(dc_contact_get_id(contactPointer))
-    }
-
-    init(id: Int) {
-        contactPointer = dc_get_contact(mailboxPointer, UInt32(id))
-    }
-
-    deinit {
-        dc_contact_unref(contactPointer)
-    }
-
-    func block() {
-        dc_block_contact(mailboxPointer, UInt32(id), 1)
-    }
-
-    func unblock() {
-        dc_block_contact(mailboxPointer, UInt32(id), 0)
-    }
-
-    func marknoticed() {
-        dc_marknoticed_contact(mailboxPointer, UInt32(id))
-    }
-}
-
 class DcContext {
     let contextPointer: OpaquePointer
 
@@ -108,7 +13,6 @@ class DcContext {
         dc_context_unref(contextPointer)
     }
 
-
     func getSecurejoinQr (chatId: Int) -> String? {
         if let cString = dc_get_securejoin_qr(self.contextPointer, UInt32(chatId)) {
             return String(cString: cString)
@@ -137,119 +41,435 @@ class DcContext {
 
 }
 
-class DcLot {
-    private var dcLotPointer: OpaquePointer
+class DcConfig {
+    private class func getOptStr(_ key: String) -> String? {
+        let p = dc_get_config(mailboxPointer, key)
 
-    init(_ dcLotPointer: OpaquePointer) {
-        self.dcLotPointer = dcLotPointer
+        if let pSafe = p {
+            let c = String(cString: pSafe)
+            if c.isEmpty {
+                return nil
+            }
+            return c
+        }
+
+        return nil
     }
 
-    deinit {
-        dc_lot_unref(dcLotPointer)
+    private class func setOptStr(_ key: String, _ value: String?) {
+        if let v = value {
+            dc_set_config(mailboxPointer, key, v)
+        } else {
+            dc_set_config(mailboxPointer, key, nil)
+        }
     }
 
-    var text1: String? {
-        guard let result = dc_lot_get_text1(dcLotPointer) else { return nil }
-        return String(cString: result)
+    private class func getBool(_ key: String) -> Bool {
+        return strToBool(getOptStr(key))
     }
 
-    var text1Meaning: Int {
-        return Int(dc_lot_get_text1_meaning(dcLotPointer))
+    private class func setBool(_ key: String, _ value: Bool) {
+        let vStr = value ? "1" : "0"
+        setOptStr(key, vStr)
     }
 
-    var text2: String? {
-        guard let result = dc_lot_get_text2(dcLotPointer) else { return nil }
-        return String(cString: result)
+    private class func getInt(_ key: String) -> Int {
+        let vStr = getOptStr(key)
+        if vStr == nil {
+            return 0
+        }
+        let vInt = Int(vStr!)
+        if vInt == nil {
+            return 0
+        }
+        return vInt!
     }
 
-    var timestamp: Int {
-        return Int(dc_lot_get_timestamp(dcLotPointer))
+    private class func setInt(_ key: String, _ value: Int) {
+        setOptStr(key, String(value))
     }
 
-    var state: Int {
-        return Int(dc_lot_get_state(dcLotPointer))
+    class var displayname: String? {
+        set { setOptStr("displayname", newValue) }
+        get { return getOptStr("displayname") }
     }
 
-    var id: Int {
-        return Int(dc_lot_get_id(dcLotPointer))
+    class var selfstatus: String? {
+        set { setOptStr("selfstatus", newValue) }
+        get { return getOptStr("selfstatus") }
     }
-}
 
-class DCMessage: MessageType {
-    private var messagePointer: OpaquePointer
+    class var selfavatar: String? {
+        set { setOptStr("selfavatar", newValue) }
+        get { return getOptStr("selfavatar") }
+    }
 
-    lazy var sender: SenderType = {
-        Sender(id: "\(fromContactId)", displayName: fromContact.name)
-    }()
+    class var addr: String? {
+        set { setOptStr("addr", newValue) }
+        get { return getOptStr("addr") }
+    }
 
-    lazy var sentDate: Date = {
-        Date(timeIntervalSince1970: Double(timestamp))
-    }()
+    class var mailServer: String? {
+        set { setOptStr("mail_server", newValue) }
+        get { return getOptStr("mail_server") }
+    }
 
-    let localDateFormatter: DateFormatter = {
-        let result = DateFormatter()
-        result.dateStyle = .none
-        result.timeStyle = .short
-        return result
-    }()
+    class var mailUser: String? {
+        set { setOptStr("mail_user", newValue) }
+        get { return getOptStr("mail_user") }
+    }
 
-    func formattedSentDate() -> String {
-        return localDateFormatter.string(from: sentDate)
+    class var mailPw: String? {
+        set { setOptStr("mail_pw", newValue) }
+        get { return getOptStr("mail_pw") }
     }
 
-    lazy var kind: MessageKind = {
-        if isInfo {
-            let text = NSAttributedString(string: self.text ?? "", attributes: [
-                NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 12),
-                NSAttributedString.Key.foregroundColor: UIColor.darkGray,
-            ])
-            return MessageKind.attributedText(text)
-        }
+    class var mailPort: String? {
+        set { setOptStr("mail_port", newValue) }
+        get { return getOptStr("mail_port") }
+    }
 
-        let text = self.text ?? ""
+    class var sendServer: String? {
+        set { setOptStr("send_server", newValue) }
+        get { return getOptStr("send_server") }
+    }
 
-        if self.viewtype == nil {
-            return MessageKind.text(text)
-        }
+    class var sendUser: String? {
+        set { setOptStr("send_user", newValue) }
+        get { return getOptStr("send_user") }
+    }
 
-        switch self.viewtype! {
-        case .image:
-            return MessageKind.photo(Media(image: image))
-        case .video:
-            return MessageKind.video(Media(url: fileURL))
-        default:
-            // TODO: custom views for audio, etc
-            if let filename = self.filename {
-                return MessageKind.text("File: \(self.filename ?? "") (\(self.filesize) bytes)")
+    class var sendPw: String? {
+        set { setOptStr("send_pw", newValue) }
+        get { return getOptStr("send_pw") }
+    }
+
+    class var sendPort: String? {
+        set { setOptStr("send_port", newValue) }
+        get { return getOptStr("send_port") }
+    }
+
+    private class var serverFlags: Int {
+        // IMAP-/SMTP-flags as a combination of DC_LP flags
+        set {
+            setOptStr("server_flags", "\(newValue)")
+        }
+        get {
+            if let str = getOptStr("server_flags") {
+                return Int(str) ?? 0
+            } else {
+                return 0
             }
-            return MessageKind.text(text)
         }
-    }()
-
-    var messageId: String {
-        return "\(id)"
     }
 
-    var id: Int {
-        return Int(dc_msg_get_id(messagePointer))
+    class func setImapSecurity(imapFlags flags: Int) {
+        var sf = serverFlags
+        sf = sf & ~0x700 // DC_LP_IMAP_SOCKET_FLAGS
+        sf = sf | flags
+        serverFlags = sf
     }
 
-    var fromContactId: Int {
-        return Int(dc_msg_get_from_id(messagePointer))
+    class func setSmtpSecurity(smptpFlags flags: Int) {
+        var sf = serverFlags
+        sf = sf & ~0x70000 // DC_LP_SMTP_SOCKET_FLAGS
+        sf = sf | flags
+        serverFlags = sf
     }
 
-    lazy var fromContact: DCContact = {
-        DCContact(id: fromContactId)
-    }()
+    class func setAuthFlags(flags: Int) {
+        var sf = serverFlags
+        sf = sf & ~0x6 // DC_LP_AUTH_FLAGS
+        sf = sf | flags
+        serverFlags = sf
+    }
 
-    var chatId: Int {
-        return Int(dc_msg_get_chat_id(messagePointer))
+    class func getImapSecurity() -> Int {
+        var sf = serverFlags
+        sf = sf & 0x700 // DC_LP_IMAP_SOCKET_FLAGS
+        return sf
     }
 
-    var text: String? {
-        guard let result = dc_msg_get_text(messagePointer) else { return nil }
+    class func getSmtpSecurity() -> Int {
+        var sf = serverFlags
+        sf = sf & 0x70000  // DC_LP_SMTP_SOCKET_FLAGS
+        return sf
+    }
 
-        return String(cString: result)
+    class func getAuthFlags() -> Int {
+        var sf = serverFlags
+        sf = sf & 0x6 // DC_LP_AUTH_FLAGS
+        serverFlags = sf
+        return sf
+    }
+
+    class var e2eeEnabled: Bool {
+        set { setBool("e2ee_enabled", newValue) }
+        get { return getBool("e2ee_enabled") }
+    }
+
+    class var mdnsEnabled: Bool {
+        set { setBool("mdns_enabled", newValue) }
+        get { return getBool("mdns_enabled") }
+    }
+
+    class var inboxWatch: Bool {
+        set { setBool("inbox_watch", newValue) }
+        get { return getBool("inbox_watch") }
+    }
+
+    class var sentboxWatch: Bool {
+        set { setBool("sentbox_watch", newValue) }
+        get { return getBool("sentbox_watch") }
+    }
+
+    class var mvboxWatch: Bool {
+        set { setBool("mvbox_watch", newValue) }
+        get { return getBool("mvbox_watch") }
+    }
+
+    class var mvboxMove: Bool {
+        set { setBool("mvbox_move", newValue) }
+        get { return getBool("mvbox_move") }
+    }
+
+    class var showEmails: Int {
+        // one of DC_SHOW_EMAILS_*
+        set { setInt("show_emails", newValue) }
+        get { return getInt("show_emails") }
+    }
+
+    class var saveMimeHeaders: Bool {
+        set { setBool("save_mime_headers", newValue) }
+        get { return getBool("save_mime_headers") }
+    }
+
+    class var configuredEmail: String {
+        return getOptStr("configured_addr") ?? ""
+    }
+
+    class var configuredMailServer: String {
+        return getOptStr("configured_mail_server") ?? ""
+    }
+
+    class var configuredMailUser: String {
+        return getOptStr("configured_mail_user") ?? ""
+    }
+
+    class var configuredMailPw: String {
+        return getOptStr("configured_mail_pw") ?? ""
+    }
+
+    class var configuredMailPort: String {
+        return getOptStr("configured_mail_port") ?? ""
+    }
+
+    class var configuredSendServer: String {
+        return getOptStr("configured_send_server") ?? ""
+    }
+
+    class var configuredSendUser: String {
+        return getOptStr("configured_send_user") ?? ""
+    }
+
+    class var configuredSendPw: String {
+        return getOptStr("configured_send_pw") ?? ""
+    }
+
+    class var configuredSendPort: String {
+        return getOptStr("configured_send_port") ?? ""
+    }
+
+    class var configuredServerFlags: String {
+        return getOptStr("configured_server_flags") ?? ""
+    }
+
+    class var configured: Bool {
+        return getBool("configured")
+    }
+}
+
+class DcChatlist {
+    private var chatListPointer: OpaquePointer
+
+    var length: Int {
+        return dc_chatlist_get_cnt(chatListPointer)
+        // return Int(chatListPointer.pointee.m_cnt)
+    }
+
+    // takes ownership of specified pointer
+    init(chatListPointer: OpaquePointer) {
+        self.chatListPointer = chatListPointer
+    }
+
+    func getChatId(index: Int) -> Int {
+        return Int(dc_chatlist_get_chat_id(chatListPointer, index))
+    }
+
+    func getMessageId(index: Int) -> Int {
+        return Int(dc_chatlist_get_msg_id(chatListPointer, index))
+    }
+
+    func summary(index: Int) -> DcLot {
+        guard let lotPointer = dc_chatlist_get_summary(self.chatListPointer, index, nil) else {
+            fatalError("lot-pointer was nil")
+        }
+        return DcLot(lotPointer)
+    }
+
+    deinit {
+        dc_chatlist_unref(chatListPointer)
+    }
+}
+
+class DcChat {
+    var chatPointer: OpaquePointer
+
+    var id: Int {
+        return Int(dc_chat_get_id(chatPointer))
+    }
+
+    var name: String {
+        return String(cString: dc_chat_get_name(chatPointer))
+    }
+
+    var type: Int {
+        return Int(dc_chat_get_type(chatPointer))
+    }
+
+    var chatType: ChatType {
+        return ChatType(rawValue: type) ?? ChatType.GROUP // group as fallback - shouldn't get here
+    }
+
+    var color: UIColor {
+        return UIColor(netHex: Int(dc_chat_get_color(chatPointer)))
+    }
+
+    var isVerified: Bool {
+        return dc_chat_is_verified(chatPointer) > 0
+    }
+
+    var contactIds: [Int] {
+        return Utils.copyAndFreeArray(inputArray: dc_get_chat_contacts(mailboxPointer, UInt32(id)))
+    }
+
+    lazy var profileImage: UIImage? = { [unowned self] in
+        let file = dc_chat_get_profile_image(chatPointer)
+        if let cFile = file {
+            let filename = String(cString: cFile)
+            let path: URL = URL(fileURLWithPath: filename, isDirectory: false)
+            if path.isFileURL {
+                do {
+                    let data = try Data(contentsOf: path)
+                    let image = UIImage(data: data)
+                    return image
+                } catch {
+                    logger.warning("failed to load image: \(filename), \(error)")
+                    return nil
+                }
+            }
+            return nil
+        }
+
+        return nil
+        }()
+
+    var subtitle: String? {
+        if let cString = dc_chat_get_subtitle(chatPointer) {
+            let str = String(cString: cString)
+            return str.isEmpty ? nil : str
+        }
+        return nil
+    }
+
+    init(id: Int) {
+        if let p = dc_get_chat(mailboxPointer, UInt32(id)) {
+            chatPointer = p
+        } else {
+            fatalError("Invalid chatID opened \(id)")
+        }
+    }
+
+    deinit {
+        dc_chat_unref(chatPointer)
+    }
+}
+
+class DcMsg: MessageType {
+    private var messagePointer: OpaquePointer
+
+    lazy var sender: SenderType = {
+        Sender(id: "\(fromContactId)", displayName: fromContact.name)
+    }()
+
+    lazy var sentDate: Date = {
+        Date(timeIntervalSince1970: Double(timestamp))
+    }()
+
+    let localDateFormatter: DateFormatter = {
+        let result = DateFormatter()
+        result.dateStyle = .none
+        result.timeStyle = .short
+        return result
+    }()
+
+    func formattedSentDate() -> String {
+        return localDateFormatter.string(from: sentDate)
+    }
+
+    lazy var kind: MessageKind = {
+        if isInfo {
+            let text = NSAttributedString(string: self.text ?? "", attributes: [
+                NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 12),
+                NSAttributedString.Key.foregroundColor: UIColor.darkGray,
+                ])
+            return MessageKind.attributedText(text)
+        }
+
+        let text = self.text ?? ""
+
+        if self.viewtype == nil {
+            return MessageKind.text(text)
+        }
+
+        switch self.viewtype! {
+        case .image:
+            return MessageKind.photo(Media(image: image))
+        case .video:
+            return MessageKind.video(Media(url: fileURL))
+        default:
+            // TODO: custom views for audio, etc
+            if let filename = self.filename {
+                return MessageKind.text("File: \(self.filename ?? "") (\(self.filesize) bytes)")
+            }
+            return MessageKind.text(text)
+        }
+    }()
+
+    var messageId: String {
+        return "\(id)"
+    }
+
+    var id: Int {
+        return Int(dc_msg_get_id(messagePointer))
+    }
+
+    var fromContactId: Int {
+        return Int(dc_msg_get_from_id(messagePointer))
+    }
+
+    lazy var fromContact: DcContact = {
+        DcContact(id: fromContactId)
+    }()
+
+    var chatId: Int {
+        return Int(dc_msg_get_chat_id(messagePointer))
+    }
+
+    var text: String? {
+        guard let result = dc_msg_get_text(messagePointer) else { return nil }
+
+        return String(cString: result)
     }
 
     var viewtype: MessageViewType? {
@@ -299,7 +519,7 @@ class DCMessage: MessageType {
         } else {
             return nil
         }
-    }()
+        }()
 
     var file: String? {
         if let cStr = dc_msg_get_file(messagePointer) {
@@ -386,9 +606,9 @@ class DCMessage: MessageType {
         return String(cString: result)
     }
 
-    func createChat() -> DCChat {
+    func createChat() -> DcChat {
         let chatId = dc_create_chat_by_msg_id(mailboxPointer, UInt32(id))
-        return DCChat(id: Int(chatId))
+        return DcChat(id: Int(chatId))
     }
 
     deinit {
@@ -396,53 +616,38 @@ class DCMessage: MessageType {
     }
 }
 
-enum ChatType: Int {
-    case SINGLE = 100
-    case GROUP = 120
-    case VERYFIEDGROUP = 130
-}
+class DcContact {
+    private var contactPointer: OpaquePointer
 
-class DCChat {
-    var chatPointer: OpaquePointer
-
-    var id: Int {
-        return Int(dc_chat_get_id(chatPointer))
-    }
+    var nameNAddr: String {
+        return String(cString: dc_contact_get_name_n_addr(contactPointer))
+    }
 
     var name: String {
-        return String(cString: dc_chat_get_name(chatPointer))
-    }
-
-    var type: Int {
-        return Int(dc_chat_get_type(chatPointer))
-    }
-
-    var chatType: ChatType {
-        return ChatType(rawValue: type) ?? ChatType.GROUP // group as fallback - shouldn't get here
+        return String(cString: dc_contact_get_name(contactPointer))
     }
 
-    var color: UIColor {
-        return UIColor(netHex: Int(dc_chat_get_color(chatPointer)))
+    var email: String {
+        return String(cString: dc_contact_get_addr(contactPointer))
     }
 
     var isVerified: Bool {
-        return dc_chat_is_verified(chatPointer) > 0
+        return dc_contact_is_verified(contactPointer) > 0
     }
 
-    var contactIds: [Int] {
-        return Utils.copyAndFreeArray(inputArray: dc_get_chat_contacts(mailboxPointer, UInt32(id)))
+    var isBlocked: Bool {
+        return dc_contact_is_blocked(contactPointer) == 1
     }
 
     lazy var profileImage: UIImage? = { [unowned self] in
-        let file = dc_chat_get_profile_image(chatPointer)
+        let file = dc_contact_get_profile_image(contactPointer)
         if let cFile = file {
             let filename = String(cString: cFile)
             let path: URL = URL(fileURLWithPath: filename, isDirectory: false)
             if path.isFileURL {
                 do {
                     let data = try Data(contentsOf: path)
-                    let image = UIImage(data: data)
-                    return image
+                    return UIImage(data: data)
                 } catch {
                     logger.warning("failed to load image: \(filename), \(error)")
                     return nil
@@ -454,462 +659,109 @@ class DCChat {
         return nil
     }()
 
-    var subtitle: String? {
-        if let cString = dc_chat_get_subtitle(chatPointer) {
-            let str = String(cString: cString)
-            return str.isEmpty ? nil : str
-        }
-        return nil
-    }
-
-    init(id: Int) {
-        if let p = dc_get_chat(mailboxPointer, UInt32(id)) {
-            chatPointer = p
-        } else {
-            fatalError("Invalid chatID opened \(id)")
-        }
-    }
-
-    deinit {
-        dc_chat_unref(chatPointer)
-    }
-}
-
-class DCChatList {
-    private var chatListPointer: OpaquePointer
-
-    var length: Int {
-        return dc_chatlist_get_cnt(chatListPointer)
-        // return Int(chatListPointer.pointee.m_cnt)
-    }
-
-    // takes ownership of specified pointer
-    init(chatListPointer: OpaquePointer) {
-        self.chatListPointer = chatListPointer
-    }
-
-    func getChatId(index: Int) -> Int {
-        return Int(dc_chatlist_get_chat_id(chatListPointer, index))
+    var color: UIColor {
+        return UIColor(netHex: Int(dc_contact_get_color(contactPointer)))
     }
 
-    func getMessageId(index: Int) -> Int {
-        return Int(dc_chatlist_get_msg_id(chatListPointer, index))
+    var id: Int {
+        return Int(dc_contact_get_id(contactPointer))
     }
 
-    func summary(index: Int) -> DcLot {
-        guard let lotPointer = dc_chatlist_get_summary(self.chatListPointer, index, nil) else {
-            fatalError("lot-pointer was nil")
-        }
-        return DcLot(lotPointer)
+    init(id: Int) {
+        contactPointer = dc_get_contact(mailboxPointer, UInt32(id))
     }
 
     deinit {
-        dc_chatlist_unref(chatListPointer)
-    }
-}
-
-func strToBool(_ value: String?) -> Bool {
-    if let vStr = value {
-        if let vInt = Int(vStr) {
-            return vInt == 1
-        }
-        return false
-    }
-
-    return false
-}
-
-class DCConfig {
-    private class func getOptStr(_ key: String) -> String? {
-        let p = dc_get_config(mailboxPointer, key)
-
-        if let pSafe = p {
-            let c = String(cString: pSafe)
-            if c.isEmpty {
-                return nil
-            }
-            return c
-        }
-
-        return nil
-    }
-
-    private class func setOptStr(_ key: String, _ value: String?) {
-        if let v = value {
-            dc_set_config(mailboxPointer, key, v)
-        } else {
-            dc_set_config(mailboxPointer, key, nil)
-        }
-    }
-
-    private class func getBool(_ key: String) -> Bool {
-        return strToBool(getOptStr(key))
-    }
-
-    private class func setBool(_ key: String, _ value: Bool) {
-        let vStr = value ? "1" : "0"
-        setOptStr(key, vStr)
-    }
-
-    private class func getInt(_ key: String) -> Int {
-        let vStr = getOptStr(key)
-        if vStr == nil {
-            return 0
-        }
-        let vInt = Int(vStr!)
-        if vInt == nil {
-            return 0
-        }
-        return vInt!
-    }
-
-    private class func setInt(_ key: String, _ value: Int) {
-        setOptStr(key, String(value))
-    }
-
-    /**
-     *  Address to display (always needed)
-     */
-    class var addr: String? {
-        set {
-            setOptStr("addr", newValue)
-        }
-        get {
-            return getOptStr("addr")
-        }
-    }
-
-    /**
-     *  IMAP-server, guessed if left out
-     */
-    class var mailServer: String? {
-        set {
-            setOptStr("mail_server", newValue)
-        }
-        get {
-            return getOptStr("mail_server")
-        }
-    }
-
-    /**
-     *  IMAP-username, guessed if left out
-     */
-    class var mailUser: String? {
-        set {
-            setOptStr("mail_user", newValue)
-        }
-        get {
-            return getOptStr("mail_user")
-        }
-    }
-
-    /**
-     *  IMAP-password (always needed)
-     */
-    class var mailPw: String? {
-        set {
-            setOptStr("mail_pw", newValue)
-        }
-        get {
-            return getOptStr("mail_pw")
-        }
-    }
-
-    /**
-     *  IMAP-port, guessed if left out
-     */
-    class var mailPort: String? {
-        set {
-            setOptStr("mail_port", newValue)
-        }
-        get {
-            return getOptStr("mail_port")
-        }
-    }
-
-    /**
-     *  SMTP-server, guessed if left out
-     */
-    class var sendServer: String? {
-        set {
-            setOptStr("send_server", newValue)
-        }
-        get {
-            return getOptStr("send_server")
-        }
-    }
-
-    /**
-     *  SMTP-user, guessed if left out
-     */
-    class var sendUser: String? {
-        set {
-            setOptStr("send_user", newValue)
-        }
-        get {
-            return getOptStr("send_user")
-        }
-    }
-
-    /**
-     *  SMTP-password, guessed if left out
-     */
-    class var sendPw: String? {
-        set {
-            setOptStr("send_pw", newValue)
-        }
-        get {
-            return getOptStr("send_pw")
-        }
-    }
-
-    /**
-     * SMTP-port, guessed if left out
-     */
-    class var sendPort: String? {
-        set {
-            setOptStr("send_port", newValue)
-        }
-        get {
-            return getOptStr("send_port")
-        }
-    }
-
-    /**
-     * IMAP-/SMTP-flags as a combination of DC_LP flags, guessed if left out
-     */
-
-    private class var serverFlags: Int {
-        set {
-            setOptStr("server_flags", "\(newValue)")
-        }
-        get {
-            if let str = getOptStr("server_flags") {
-                return Int(str) ?? 0
-            } else {
-                return 0
-            }
-        }
-    }
-
-    class func setImapSecurity(imapFlags flags: Int) {
-        var sf = serverFlags
-        sf = sf & ~0x700 // TODO: should be DC_LP_IMAP_SOCKET_FLAGS - could not be found
-        sf = sf | flags
-        serverFlags = sf
+        dc_contact_unref(contactPointer)
     }
 
-    class func setSmtpSecurity(smptpFlags flags: Int) {
-        var sf = serverFlags
-        sf = sf & ~0x70000 // TODO: should be DC_LP_SMTP_SOCKET_FLAGS - could not be found
-        sf = sf | flags
-        serverFlags = sf
+    func block() {
+        dc_block_contact(mailboxPointer, UInt32(id), 1)
     }
 
-    class func setAuthFlags(flags: Int) {
-        var sf = serverFlags
-        sf = sf & ~0x6 // TODO: should be DC_LP_AUTH_FLAGS - could not be found
-        sf = sf | flags
-        serverFlags = sf
+    func unblock() {
+        dc_block_contact(mailboxPointer, UInt32(id), 0)
     }
 
-    // returns one of DC_LP_IMAP_SOCKET_STARTTLS, DC_LP_IMAP_SOCKET_SSL,
-    class func getImapSecurity() -> Int {
-        var sf = serverFlags
-        sf = sf & 0x700
-        return sf
+    func marknoticed() {
+        dc_marknoticed_contact(mailboxPointer, UInt32(id))
     }
+}
 
-    // returns one of DC_LP_SMTP_SOCKET_STARTTLS, DC_LP_SMTP_SOCKET_SSL,
-    class func getSmtpSecurity() -> Int {
-        var sf = serverFlags
-        sf = sf & 0x70000
-        return sf
-    }
+class DcLot {
+    private var dcLotPointer: OpaquePointer
 
-    // returns on of DC_LP_AUTH_OAUTH2 or 0
-    class func getAuthFlags() -> Int {
-        var sf = serverFlags
-        sf = sf & 0x6
-        serverFlags = sf
-        return sf
+    init(_ dcLotPointer: OpaquePointer) {
+        self.dcLotPointer = dcLotPointer
     }
 
-    /**
-     * Own name to use when sending messages. MUAs are allowed to spread this way eg. using CC, defaults to empty
-     */
-    class var displayname: String? {
-        set {
-            setOptStr("displayname", newValue)
-        }
-        get {
-            return getOptStr("displayname")
-        }
+    deinit {
+        dc_lot_unref(dcLotPointer)
     }
 
-    /**
-     * Own status to display eg. in email footers, defaults to a standard text
-     */
-    class var selfstatus: String? {
-        set {
-            setOptStr("selfstatus", newValue)
-        }
-        get {
-            return getOptStr("selfstatus")
-        }
+    var text1: String? {
+        guard let result = dc_lot_get_text1(dcLotPointer) else { return nil }
+        return String(cString: result)
     }
 
-    /**
-     * File containing avatar. Will be copied to blob directory. NULL to remove the avatar. It is planned for future versions to send this image together with the next messages.
-     */
-    class var selfavatar: String? {
-        set {
-            setOptStr("selfavatar", newValue)
-        }
-        get {
-            return getOptStr("selfavatar")
-        }
+    var text1Meaning: Int {
+        return Int(dc_lot_get_text1_meaning(dcLotPointer))
     }
 
-    /**
-     * 0=no end-to-end-encryption, 1=prefer end-to-end-encryption (default)
-     */
-    class var e2eeEnabled: Bool {
-        set {
-            setBool("e2ee_enabled", newValue)
-        }
-        get {
-            return getBool("e2ee_enabled")
-        }
+    var text2: String? {
+        guard let result = dc_lot_get_text2(dcLotPointer) else { return nil }
+        return String(cString: result)
     }
 
-    /**
-     * 0=do not send or request read receipts, 1=send and request read receipts (default)
-     */
-    class var mdnsEnabled: Bool {
-        set {
-            setBool("mdns_enabled", newValue)
-        }
-        get {
-            return getBool("mdns_enabled")
-        }
+    var timestamp: Int {
+        return Int(dc_lot_get_timestamp(dcLotPointer))
     }
 
-    /**
-     * 1=watch INBOX-folder for changes (default), 0=do not watch the INBOX-folder
-     */
-    class var inboxWatch: Bool {
-        set {
-            setBool("inbox_watch", newValue)
-        }
-        get {
-            return getBool("inbox_watch")
-        }
+    var state: Int {
+        return Int(dc_lot_get_state(dcLotPointer))
     }
 
-    /**
-     * 1=watch Sent-folder for changes (default), 0=do not watch the Sent-folder
-     */
-    class var sentboxWatch: Bool {
-        set {
-            setBool("sentbox_watch", newValue)
-        }
-        get {
-            return getBool("sentbox_watch")
-        }
+    var id: Int {
+        return Int(dc_lot_get_id(dcLotPointer))
     }
+}
 
-    /**
-     * 1=watch DeltaChat-folder for changes (default), 0=do not watch the DeltaChat-folder
-     */
-    class var mvboxWatch: Bool {
-        set {
-            setBool("mvbox_watch", newValue)
-        }
-        get {
-            return getBool("mvbox_watch")
-        }
-    }
+enum ChatType: Int {
+    case SINGLE = 100
+    case GROUP = 120
+    case VERYFIEDGROUP = 130
+}
 
-    /**
-     * 1=heuristically detect chat-messages and move them to the DeltaChat-folder, 0=do not move chat-messages
-     */
-    class var mvboxMove: Bool {
-        set {
-            setBool("mvbox_move", newValue)
-        }
-        get {
-            return getBool("mvbox_move")
-        }
-    }
+enum MessageViewType: CustomStringConvertible {
+    case audio
+    case file
+    case gif
+    case image
+    case text
+    case video
+    case voice
 
-    /**
-     *  DC_SHOW_EMAILS_OFF (0)= show direct replies to chats only (default),
-     *  DC_SHOW_EMAILS_ACCEPTED_CONTACTS (1)= also show all mails of confirmed contacts,
-     *  DC_SHOW_EMAILS_ALL (2)= also show mails of unconfirmed contacts in the deaddrop.
-     */
-    class var showEmails: Bool {
-        set {
-            setBool("show_emails", newValue)
-        }
-        get {
-            return getBool("show_emails")
+    var description: String {
+        switch self {
+        // Use Internationalization, as appropriate.
+        case .audio: return "Audio"
+        case .file: return "File"
+        case .gif: return "GIF"
+        case .image: return "Image"
+        case .text: return "Text"
+        case .video: return "Video"
+        case .voice: return "Voice"
         }
     }
+}
 
-    /**
-     * 1=save mime headers and make dc_get_mime_headers() work for subsequent calls, 0=do not save mime headers (default)
-     */
-    class var saveMimeHeaders: Bool {
-        set {
-            setBool("save_mime_headers", newValue)
-        }
-        get {
-            return getBool("save_mime_headers")
+func strToBool(_ value: String?) -> Bool {
+    if let vStr = value {
+        if let vInt = Int(vStr) {
+            return vInt == 1
         }
+        return false
     }
 
-    class var configuredEmail: String {
-        return getOptStr("configured_addr") ?? ""
-    }
-
-    class var configuredMailServer: String {
-        return getOptStr("configured_mail_server") ?? ""
-    }
-
-    class var configuredMailUser: String {
-        return getOptStr("configured_mail_user") ?? ""
-    }
-
-    class var configuredMailPw: String {
-        return getOptStr("configured_mail_pw") ?? ""
-    }
-
-    class var configuredMailPort: String {
-        return getOptStr("configured_mail_port") ?? ""
-    }
-
-    class var configuredSendServer: String {
-        return getOptStr("configured_send_server") ?? ""
-    }
-
-    class var configuredSendUser: String {
-        return getOptStr("configured_send_user") ?? ""
-    }
-
-    class var configuredSendPw: String {
-        return getOptStr("configured_send_pw") ?? ""
-    }
-
-    class var configuredSendPort: String {
-        return getOptStr("configured_send_port") ?? ""
-    }
-
-    class var configuredServerFlags: String {
-        return getOptStr("configured_server_flags") ?? ""
-    }
-
-    class var configured: Bool {
-        return getBool("configured")
-    }
+    return false
 }

+ 1 - 1
deltachat-ios/DC/events.swift

@@ -110,7 +110,7 @@ public func callbackSwift(event: CInt, data1: CUnsignedLong, data2: CUnsignedLon
                     userInfo: userInfo)
 
             let content = UNMutableNotificationContent()
-            let msg = DCMessage(id: Int(data2))
+            let msg = DcMsg(id: Int(data2))
             content.title = msg.fromContact.name
             content.body = msg.summary(chars: 40) ?? ""
             content.badge = 1

+ 1 - 1
deltachat-ios/Helper/Colors.swift

@@ -1,6 +1,6 @@
 import UIKit
 
-struct DCColors {
+struct DcColors {
     static let primary = UIColor.systemBlue
     // static let accent =
 

+ 1 - 1
deltachat-ios/Helper/Extensions.swift

@@ -123,7 +123,7 @@ extension URLSession {
     }
 }
 
-extension DCContact {
+extension DcContact {
     func contains(searchText text: String) -> [ContactHighlights] {
         var nameIndexes = [Int]()
         var emailIndexes = [Int]()

+ 1 - 1
deltachat-ios/View/ContactCell.swift

@@ -152,7 +152,7 @@ class ContactCell: UITableViewCell {
         myStackView.addArrangedSubview(toplineStackView)
         myStackView.addArrangedSubview(bottomLineStackView)
 
-        imgView.tintColor = DCColors.primary
+        imgView.tintColor = DcColors.primary
 
         avatar.addSubview(imgView)
 

+ 1 - 1
deltachat-ios/View/ProfileView.swift

@@ -119,7 +119,7 @@ class ProfileView: UIView {
         myStackView.addArrangedSubview(toplineStackView)
         myStackView.addArrangedSubview(bottomLineStackView)
 
-        imgView.tintColor = DCColors.primary
+        imgView.tintColor = DcColors.primary
 
         avatar.addSubview(imgView)