Pārlūkot izejas kodu

implement more dc_accounts_* methods

cyberta 4 gadi atpakaļ
vecāks
revīzija
6e1d41a153
1 mainītis faili ar 69 papildinājumiem un 0 dzēšanām
  1. 69 0
      DcCore/DcCore/DC/Wrapper.swift

+ 69 - 0
DcCore/DcCore/DC/Wrapper.swift

@@ -30,10 +30,56 @@ public class DcAccounts {
         return Int(dc_accounts_migrate_account(accountsPointer, dbLocation))
     }
 
+    public func addAccount() -> Int {
+        return Int(dc_accounts_add_account(accountsPointer))
+    }
+
+    public func getAccount(id: Int) -> DcContext {
+        let contextPointer = dc_accounts_get_account(accountsPointer, UInt32(id))
+        return DcContext(contextPointer: contextPointer)
+    }
+
     public func getAll() -> [Int] {
         let cAccounts = dc_accounts_get_all(accountsPointer)
         return DcUtils.copyAndFreeArray(inputArray: cAccounts)
     }
+
+    public func maybeNetwork() {
+        dc_accounts_maybe_network(accountsPointer)
+    }
+
+    public func maybeStartIO() {
+        if getSelectedAccount().isConfigured() {
+            dc_accounts_start_io(accountsPointer)
+        }
+    }
+
+    public func stopIO() {
+        dc_accounts_stop_io(accountsPointer)
+    }
+
+    public func selectAccount(id: Int) -> Bool {
+        return dc_accounts_select_account(accountsPointer, UInt32(id)) == 1
+    }
+
+    public func getSelectedAccount() -> DcContext {
+        let cPtr = dc_accounts_get_selected_account(accountsPointer)
+        return DcContext(contextPointer: cPtr)
+    }
+
+    public func removeAccount(id: Int) -> Bool {
+        return dc_accounts_remove_account(accountsPointer, UInt32(id)) == 1
+    }
+
+    public func importAccount(filePath: String) -> Int {
+        return Int(dc_accounts_import_account(accountsPointer, filePath))
+    }
+
+    public func getEventEmitter() -> DcAccountsEventEmitter {
+        let eventEmitterPointer = dc_accounts_get_event_emitter(accountsPointer)
+        return DcAccountsEventEmitter(eventEmitterPointer: eventEmitterPointer)
+    }
+
 }
 
 public class DcContext {
@@ -46,6 +92,10 @@ public class DcContext {
 
     public init() {
     }
+
+    public init(contextPointer: OpaquePointer?) {
+        self.contextPointer = contextPointer
+    }
     
     deinit {
         if contextPointer == nil { return } // avoid a warning about a "careless call"
@@ -630,6 +680,25 @@ public class DcContext {
     }
 }
 
+
+public class DcAccountsEventEmitter {
+    private var eventEmitterPointer: OpaquePointer?
+
+    // takes ownership of specified pointer
+    public init(eventEmitterPointer: OpaquePointer?) {
+        self.eventEmitterPointer = eventEmitterPointer
+    }
+
+    public func getNextEvent() -> DcEvent? {
+        guard let eventPointer = dc_accounts_get_next_event(eventEmitterPointer) else { return nil }
+        return DcEvent(eventPointer: eventPointer)
+    }
+
+    deinit {
+        dc_accounts_event_emitter_unref(eventEmitterPointer)
+    }
+}
+
 public class DcEventEmitter {
     private var eventEmitterPointer: OpaquePointer?