private void OnVideoMailCountChanged(MWIEventArgs args) { if (ServiceManager.Instance.Dispatcher.Thread != Thread.CurrentThread) { ServiceManager.Instance.Dispatcher.BeginInvoke((Action)(() => this.OnVideoMailCountChanged(args))); return; } if (App.CurrentAccount != null) { if (args != null) App.CurrentAccount.VideoMailCount += args.MwiCount; UpdateVideomailCount(); ServiceManager.Instance.AccountService.Save(); } }
private void OnNotifyEventReceived(IntPtr lc, IntPtr eventPtr, string notified_event, IntPtr bodyPtr) { if (linphoneCore == IntPtr.Zero) return; if (bodyPtr != IntPtr.Zero) { IntPtr subTypePtr = LinphoneAPI.linphone_content_get_buffer(bodyPtr); if (subTypePtr != IntPtr.Zero) { var content = LinphoneAPI.PtrToStringUtf8(subTypePtr); var lines = content.Split(new[] {'\r', '\n'}); bool waiting = false; int unreadCount = 0; bool notify = false; foreach (var line in lines) { if (line.StartsWith("Messages-Waiting: ")) { waiting = line.Substring("Messages-Waiting: ".Length).ToLower() == "yes"; notify = true; } else if (line.StartsWith("Voicemail: ")) { try { int pos = line.IndexOf(@"/"); if (pos != -1) { var len = "Voicemail: ".Length; unreadCount = Convert.ToInt32(line.Substring(len, pos - len)); notify = true; } } catch (Exception) { } } } if (OnMWIReceivedEvent != null && notify) { var args = new MWIEventArgs(unreadCount, waiting); OnMWIReceivedEvent(args); } return; } } if (NotifyReceivedEvent != null) NotifyReceivedEvent(notified_event); }
private void OnVideoMailCountChanged(MWIEventArgs args) { if (ServiceManager.Instance.Dispatcher.Thread != Thread.CurrentThread) { ServiceManager.Instance.Dispatcher.BeginInvoke((Action)(() => this.OnVideoMailCountChanged(args))); return; } if (App.CurrentAccount != null) { bool showMWI = false; if (args != null) { App.CurrentAccount.VideoMailCount = args.MwiCount; showMWI = args.MessageWaiting; } UpdateVideomailCount(showMWI); ServiceManager.Instance.AccountService.Save(); } }