/// <summary> Метод завершения звонка </summary> public void HangupCall() { if (DataSourceCall.HangupCall(CurrentModelCall)) { OnCloseView(); } }
/// <summary> Пометить пропущенные звонки прочитанными </summary> public void SetModelCallHistoryReaded(ModelCallHistoryPeer modelCallHistoryPeer) { DataSourceCall.SetCallHistoryReaded(modelCallHistoryPeer); CurrentModelCallHistory.TotalMissed -= modelCallHistoryPeer.ModelCallStatisticsObj.NumberOfMissedCalls; modelCallHistoryPeer.ModelCallStatisticsObj.NumberOfMissedCalls = 0; }
/// <summary> Метод выключения микрофона </summary> public void MuteMicrophone() { Mute = !Mute; DataSourceCall.MuteMicrophone(Mute); OnEventViewModel("Mute"); }
/// <summary> Метод принятия звонка </summary> public void AcceptCall() { if (DataSourceCall.AcceptCall(CurrentModelCall)) { StartDurationTimer(); OnEventViewModel("ActiveCall"); } }
/// <summary> Конструктор </summary> public ViewModelCallHistory() { CurrentModelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail(); SortListModelCallHistoryPeer(); CallbackRouter.Instance.ListModelContactChanged += InstanceOnListModelContactChanged; CallbackRouter.Instance.ModelCallHistoryChanged += OnModelCallHistoryChanged; CallbackRouter.Instance.ListModelContactSubscriptionChanged += OnListModelContactSubscriptionChanged; }
/// <summary> Обработчик изменения контактов </summary> private void InstanceOnListModelContactChanged(List <ModelContact> listChangedModelContact, List <ModelContact> listDeletedModelContact) { var modelCallHistoryDetail = DataSourceCall.GetChangedModelCallHistoryDetail(_modelCallHistoryPeerObj); Action action = () => { ModelCallHistoryPeerObj.ListModelCallHistoryEntry = modelCallHistoryDetail.ListModelCallHistoryPeer.First().GetDeepCopy().ListModelCallHistoryEntry; }; CurrentDispatcher.BeginInvoke(action); }
/// <summary> Обработчик изменения истории вызовов </summary> private void OnModelCallHistoryChanged(object sender, ModelCallHistory modelCallHistory) { if (modelCallHistory.ListModelCallHistoryPeer.Any(obj => obj.ModelPeerObj.Id == _modelCallHistoryPeerObj.ModelPeerObj.Id)) { var modelCallHistoryDetail = DataSourceCall.GetChangedModelCallHistoryDetail(_modelCallHistoryPeerObj); Action action = () => { ModelCallHistoryPeerObj.ListModelCallHistoryEntry = modelCallHistoryDetail.ListModelCallHistoryPeer.First().GetDeepCopy().ListModelCallHistoryEntry; }; CurrentDispatcher.BeginInvoke(action); } }
/// <summary> Пометить все пропущенные звонки прочитанными </summary> public void SetModelCallHistoryReadedAll() { if (CurrentModelCallHistory.TotalMissed == 0) { return; } DataSourceCall.SetCallHistoryReadedAll(); foreach (var i in CurrentModelCallHistory.ListModelCallHistoryPeer) { i.ModelCallStatisticsObj.NumberOfMissedCalls = 0; } CurrentModelCallHistory.TotalMissed = 0; }
/// <summary> Конструктор </summary> public ViewModelCallActive() { CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged; CurrentModelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault(); if (CurrentModelCall == null) { OnCloseView(); } CommandHangupCall = new Command(obj => HangupCall()); CommandAcceptCall = new Command(obj => AcceptCall()); CommandMuteMicrophone = new Command(obj => MuteMicrophone()); ExistCall = true; }
/// <summary> Конструктор </summary> public ViewModelCallActive(ModelContact modelContact, string number) { CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged; if (DataSourceCall.StartOutgoingCallUrl(modelContact, number)) { CurrentModelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault(); } else { OnCloseView(); } CommandHangupCall = new Command(obj => HangupCall()); CommandMuteMicrophone = new Command(obj => MuteMicrophone()); ExistCall = true; }
/// <summary> Конструктор </summary> public ViewModelCallActive(ModelCall modelCall) { CallbackRouter.Instance.ModelCallChanged += OnModelCallChanged; if (modelCall != null) { CurrentModelCall = modelCall; } else { OnCloseView(); } CommandAcceptCall = new Command(obj => AcceptCall()); CommandHangupCall = new Command(obj => HangupCall()); Mute = DataSourceCall.CheckMuteMicrophone(); ExistCall = true; }
/// <summary> Обработчик изменения истории вызовов </summary> private void ChangeModelCallHistory(ModelCallHistory modelCallHistory) { var copyModelCallHistory = modelCallHistory.GetDeepCopy(); foreach (var i in copyModelCallHistory.ListModelCallHistoryPeer) { var modelCallHistoryPeer = _currentModelCallHistory.ListModelCallHistoryPeer.FirstOrDefault(obj => DataSourceCall.CompareModelCallHistoryPeerId(obj, i) == 0); if (modelCallHistoryPeer == null) { _currentModelCallHistory.ListModelCallHistoryPeer.Add(i); } else { modelCallHistoryPeer.ModelCallStatisticsObj = i.ModelCallStatisticsObj; modelCallHistoryPeer.ModelPeerObj = i.ModelPeerObj; modelCallHistoryPeer.ListModelCallHistoryEntry = i.ListModelCallHistoryEntry; } } SortListModelCallHistoryPeer(); var listMissedCount = CurrentModelCallHistory.ListModelCallHistoryPeer.Select(obj => obj.ModelCallStatisticsObj.NumberOfMissedCalls); if (listMissedCount.Any()) { var missedCount = 0; foreach (var i in listMissedCount) { missedCount += i; } CurrentModelCallHistory.TotalMissed = missedCount; } }
/// <summary> Закончить тоновый сигнал </summary> public void StopSoundSignal() { DataSourceCall.StopSoundSignal(); }
/// <summary> Обработчик изменения истории вызовов логики C++ </summary> private void LogicModelCallHistoryChangedHandler() { var modelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail(); OnModelCallHistoryChanged(modelCallHistory); }
/// <summary> Обработчик изменения состояния звонка внутри логики C++ </summary> private void LogicModelCallChangedHandler() { var modelCall = DataSourceCall.GetListActiveCall()?.FirstOrDefault(); OnModelCallChanged(modelCall); }
/// <summary> Перевести вызов </summary> public bool TransferCall(string number) { return(DataSourceCall.TransferCallToUrl(CurrentModelCall.Id, number)); }
/// <summary> Обработчик изменения контактов </summary> private void InstanceOnListModelContactChanged(List <ModelContact> listChangedModelContact, List <ModelContact> listDeletedModelContact) { CurrentModelCallHistory = DataSourceCall.GetModelCallHistoryAllDetail(); }
/// <summary> Начать тоновый сигнал </summary> public void StartSoundSignal(char charSignal) { DataSourceCall.StartSoundSignal(charSignal); }