private void CallHistoryEventChanged(object sender, VATRP.Core.Events.VATRPCallEventArgs e) { if (ServiceManager.Instance.Dispatcher.Thread != System.Threading.Thread.CurrentThread) { ServiceManager.Instance.Dispatcher.BeginInvoke((Action)(() => this.CallHistoryEventChanged(sender, e))); return; } var callEvent = sender as VATRPCallEvent; switch (e.historyEventType) { case HistoryEventTypes.Add: AddNewCallEvent(callEvent, true); break; case HistoryEventTypes.Load: LoadCallEvents(); break; case HistoryEventTypes.Reset: Calls.Clear(); _unseenMissedCallsCount = 0; CallsListView.Refresh(); break; case HistoryEventTypes.Delete: RemoveCallEvent(callEvent); break; } }
public void ClearCallsItems() { if (manager.LinphoneService.LinphoneCore != IntPtr.Zero) { LinphoneAPI.linphone_core_clear_call_logs(manager.LinphoneService.LinphoneCore); if (OnCallHistoryEvent != null) { var eargs = new VATRPCallEventArgs(HistoryEventTypes.Reset); OnCallHistoryEvent(null, eargs); } } }
public void LoadLinphoneCallEvents() { if (manager.LinphoneService.LinphoneCore == IntPtr.Zero) return; AllCallsEvents.Clear(); isLoadingCalls = true; IntPtr callsListPtr = LinphoneAPI.linphone_core_get_call_logs(manager.LinphoneService.LinphoneCore); if (callsListPtr != IntPtr.Zero) { MSList curStruct; do { curStruct.next = IntPtr.Zero; curStruct.prev = IntPtr.Zero; curStruct.data = IntPtr.Zero; curStruct = (MSList) Marshal.PtrToStructure(callsListPtr, typeof (MSList)); if (curStruct.data != IntPtr.Zero) { var callevent = ParseLinphoneCallLog(curStruct.data); AllCallsEvents.Add(callevent); } callsListPtr = curStruct.next; } while (curStruct.next != IntPtr.Zero); } isLoadingCalls = false; if (OnCallHistoryEvent != null) { var eargs = new VATRPCallEventArgs(HistoryEventTypes.Load); OnCallHistoryEvent(null, eargs); } }
private void LinphoneCallEventAdded(IntPtr lc, IntPtr callPtr) { if (callPtr == IntPtr.Zero || lc == IntPtr.Zero) return; var callEvent = ParseLinphoneCallLog(callPtr); if (callEvent != null) { if (OnCallHistoryEvent != null) { var eargs = new VATRPCallEventArgs(HistoryEventTypes.Add); OnCallHistoryEvent(callEvent, eargs); } } }
public bool Stop() { if (!_isStarted) return true; if (OnCallHistoryEvent != null) { var eargs = new VATRPCallEventArgs(HistoryEventTypes.Reset); OnCallHistoryEvent(null, eargs); } AllCallsEvents.Clear(); if (manager.LinphoneService != null) manager.LinphoneService.OnLinphoneCallLogUpdatedEvent -= LinphoneCallEventAdded; if (ServiceStopped != null) ServiceStopped(this, EventArgs.Empty); _isStarted = false; return true; }
private void OnHistoryCallEvent(object o, VATRPCallEventArgs e) { if (this.Dispatcher.Thread != System.Threading.Thread.CurrentThread) { this.Dispatcher.BeginInvoke((Action)(() => this.OnHistoryCallEvent(o, e))); return; } var callEvent = o as VATRPCallEvent; _populatingCalls = true; switch (e.historyEventType) { case HistoryEventTypes.Add: if (callEvent != null) AddNewCallEvent(callEvent); break; case HistoryEventTypes.Load: this.AllCallsInfoLabel.Content = "Loading..."; this.MissedCallsInfoLabel.Content = "Loading..."; lstCallsBox.Visibility = Visibility.Collapsed; lstMissedCallsBox.Visibility = Visibility.Collapsed; LoadAllCalls(); PopulateCalls(CallsTab.SelectedIndex == 0); _populatingCalls = false; break; case HistoryEventTypes.Reset: CallsList.Clear(); MissedCallsList.Clear(); this.lstCallsBox.Visibility = Visibility.Collapsed; this.lstMissedCallsBox.Visibility = Visibility.Collapsed; this.AllCallsInfoLabel.Content = "Entry list is empty"; this.MissedCallsInfoLabel.Content = "Entry list is empty"; break; case HistoryEventTypes.Delete: if (callEvent != null) DeleteCallEvent(callEvent); break; } }